Ver código fonte

feat: 增加登录部分根据全局安全控制来设置是否加密,包括列表和按钮权限等

yanglzh 1 ano atrás
pai
commit
741eb816cc

+ 6 - 2
src/App.vue

@@ -26,9 +26,13 @@ export default defineComponent({
 	components: { LockScreen, Setings, CloseFull },
 	created() {
 		api.sysinfo().then((res: any) => {
+			// 安全开关是否开启 按钮权限,列表权限,rsa权限在开启安全权限下才使用
+			const isSecurityControlEnabled = res.isSecurityControlEnabled
 			localStorage.setItem('sysinfo', JSON.stringify(res));
-			sessionStorage.setItem('btnNoAuth', res.sysButtonSwitch ? '' : '1');
-			sessionStorage.setItem('colNoAuth', res.sysColumnSwitch ? '' : '1');
+			sessionStorage.setItem('btnNoAuth', (isSecurityControlEnabled && res.sysButtonSwitch) ? '' : '1');
+			sessionStorage.setItem('colNoAuth', (isSecurityControlEnabled && res.sysColumnSwitch) ? '' : '1');
+			sessionStorage.setItem('isSecurityControlEnabled', isSecurityControlEnabled ? '1' : '');
+			sessionStorage.setItem('isRsaEnabled', (isSecurityControlEnabled && res.isRsaEnabled) ? '1' : '');
 		});
 	},
 	setup() {

+ 0 - 9
src/utils/rsa-https.ts

@@ -37,15 +37,6 @@ async function setPrivateKey() {
 setPublicKey()
 // setPrivateKey()
 
-// setTimeout(() => {
-//   // encrypt('asdfasdf').then(res => {
-//   //   console.log(res)
-//   // })
-//   decrypt('uts03JfyTGh/l8ivwQX/n9a6UpaVpfGgLaelrPfyMMdbslJmj79UNnv30NqktM7E6LhOyp4Ebt+EoJ8ss1FPyMlKpxwPHCFIanaClyR/aTCzeQGxVH2kZKJuZu02vrX1m2qXjn0Z1aV43GV5bNB40qPHzUZsMzMBHOqCAvqYO2zZwGpmFRFRu/93CPgpxgbhsbH7dCwOqJt9I7DMx9KaiiJmnPlbDSI4HG/wP/J2L1GHnZPK9zq+ccHm7WUYeVhf2xVYvma+hSzLWSiuwT1n5vRMIUKwjlT66usKJkEVhIiLTPmR6KLqEmWN21a/p6Dus/MCkFlA5hAURBalDqlnMQ==').then(res => {
-//     console.log(res)
-//   })
-// }, 300)
-
 export function encrypt(str: string) {
   const enc = new TextEncoder()
   const data = enc.encode(str) // 这边将要加密的字符串转为utf-8的Uint8Array

+ 7 - 1
src/views/login/component/account.vue

@@ -117,7 +117,13 @@ export default defineComponent({
 				.validate(async (valid: boolean) => {
 					if (valid) {
 						state.loading.signIn = true;
-						const password = await encrypt(state.ruleForm.password)
+						let password: string
+						console.log(sessionStorage.isRsaEnabled)
+						if (sessionStorage.isRsaEnabled) {
+							password = await encrypt(state.ruleForm.password)
+						} else {
+							password = state.ruleForm.password
+						}
 						api.login
 							.login({
 								...state.ruleForm,

+ 9 - 2
src/views/login/component/changePwd.vue

@@ -52,8 +52,15 @@ const formRules = computed(() => ({
 async function onSubmit() {
 	await formRef.value.validate()
 
-	const oldUserPassword = await encrypt(ruleForm.oldUserPassword)
-	const userPassword = await encrypt(ruleForm.userPassword)
+	let oldUserPassword: string
+	let userPassword: string
+	if (sessionStorage.isRsaEnabled) {
+		oldUserPassword = await encrypt(ruleForm.oldUserPassword)
+		userPassword = await encrypt(ruleForm.userPassword)
+	} else {
+		oldUserPassword = ruleForm.oldUserPassword
+		userPassword = ruleForm.userPassword
+	}
 
 	api.login.editPassword({
 		userName: ruleForm.userName,

+ 8 - 1
src/views/system/manage/user/index.vue

@@ -272,7 +272,14 @@ export default defineComponent({
 						ElMessage.success('密码不能为空');
 						return;
 					}
-					const password = await encrypt(value) as string
+
+					let password: string
+					if (sessionStorage.isRsaEnabled) {
+						password = await encrypt(value)
+					} else {
+						password = value
+					}
+
 					api.user.resetPassword(row.id, password).then(() => {
 						ElMessage.success('修改成功,新密码是:' + value);
 					});

+ 31 - 22
src/views/system/safeConfig/index.vue

@@ -6,21 +6,27 @@
 					<el-descriptions title="安全控制"></el-descriptions>
 					<el-form-item label="是否启用安全控制" prop="security">
 						<el-radio-group v-model="form.security">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
+						</el-radio-group>
+					</el-form-item>
+					<el-form-item label="是否启用RSA" prop="rsaEnabled">
+						<el-radio-group v-model="form.rsaEnabled">
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-descriptions title="登录设置"></el-descriptions>
 					<el-form-item label="是否单一登录" prop="singleLogin">
 						<el-radio-group v-model="form.singleLogin">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="首次登录是否更改密码" prop="changePwdFirstLogin">
 						<el-radio-group v-model="form.changePwdFirstLogin">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="TOKEN过期时间" prop="expiryDate">
@@ -38,8 +44,8 @@
 					</el-form-item>
 					<el-form-item label="密码更换周期开关" prop="changePeriodSwitch">
 						<el-radio-group v-model="form.changePeriodSwitch">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="密码更换周期" prop="changePeriod">
@@ -50,26 +56,26 @@
 					<el-descriptions title="密码策略设置"></el-descriptions>
 					<el-form-item label="是否包含大写字母" prop="uppercase">
 						<el-radio-group v-model="form.uppercase">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="是否包含小写字母" prop="lowercase">
 						<el-radio-group v-model="form.lowercase">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="是否包含数字" prop="digit">
 						<el-radio-group v-model="form.digit">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="是否包含复杂字符" prop="complexity">
 						<el-radio-group v-model="form.complexity">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="密码长度" prop="minimum">
@@ -78,20 +84,20 @@
 					<el-descriptions title="权限设置"></el-descriptions>
 					<el-form-item label="按钮开关" prop="button">
 						<el-radio-group v-model="form.button">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="列表开关" prop="column">
 						<el-radio-group v-model="form.column">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item label="API开关" prop="api">
 						<el-radio-group v-model="form.api">
-							<el-radio label="0">否</el-radio>
-							<el-radio label="1">是</el-radio>
+							<el-radio label="1">启用</el-radio>
+							<el-radio label="0">禁用</el-radio>
 						</el-radio-group>
 					</el-form-item>
 					<el-form-item>
@@ -128,6 +134,7 @@ const form = reactive({
 	security: '',
 	changePeriodSwitch: '',
 	changePwdFirstLogin: '',
+	rsaEnabled: '',
 })
 
 // 是否包含大写字母
@@ -161,6 +168,7 @@ api.basicConfig.getDetails({ types: 1 }).then((res: any) => {
 	form.column = emailConfigMap['sys.column.switch']?.configValue
 	form.api = emailConfigMap['sys.api.switch']?.configValue
 	form.security = emailConfigMap['sys.is.security.control.enabled']?.configValue
+	form.rsaEnabled = emailConfigMap['sys.is.rsa.enabled']?.configValue
 });
 
 function saveEmailConfig() {
@@ -180,6 +188,7 @@ function saveEmailConfig() {
 	emailConfigMap['sys.column.switch'] && (emailConfigMap['sys.column.switch'].configValue = form.column)
 	emailConfigMap['sys.api.switch'] && (emailConfigMap['sys.api.switch'].configValue = form.api)
 	emailConfigMap['sys.is.security.control.enabled'] && (emailConfigMap['sys.is.security.control.enabled'].configValue = form.security)
+	emailConfigMap['sys.is.rsa.enabled'] && (emailConfigMap['sys.is.rsa.enabled'].configValue = form.rsaEnabled)
 	api.basicConfig.setDetails({ ConfigInfo: Object.values(emailConfigMap) }).then(() => {
 		ElMessage.success('操作成功');
 	});