Make login page use custom favicon (#3484)

<!--  Thanks for sending a pull request!  Here are some tips for you:
1. 如果这是你的第一次,请阅读我们的贡献指南:<https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>。
1. If this is your first time, please read our contributor guidelines: <https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>.
2. 请根据你解决问题的类型为 Pull Request 添加合适的标签。
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request.
3. 请确保你已经添加并运行了适当的测试。
3. Ensure you have added or ran the appropriate tests for your PR.
-->

#### What type of PR is this?
/kind improvement
/area console
/area core
<!--
添加其中一个类别:
Add one of the following kinds:

/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind improvement

适当添加其中一个或多个类别(可选):
Optionally add one or more of the following kinds if applicable:

/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->

#### What this PR does / why we need it:
console 端登陆页使用自定义favicon
#### Which issue(s) this PR fixes:

<!--
PR 合并时自动关闭 issue。
Automatically closes linked issue when PR is merged.

用法:`Fixes #<issue 号>`,或者 `Fixes (粘贴 issue 完整链接)`
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
Fixes https://github.com/halo-dev/halo/issues/3285

#### Special notes for your reviewer:
在`/actuator/globalinfo`暴露favicon信息,异步获取favicon信息,未获取到数据时浏览器短暂使用默认的`/console/favicon.ico`。
#### Does this PR introduce a user-facing change?

<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->

```release-note
console 端登陆页使用自定义favicon
```
pull/3498/head
longjuan 2023-03-09 16:18:12 +08:00 committed by GitHub
parent d192b8c956
commit 0384ed7df5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 7 deletions

View File

@ -1,10 +1,11 @@
<script lang="ts" setup>
import { RouterView, useRoute } from "vue-router";
import { computed, watch } from "vue";
import { computed, watch, ref } from "vue";
import { useTitle } from "@vueuse/core";
import { useFavicon } from "@vueuse/core";
import { useSystemConfigMapStore } from "./stores/system-configmap";
import { storeToRefs } from "pinia";
import axios from "axios";
const { configMap } = storeToRefs(useSystemConfigMapStore());
@ -26,16 +27,31 @@ watch(
// Favicon
const defaultFavicon = "/console/favicon.ico";
const globalInfoFavicon = ref("");
(async () => {
const { data } = await axios.get(
`${import.meta.env.VITE_API_URL}/actuator/globalinfo`,
{
withCredentials: true,
}
);
if (data?.favicon) {
globalInfoFavicon.value = data.favicon;
}
})();
const favicon = computed(() => {
if (!configMap?.value?.data?.["basic"]) {
return defaultFavicon;
if (configMap?.value?.data?.["basic"]) {
const basic = JSON.parse(configMap.value.data["basic"]);
if (basic.favicon) {
return basic.favicon;
}
}
const basic = JSON.parse(configMap.value.data["basic"]);
if (basic.favicon) {
return basic.favicon;
if (globalInfoFavicon.value) {
return globalInfoFavicon.value;
}
return defaultFavicon;

View File

@ -12,6 +12,7 @@ import run.halo.app.extension.ConfigMap;
import run.halo.app.infra.ExternalUrlSupplier;
import run.halo.app.infra.SystemConfigurableEnvironmentFetcher;
import run.halo.app.infra.SystemSetting;
import run.halo.app.infra.SystemSetting.Basic;
import run.halo.app.infra.SystemSetting.Comment;
import run.halo.app.infra.SystemSetting.User;
@ -40,6 +41,7 @@ public class GlobalInfoEndpoint {
.ifPresent(configMap -> {
handleCommentSetting(info, configMap);
handleUserSetting(info, configMap);
handleBasicSetting(info, configMap);
}));
return info;
@ -60,6 +62,8 @@ public class GlobalInfoEndpoint {
private boolean allowRegistration;
private String favicon;
}
private void handleCommentSetting(GlobalInfo info, ConfigMap configMap) {
@ -84,4 +88,11 @@ public class GlobalInfoEndpoint {
}
}
private void handleBasicSetting(GlobalInfo info, ConfigMap configMap) {
var basic = SystemSetting.get(configMap, Basic.GROUP, Basic.class);
if (basic != null) {
info.setFavicon(basic.getFavicon());
}
}
}