Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions apps/users/serializers/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ def check_verify_code_attempts(email: str, type_code: str, submitted_code: str)

class UserProfileResponse(serializers.ModelSerializer):
is_edit_password = serializers.BooleanField(required=True, label=_("Is Edit Password"))
permissions = serializers.ListField(required=True, label=_("permissions"))
permissions = serializers.DictField(child=serializers.CharField(), required=True, label=_("permissions"))

class Meta:
model = User
Expand Down Expand Up @@ -273,7 +273,7 @@ def profile(user: User, auth: Auth):
"email": user.email,
"source": user.source,
"role": list(auth.roles),
"permissions": auth.permissions,
"permissions": {k: format(v, "x") for k, v in auth.permissions.items()},
"is_edit_password": _is_default_password(CONFIG.get("DEFAULT_PASSWORD", "MaxKB@123.."), user.password)
if user.source == "LOCAL"
else False,
Expand Down
4 changes: 2 additions & 2 deletions ui/src/api/admin/auth/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ export interface CurrentUserInfo {
is_edit_password?: boolean
language?: string
nick_name: string
/** 权限位图:key 为「组(+工作空间+资源)」,value 为该组内操作授权位的按位或。 */
permissions: Record<string, number>
/** 权限位图:key 为「组(+工作空间+资源)」,value 为该组内操作授权位按位或的十六进制字符串(不带 0x 前缀,避免超过 2^53 丢精度)。 */
permissions: Record<string, string>
role: string[]
role_name?: string[]
source?: string
Expand Down
2 changes: 1 addition & 1 deletion ui/src/stores/admin/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export const useUserStore = defineStore('user', {
const source = state.userInfo?.permissions ?? {}
const result = new Map<string, bigint>()
for (const [key, value] of Object.entries(source)) {
result.set(key, BigInt(value ?? 0))
result.set(key, value ? BigInt(`0x${value}`) : 0n)
}
return result
},
Expand Down
Loading