perf: Enhance MFA settings and display

This commit is contained in:
wangruidong
2024-11-19 17:01:42 +08:00
committed by Bryan
parent 7a138388b2
commit 35e2273603
3 changed files with 47 additions and 8 deletions

View File

@@ -9,6 +9,7 @@ import rules from '@/components/Form/DataForm/rules'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { Select2 } from '@/components' import { Select2 } from '@/components'
import store from '@/store' import store from '@/store'
import { MFASystemSetting, MFALevel } from '../const'
export default { export default {
components: { components: {
@@ -44,10 +45,7 @@ export default {
} }
}, },
mfa_level: { mfa_level: {
disabled: false, disabled: false
tips: {
2: this.$t('forceEnableMFAHelpText')
}
}, },
email: { email: {
rules: [ rules: [
@@ -176,6 +174,7 @@ export default {
if (obj?.id) { if (obj?.id) {
obj.org_roles = obj.org_roles?.map(({ id }) => id) obj.org_roles = obj.org_roles?.map(({ id }) => id)
obj.system_roles = obj.system_roles?.map(({ id }) => id) obj.system_roles = obj.system_roles?.map(({ id }) => id)
obj.mfa_level.value = this.initial.mfa_level || obj.mfa_level.value
} }
return obj return obj
}, },
@@ -193,6 +192,9 @@ export default {
if (value.source !== 'local') { if (value.source !== 'local') {
delete value.need_update_password delete value.need_update_password
} }
if ([MFALevel.allUsers, MFALevel.onlyAdminUsers].indexOf(value.mfa_level) > -1) {
delete value.mfa_level
}
return value return value
} }
} }
@@ -231,11 +233,26 @@ export default {
this.initial.org_roles = roles.filter(role => role.name === 'OrgUser').map(role => role.id) this.initial.org_roles = roles.filter(role => role.name === 'OrgUser').map(role => role.id)
}, },
disableMFAFieldIfNeed(user) { disableMFAFieldIfNeed(user) {
let options = null
let mfa_level = null
// SECURITY_MFA_AUTH 0 不开启 1 全局开启 2 管理员开启 // SECURITY_MFA_AUTH 0 不开启 1 全局开启 2 管理员开启
const securityMFAAuth = store.getters.publicSettings['SECURITY_MFA_AUTH']
const adminUserIsNeed = (user?.is_superuser || user?.is_org_admin) && this.$route.meta.action === 'update' && const adminUserIsNeed = (user?.is_superuser || user?.is_org_admin) && this.$route.meta.action === 'update' &&
store.getters.publicSettings['SECURITY_MFA_AUTH'] === 2 securityMFAAuth === MFASystemSetting.onlyAdminUsers
if (store.getters.publicSettings['SECURITY_MFA_AUTH'] === 1 || adminUserIsNeed) { if (securityMFAAuth === MFASystemSetting.allUsers) {
this.fieldsMeta['mfa_level'].disabled = true options = [{ 'value': MFALevel.allUsers, 'label': this.$t('MFAAllUsers') }]
mfa_level = MFALevel.allUsers
}
if (securityMFAAuth === MFASystemSetting.onlyAdminUsers && adminUserIsNeed) {
options = [{
'value': MFALevel.onlyAdminUsers,
'label': this.$t('MFAOnlyAdminUsers')
}]
mfa_level = MFALevel.onlyAdminUsers
}
if (mfa_level !== null && options !== null) {
this.fieldsMeta['mfa_level'].options = options
this.initial.mfa_level = mfa_level
} }
} }
} }

View File

@@ -23,6 +23,8 @@ import { createSourceIdCache } from '@/api/common'
import { getDayFuture } from '@/utils/time' import { getDayFuture } from '@/utils/time'
import InviteUsersDialog from './components/InviteUsersDialog' import InviteUsersDialog from './components/InviteUsersDialog'
import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter.vue' import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter.vue'
import store from '@/store'
import { MFASystemSetting } from '../const'
export default { export default {
components: { components: {
@@ -65,7 +67,17 @@ export default {
} }
}, },
mfa_level: { mfa_level: {
width: '130px' width: '130px',
formatter: (row) => {
const securityMFAAuth = store.getters.publicSettings['SECURITY_MFA_AUTH']
if (securityMFAAuth === MFASystemSetting.allUsers) {
return this.$t('MFAAllUsers')
} else if (securityMFAAuth === MFASystemSetting.onlyAdminUsers && (row?.is_superuser || row?.is_org_admin)) {
return this.$t('MFAOnlyAdminUsers')
} else {
return row['mfa_level'].label
}
}
}, },
source: { source: {
width: '120px', width: '120px',

View File

@@ -100,3 +100,13 @@ export const userJSONSelectMeta = (vm, withoutOrgRole = false) => {
} }
} }
} }
export const MFALevel = {
allUsers: 3,
onlyAdminUsers: 4
}
export const MFASystemSetting = {
notEnable: 0,
allUsers: 1,
onlyAdminUsers: 2
}