diff --git a/apps/users/views/user.py b/apps/users/views/user.py index 2a50cc7fa..c75420443 100644 --- a/apps/users/views/user.py +++ b/apps/users/views/user.py @@ -182,6 +182,9 @@ class UserManage(APIView): operation_id=_("Get default password"), # type: ignore tags=[_("User Management")], # type: ignore responses=UserPasswordResponse.get_response()) + @has_permissions(PermissionConstants.USER_CREATE, PermissionConstants.CHAT_USER_CREATE, + PermissionConstants.WORKSPACE_CHAT_USER_CREATE, RoleConstants.ADMIN, + RoleConstants.WORKSPACE_MANAGE) def get(self, request: Request): return result.success(data={'password': default_password}) diff --git a/ui/src/stores/modules/user.ts b/ui/src/stores/modules/user.ts index 3d261225a..23b02c467 100644 --- a/ui/src/stores/modules/user.ts +++ b/ui/src/stores/modules/user.ts @@ -1,13 +1,13 @@ -import { defineStore } from 'pinia' -import { type Ref } from 'vue' -import type { User } from '@/api/type/user' +import {defineStore} from 'pinia' +import {type Ref} from 'vue' +import type {User} from '@/api/type/user' import UserApi from '@/api/user/user' import LoginApi from '@/api/user/login' -import { useLocalStorage } from '@vueuse/core' +import {useLocalStorage} from '@vueuse/core' -import { localeConfigKey, getBrowserLang } from '@/locales/index' +import {localeConfigKey, getBrowserLang} from '@/locales/index' import useThemeStore from './theme' -import { defaultPlatformSetting } from '@/utils/theme' +import {defaultPlatformSetting} from '@/utils/theme' import useLoginStore from './login' export interface userStateTypes { @@ -73,6 +73,9 @@ const useUserStore = defineStore('user', { } }, + is_admin() { + return this.userInfo?.role.includes('ADMIN') + }, showXpack() { return this.edition != 'CE' }, @@ -91,7 +94,7 @@ const useUserStore = defineStore('user', { isEE() { return this.edition == 'EE' && this.license_is_valid }, - getEditionName() { + getEditionName() {画 return this.edition }, async profile(loading?: Ref) { @@ -100,7 +103,7 @@ const useUserStore = defineStore('user', { const workspace_list = ok.data.workspace_list && ok.data.workspace_list.length > 0 ? ok.data.workspace_list - : [{ id: 'default', name: 'default' }] + : [{id: 'default', name: 'default'}] const workspace_id = this.getWorkspaceId() if (!workspace_id || !workspace_list.some((w) => w.id == workspace_id)) { this.setWorkspaceId(workspace_list[0].id) @@ -140,7 +143,7 @@ const useUserStore = defineStore('user', { }, async postUserLanguage(lang: string, loading?: Ref) { return new Promise((resolve, reject) => { - LoginApi.postLanguage({ language: lang }, loading) + LoginApi.postLanguage({language: lang}, loading) .then(async (ok) => { useLocalStorage(localeConfigKey, 'en-US').value = lang window.location.reload() diff --git a/ui/src/views/system/role/index.ts b/ui/src/views/system/role/index.ts index b6cca78ba..22a3587ec 100644 --- a/ui/src/views/system/role/index.ts +++ b/ui/src/views/system/role/index.ts @@ -1,8 +1,14 @@ -import { RoleTypeEnum } from '@/enums/system' -import { t } from '@/locales' +import {RoleTypeEnum} from '@/enums/system' +import {t} from '@/locales' +import useStore from '@/stores' +const {user} = useStore() export const roleTypeMap: Record = { - [RoleTypeEnum.ADMIN]: t('views.role.systemAdmin'), + ...(user.is_admin() + ? { + [RoleTypeEnum.ADMIN]: t('views.role.systemAdmin'), + } + : {}), [RoleTypeEnum.USER]: t('views.role.user'), - [RoleTypeEnum.WORKSPACE_MANAGE]: t('views.role.workspaceAdmin') -} \ No newline at end of file + [RoleTypeEnum.WORKSPACE_MANAGE]: t('views.role.workspaceAdmin'), +};