feat: implement TASK-WP1-04 admin security
This commit is contained in:
@@ -108,6 +108,54 @@ export const LoginCompleteResponseSchema = Type.Object(
|
||||
{ additionalProperties: false, $id: "LoginCompleteResponse" },
|
||||
);
|
||||
|
||||
export const AdminLoginSendRequestSchema = Type.Object(
|
||||
{
|
||||
email: Type.String({ maxLength: 320, pattern: emailPattern }),
|
||||
},
|
||||
{ additionalProperties: false, $id: "AdminLoginSendRequest" },
|
||||
);
|
||||
|
||||
export const AdminAuthenticatedUserSchema = Type.Object(
|
||||
{
|
||||
role: Type.Literal("super_admin"),
|
||||
status: Type.Literal("active"),
|
||||
user_id: Type.String({ pattern: uuidPattern }),
|
||||
},
|
||||
{ additionalProperties: false, $id: "AdminAuthenticatedUser" },
|
||||
);
|
||||
|
||||
export const AdminLoginCompleteRequestSchema = Type.Object(
|
||||
{
|
||||
registration_id: Type.String({ pattern: uuidPattern }),
|
||||
verification_code: Type.String({ pattern: "^[0-9]{6}$" }),
|
||||
},
|
||||
{ additionalProperties: false, $id: "AdminLoginCompleteRequest" },
|
||||
);
|
||||
|
||||
export const AdminLoginCompleteResponseSchema = Type.Object(
|
||||
{
|
||||
admin: Type.Ref(AdminAuthenticatedUserSchema),
|
||||
audience: Type.Literal("admin"),
|
||||
session_expires_at: Type.String({ pattern: isoTimestampPattern }),
|
||||
status: Type.Literal("authenticated"),
|
||||
},
|
||||
{ additionalProperties: false, $id: "AdminLoginCompleteResponse" },
|
||||
);
|
||||
|
||||
export const AdminSessionResponseSchema = Type.Object(
|
||||
{
|
||||
acknowledged_private_content_notice_version: Type.Union([Type.String(), Type.Null()]),
|
||||
admin: Type.Ref(AdminAuthenticatedUserSchema),
|
||||
audience: Type.Literal("admin"),
|
||||
authenticated: Type.Literal(true),
|
||||
csrf_token: Type.String({ maxLength: 64, minLength: 43, pattern: "^[A-Za-z0-9_-]+$" }),
|
||||
current_private_content_notice_version: Type.Union([Type.String(), Type.Null()]),
|
||||
expires_at: Type.String({ pattern: isoTimestampPattern }),
|
||||
notice_acknowledged: Type.Boolean(),
|
||||
},
|
||||
{ additionalProperties: false, $id: "AdminSessionResponse" },
|
||||
);
|
||||
|
||||
export const LogoutHeadersSchema = Type.Object(
|
||||
{
|
||||
"idempotency-key": Type.String({ maxLength: 200, minLength: 32, pattern: "^[A-Za-z0-9_-]+$" }),
|
||||
@@ -128,3 +176,5 @@ export type RegistrationCompleteResponse = Static<typeof RegistrationCompleteRes
|
||||
export type UserSessionResponse = Static<typeof UserSessionResponseSchema>;
|
||||
export type LoginSendRequest = Static<typeof LoginSendRequestSchema>;
|
||||
export type LoginCompleteRequest = Static<typeof LoginCompleteRequestSchema>;
|
||||
export type AdminLoginSendRequest = Static<typeof AdminLoginSendRequestSchema>;
|
||||
export type AdminLoginCompleteRequest = Static<typeof AdminLoginCompleteRequestSchema>;
|
||||
|
||||
Reference in New Issue
Block a user