멤버 등급 변경 권한 규칙 수정 v1.5.6
This commit is contained in:
@@ -24,7 +24,6 @@ const passwordModalOpen = ref(false)
|
||||
const deleteModalOpen = ref(false)
|
||||
const isUpdatingPassword = ref(false)
|
||||
const isDeletingMember = ref(false)
|
||||
const isUpdatingRole = ref(false)
|
||||
const actionMessage = ref('')
|
||||
const actionError = ref('')
|
||||
|
||||
@@ -93,7 +92,10 @@ const currentRoleLabel = computed(() => roleOptions.find((option) => option.valu
|
||||
* 회원 저장 요청 본문을 문자열로 직렬화한다.
|
||||
* @returns {string} 직렬화된 회원 입력값
|
||||
*/
|
||||
const serializeMemberPayload = () => JSON.stringify(getMemberPayload())
|
||||
const serializeMemberPayload = () => JSON.stringify({
|
||||
...getMemberPayload(),
|
||||
roleCode: form.roleCode
|
||||
})
|
||||
|
||||
/**
|
||||
* 날짜 표시 형식 변환
|
||||
@@ -340,40 +342,6 @@ const updateMemberPassword = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 관리자 권한으로 회원 등급을 변경한다.
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
const updateMemberRole = async () => {
|
||||
if (isNewMember.value || isUpdatingRole.value) {
|
||||
return
|
||||
}
|
||||
|
||||
actionMessage.value = ''
|
||||
actionError.value = ''
|
||||
isUpdatingRole.value = true
|
||||
|
||||
try {
|
||||
const updated = await $fetch(`/admin/api/members/${props.member.id}/role`, {
|
||||
method: 'PUT',
|
||||
body: {
|
||||
role: form.roleCode
|
||||
}
|
||||
})
|
||||
|
||||
emit('saved', {
|
||||
...props.member,
|
||||
...updated
|
||||
})
|
||||
actionMessage.value = '멤버 등급이 변경되었습니다.'
|
||||
} catch (error) {
|
||||
form.roleCode = props.member?.roleCode || 'member'
|
||||
actionError.value = error?.data?.message || '멤버 등급 변경에 실패했습니다.'
|
||||
} finally {
|
||||
isUpdatingRole.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 관리자 권한으로 회원을 삭제한다.
|
||||
* @returns {Promise<void>}
|
||||
@@ -415,6 +383,15 @@ const saveMember = async () => {
|
||||
|
||||
try {
|
||||
const payload = getMemberPayload()
|
||||
if (!isNewMember.value && form.roleCode !== props.member?.roleCode) {
|
||||
await $fetch(`/admin/api/members/${props.member.id}/role`, {
|
||||
method: 'PUT',
|
||||
body: {
|
||||
role: form.roleCode
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const saved = isNewMember.value
|
||||
? await $fetch('/admin/api/members', {
|
||||
method: 'POST',
|
||||
@@ -584,8 +561,7 @@ watch(() => props.member, () => {
|
||||
<select
|
||||
v-model="form.roleCode"
|
||||
class="admin-member-form__select h-12 w-full rounded-md border border-transparent bg-[#eef1f4] px-4 text-sm text-[#15171a] outline-none focus:border-[#c5ccd5] focus:bg-white focus:ring-2 focus:ring-[#dce2e8] disabled:opacity-60"
|
||||
:disabled="isNewMember || isUpdatingRole"
|
||||
@change="updateMemberRole"
|
||||
:disabled="isNewMember || isSaving"
|
||||
>
|
||||
<option v-for="option in roleOptions" :key="option.value" :value="option.value">
|
||||
{{ option.label }}
|
||||
|
||||
Reference in New Issue
Block a user