diff --git a/app/models/user.py b/app/models/user.py
@@ -40,7 +40,9 @@ class User(BaseModel):
]
expire_strategy: UserExpireStrategy
expire_date: datetime | None = Field(None)
- usage_duration: int | None = Field(None)
+ usage_duration: Annotated[
+ int, Field(le=9999 * 365 * 24 * 60 * 60, description="usage_duration must be less than 9999 years")
+ ] | None = None,
activation_deadline: datetime | None = Field(None)
key: str = Field(default_factory=lambda: secrets.token_hex(16))
data_limit: int | None = Field(
diff --git a/dashboard/src/modules/users/domain/schema.ts b/dashboard/src/modules/users/domain/schema.ts
@@ -17,7 +17,8 @@ export const UserSchema = z.object({
.nullable()
.optional(),
expire_strategy: z.enum(["never", "fixed_date", "start_on_first_use"]),
- usage_duration: z.number().nullable().optional(),
+ usage_duration: z.number().max(9999 * 365 * 24 * 60 * 60, { message: "usage_duration must be less than 3649635" })
+ .nullable().optional(),
activation_deadline: z.string().or(z.date()).nullable().optional(),
expire_date: z.string().or(z.date()).nullable().optional(),
service_ids: z