mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2024-11-10 17:13:30 +08:00
feat: 登录增加社区软件许可协议同意选项 (#322)
This commit is contained in:
parent
0c5a5a6454
commit
8b058a873e
5 changed files with 37 additions and 0 deletions
|
@ -121,6 +121,9 @@ const message = {
|
|||
'Note: [Closing the security entrance] will make your panel login address directly exposed to the Internet, very dangerous, please exercise caution',
|
||||
codeInput: 'Please enter the 6-digit verification code of the MFA validator',
|
||||
title: 'Linux Server Management Panel',
|
||||
licenseHelper:
|
||||
'Agree to FIT2CLOUD « <a href="https://www.fit2cloud.com/legal/licenses.html" target="_blank">Community Software License Agreement</a> »',
|
||||
errorAgree: 'Please click to agree to the Community Software License Agreement',
|
||||
},
|
||||
rule: {
|
||||
username: 'Please enter a username',
|
||||
|
|
|
@ -125,6 +125,9 @@ const message = {
|
|||
codeInput: '请输入 MFA 验证器的 6 位验证码',
|
||||
mfaTitle: 'MFA认证',
|
||||
title: 'Linux 服务器运维管理面板',
|
||||
licenseHelper:
|
||||
'同意 FIT2CLOUD 飞致云 « <a href="https://www.fit2cloud.com/legal/licenses.html" target="_blank"> 社区软件许可协议</a> »',
|
||||
errorAgree: '请点击同意社区软件许可协议',
|
||||
},
|
||||
rule: {
|
||||
username: '请输入用户名',
|
||||
|
|
|
@ -20,6 +20,7 @@ export const GlobalStore = defineStore({
|
|||
footer: true,
|
||||
},
|
||||
isFullScreen: false,
|
||||
agreeLicense: false,
|
||||
}),
|
||||
getters: {},
|
||||
actions: {
|
||||
|
@ -45,6 +46,9 @@ export const GlobalStore = defineStore({
|
|||
setThemeConfig(themeConfig: ThemeConfigProp) {
|
||||
this.themeConfig = themeConfig;
|
||||
},
|
||||
setAgreeLicense(agree: boolean) {
|
||||
this.agreeLicense = agree;
|
||||
},
|
||||
},
|
||||
persist: piniaPersistConfig('GlobalState'),
|
||||
});
|
||||
|
|
|
@ -16,6 +16,7 @@ export interface GlobalState {
|
|||
// assemblySize: string; // small | default | large
|
||||
themeConfig: ThemeConfigProp;
|
||||
isFullScreen: boolean;
|
||||
agreeLicense: boolean;
|
||||
}
|
||||
|
||||
export interface MenuState {
|
||||
|
|
|
@ -157,6 +157,20 @@
|
|||
{{ $t('commons.button.login') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item prop="agreeLicense">
|
||||
<el-checkbox v-model="loginForm.agreeLicense">
|
||||
<template #default>
|
||||
<span v-html="$t('commons.login.licenseHelper')"></span>
|
||||
</template>
|
||||
</el-checkbox>
|
||||
<span
|
||||
v-if="errAgree && loginForm.agreeLicense === false"
|
||||
class="input-error"
|
||||
style="line-height: 14px"
|
||||
>
|
||||
{{ $t('commons.login.errorAgree') }}
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="demo">
|
||||
<span v-if="isDemo">
|
||||
|
@ -186,6 +200,7 @@ const errAuthInfo = ref(false);
|
|||
const errCaptcha = ref(false);
|
||||
const errMfaInfo = ref(false);
|
||||
const isDemo = ref(false);
|
||||
const errAgree = ref(false);
|
||||
|
||||
const isFirst = ref();
|
||||
|
||||
|
@ -212,6 +227,7 @@ const loginForm = reactive({
|
|||
captcha: '',
|
||||
captchaID: '',
|
||||
authMethod: '',
|
||||
agreeLicense: false,
|
||||
});
|
||||
const loginRules = reactive({
|
||||
name: [{ required: true, message: i18n.global.t('commons.rule.username'), trigger: 'blur' }],
|
||||
|
@ -259,6 +275,14 @@ const login = (formEl: FormInstance | undefined) => {
|
|||
captchaID: captcha.captchaID,
|
||||
authMethod: '',
|
||||
};
|
||||
if (requestLoginForm.captcha == '') {
|
||||
errCaptcha.value = true;
|
||||
return;
|
||||
}
|
||||
if (loginForm.agreeLicense == false) {
|
||||
errAgree.value = true;
|
||||
return;
|
||||
}
|
||||
const res = await loginApi(requestLoginForm);
|
||||
if (res.code === 406) {
|
||||
if (res.message === 'ErrCaptchaCode') {
|
||||
|
@ -280,6 +304,7 @@ const login = (formEl: FormInstance | undefined) => {
|
|||
return;
|
||||
}
|
||||
globalStore.setLogStatus(true);
|
||||
globalStore.setAgreeLicense(true);
|
||||
menuStore.setMenuList([]);
|
||||
MsgSuccess(i18n.global.t('commons.msg.loginSuccess'));
|
||||
router.push({ name: 'home' });
|
||||
|
@ -335,6 +360,7 @@ function checkPassword(rule: any, value: any, callback: any) {
|
|||
|
||||
onMounted(() => {
|
||||
document.title = globalStore.themeConfig.panelName;
|
||||
loginForm.agreeLicense = globalStore.agreeLicense;
|
||||
checkStatus();
|
||||
checkIsSystemDemo();
|
||||
document.onkeydown = (e: any) => {
|
||||
|
|
Loading…
Reference in a new issue