46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { m } from '@/paraglide/messages';
|
|
import z from 'zod';
|
|
|
|
export const userListSchema = z.object({
|
|
page: z.coerce.number().min(1).default(1),
|
|
limit: z.coerce.number().min(10).max(100).default(10),
|
|
keyword: z.string().optional(),
|
|
});
|
|
|
|
export const userSetPasswordSchema = z.object({
|
|
id: z.string().nonempty(m.users_page_message_user_not_found()),
|
|
password: z
|
|
.string()
|
|
.min(5, m.users_page_message_user_min())
|
|
.regex(/[A-Z]/, m.users_page_message_contain_uppercase())
|
|
.regex(/[a-z]/, m.users_page_message_contain_lowercase())
|
|
.regex(/[0-9]/, m.users_page_message_contain_number())
|
|
.regex(/[^a-zA-Z0-9]/, m.users_page_message_contain_special()),
|
|
});
|
|
|
|
export const userUpdateInfoSchema = z.object({
|
|
id: z.string().nonempty(m.users_page_message_user_not_found()),
|
|
name: z.string().nonempty(
|
|
m.common_is_required({
|
|
field: m.profile_form_name(),
|
|
}),
|
|
),
|
|
});
|
|
|
|
export const RoleEnum = z.enum(['admin', 'user']);
|
|
|
|
export const userUpdateRoleSchema = z.object({
|
|
id: z.string().nonempty(m.users_page_message_user_not_found()),
|
|
role: RoleEnum,
|
|
});
|
|
|
|
export const userBanSchema = z.object({
|
|
id: z.string().nonempty(m.users_page_message_user_not_found()),
|
|
banReason: z.string().nonempty(
|
|
m.common_is_required({
|
|
field: m.users_page_ui_form_ban_reason(),
|
|
}),
|
|
),
|
|
banExp: z.number().int().min(1, m.users_page_message_select_min_one_day()),
|
|
});
|