@@ -265,7 +266,7 @@ const { data: cities = ref([]) } = useGetCitiesOfProvinceQuery(provinceIdRef, {
const initialNationalCode = ref('')
const form = ref({
- role: '',
+ roles: [],
name: '',
birthday: '',
nationalCode: '',
@@ -307,11 +308,12 @@ watch(
existingUser,
(user) => {
if (!user) return
- const firstRole = Array.isArray(user.roles) ? user.roles[0] : null
- const roleValue = typeof firstRole === 'object' ? firstRole?.name : firstRole
+ const roleValues = Array.isArray(user.roles)
+ ? user.roles.map((r) => (typeof r === 'object' ? r?.name : r)).filter(Boolean)
+ : []
form.value = {
...form.value,
- role: roleValue || '',
+ roles: roleValues,
name: user.name || `${user.firstName || ''} ${user.lastName || ''}`.trim(),
birthday: user.birthday || '',
nationalCode: user.nationalCode || '',
@@ -360,7 +362,7 @@ const submitting = computed(() => addMutation.isPending.value || updateMutation.
const buildUpdatePayload = () => {
return {
name: form.value.name,
- roles: form.value.role ? [form.value.role] : [],
+ roles: form.value.roles,
provinceId: form.value.provinceId || null,
cityId: form.value.cityId || null,
marriageStatus: form.value.maritalStatus || null,
diff --git a/src/features/admin/users/schema/index.js b/src/features/admin/users/schema/index.js
index 59c0834..6ec5475 100644
--- a/src/features/admin/users/schema/index.js
+++ b/src/features/admin/users/schema/index.js
@@ -1,4 +1,4 @@
-import { number, object, string } from 'yup'
+import { array, number, object, string } from 'yup'
import { passwordRule } from '@/constants/rules/passwordRule'
import { phoneNumberRule } from '@/constants/rules/phoneNumberRule'
import { nationalCodeRule } from '@/constants/rules/nationalCodeRule'
@@ -9,7 +9,7 @@ export const rejectionReasonSchema = object().shape({
})
const baseUserShape = {
- role: string().required(),
+ roles: array().of(string().required()).min(1, 'حداقل یک نقش را انتخاب کنید').required(),
name: string().required().min(3),
phone: phoneNumberRule,
nationalCode: nationalCodeRule,