diff options
Diffstat (limited to 'lib/admin-users')
| -rw-r--r-- | lib/admin-users/service.ts | 1 | ||||
| -rw-r--r-- | lib/admin-users/table/add-ausers-dialog.tsx | 32 | ||||
| -rw-r--r-- | lib/admin-users/validations.ts | 3 |
3 files changed, 33 insertions, 3 deletions
diff --git a/lib/admin-users/service.ts b/lib/admin-users/service.ts index 70c04aa1..6ca2cef3 100644 --- a/lib/admin-users/service.ts +++ b/lib/admin-users/service.ts @@ -266,6 +266,7 @@ export async function createAdminUser(input: CreateUserSchema & { language?: str phone: input.phone?.trim(), // 전화번호 앞뒤 공백 제거 domain: input.domain, companyId: input.companyId ?? null, + isActive: input.isActive ?? true, // 활성화 상태 (기본값 true) // 기타 필요한 필드 추가 }); diff --git a/lib/admin-users/table/add-ausers-dialog.tsx b/lib/admin-users/table/add-ausers-dialog.tsx index 5c6e600a..6c6a1e99 100644 --- a/lib/admin-users/table/add-ausers-dialog.tsx +++ b/lib/admin-users/table/add-ausers-dialog.tsx @@ -50,6 +50,7 @@ import { toast } from "sonner" import { Vendor } from "@/db/schema/vendors" import { FormDescription } from "@/components/ui/form" import { ScrollArea } from "@/components/ui/scroll-area" +import { Switch } from "@/components/ui/switch" // i18n-iso-countries import import i18nIsoCountries from "i18n-iso-countries" @@ -126,7 +127,7 @@ export function AddUserDialog() { }, []) // react-hook-form 세팅 - const form = useForm<CreateUserSchema & { language?: string; phone?: string }>({ + const form = useForm<CreateUserSchema & { language?: string; phone?: string; country?: string }>({ resolver: zodResolver(createUserSchema), defaultValues: { name: "", @@ -136,7 +137,9 @@ export function AddUserDialog() { language:'en', // roles는 array<string>, 여기서는 단일 선택 시 [role]로 담음 roles: ["Vendor Admin"], - domain:'partners' + domain:'partners', + isActive: true, // 기본값 활성화 + country: undefined, // 국가 필드 // domain, etc. 필요하다면 추가 }, }) @@ -177,7 +180,7 @@ export function AddUserDialog() { </Button> </DialogTrigger> - <DialogContent> + <DialogContent className="max-w-2xl max-h-[90vh] overflow-y-auto"> <DialogHeader> <DialogTitle>Create New User</DialogTitle> <DialogDescription> @@ -450,6 +453,29 @@ export function AddUserDialog() { )} /> + {/* 활성화 상태 */} + <FormField + control={form.control} + name="isActive" + render={({ field }) => ( + <FormItem className="flex flex-row items-center justify-between rounded-lg border p-3"> + <div className="space-y-0.5"> + <FormLabel>Account Status</FormLabel> + <FormDescription className="text-xs text-muted-foreground"> + 활성화된 계정만 로그인할 수 있습니다. + </FormDescription> + </div> + <FormControl> + <Switch + checked={field.value} + onCheckedChange={field.onChange} + /> + </FormControl> + <FormMessage /> + </FormItem> + )} + /> + </div> <DialogFooter> diff --git a/lib/admin-users/validations.ts b/lib/admin-users/validations.ts index 86ff8d20..28911aa8 100644 --- a/lib/admin-users/validations.ts +++ b/lib/admin-users/validations.ts @@ -81,6 +81,8 @@ export const createUserSchema = z.object({ message: "올바른 국제 전화번호 형식이 아닙니다. +로 시작하는 3-20자리 번호를 입력해주세요. (예: +82-10-1234-5678)" } ), // 전화번호 필드 추가 + isActive: z.boolean().default(true), // 활성화 상태 필드 추가 + country: z.string().optional(), // 국가 필드 (기존 코드 호환성) }); @@ -105,6 +107,7 @@ export const updateUserSchema = z.object({ message: "올바른 국제 전화번호 형식이 아닙니다. +로 시작하는 3-20자리 번호를 입력해주세요. (예: +82-10-1234-5678)" } ), // 전화번호 필드 추가 + isActive: z.boolean().optional(), // 활성화 상태 필드 추가 }); export type GetUsersSchema = Awaited<ReturnType<typeof searchParamsCache.parse>> |
