summaryrefslogtreecommitdiff
path: root/lib/admin-users
diff options
context:
space:
mode:
Diffstat (limited to 'lib/admin-users')
-rw-r--r--lib/admin-users/service.ts1
-rw-r--r--lib/admin-users/table/add-ausers-dialog.tsx32
-rw-r--r--lib/admin-users/validations.ts3
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>>