릴리스: v1.4.38 최고 관리자 보호 및 프리뷰 셸 정리
This commit is contained in:
@@ -38,6 +38,29 @@ export function useAdminUsers({
|
||||
return !modalTargetUser.value.isPrimaryAdmin
|
||||
})
|
||||
|
||||
function canManageUser(user) {
|
||||
if (!user?.isPrimaryAdmin) return true
|
||||
return !!auth.user?.isPrimaryAdmin
|
||||
}
|
||||
|
||||
function canEditUserAvatar(user) {
|
||||
return canManageUser(user)
|
||||
}
|
||||
|
||||
function canEditUserInfo(user) {
|
||||
return canManageUser(user)
|
||||
}
|
||||
|
||||
function canResetUserPassword(user) {
|
||||
return canManageUser(user)
|
||||
}
|
||||
|
||||
function canDeleteUser(user) {
|
||||
if (!canManageUser(user)) return false
|
||||
if (user?.isAdmin && !auth.user?.isPrimaryAdmin) return false
|
||||
return user?.id !== auth.user?.id
|
||||
}
|
||||
|
||||
const isUserEditDirty = computed(() => {
|
||||
if (!modalTargetUser.value) return false
|
||||
return (
|
||||
@@ -54,6 +77,7 @@ export function useAdminUsers({
|
||||
}
|
||||
|
||||
function openUserAvatarPicker(user) {
|
||||
if (!canEditUserAvatar(user)) return
|
||||
userAvatarInputs.value[user?.id]?.click()
|
||||
}
|
||||
|
||||
@@ -96,11 +120,13 @@ export function useAdminUsers({
|
||||
}
|
||||
|
||||
async function removeUserAvatar(user) {
|
||||
if (!canEditUserAvatar(user)) return
|
||||
if (!user?.avatarSrc) return
|
||||
await uploadUserAvatar(user, null, { remove: true })
|
||||
}
|
||||
|
||||
function openUserEditModal(user) {
|
||||
if (!canEditUserInfo(user)) return
|
||||
resetMessages()
|
||||
modalTargetUser.value = user ? { ...user } : null
|
||||
modalUserDraftEmail.value = user?.email || ''
|
||||
@@ -147,6 +173,7 @@ export function useAdminUsers({
|
||||
}
|
||||
|
||||
function openUserPasswordModal(user) {
|
||||
if (!canResetUserPassword(user)) return
|
||||
resetMessages()
|
||||
modalTargetUser.value = user ? { ...user } : null
|
||||
modalPasswordDraft.value = ''
|
||||
@@ -183,6 +210,7 @@ export function useAdminUsers({
|
||||
}
|
||||
|
||||
function openUserDeleteModal(user) {
|
||||
if (!canDeleteUser(user)) return
|
||||
resetMessages()
|
||||
modalTargetUser.value = user ? { ...user } : null
|
||||
userDeleteModalOpen.value = true
|
||||
@@ -242,6 +270,10 @@ export function useAdminUsers({
|
||||
return {
|
||||
setUserAvatarInput,
|
||||
canManageModalRole,
|
||||
canEditUserAvatar,
|
||||
canEditUserInfo,
|
||||
canResetUserPassword,
|
||||
canDeleteUser,
|
||||
isUserEditDirty,
|
||||
roleLabelOf,
|
||||
openUserAvatarPicker,
|
||||
|
||||
Reference in New Issue
Block a user