Ctrl K
ComunidadGuías…

server/http/openapi/management-routes/users-security.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import {
  jsonBody,
  listManagementUserLinkedAccountsResponseSchema,
  listManagementUserPasskeysResponseSchema,
  listManagementUserSessionsResponseSchema,
  listManagementUsersResponseSchema,
  type ManagementRouteConfig,
  managementBanUserRequestSchema,
  managementCreateUserRequestSchema,
  managementUpdateUserRequestSchema,
  managementUserDetailResponseSchema,
  managementUserListQuerySchema,
  paginationQuerySchema,
  passwordResetRequestResponseSchema,
  securityPolicyResponseSchema,
  updateSecurityPolicySchema,
  userIdParam,
  userPasskeyParam,
  userSessionParam,
  z,
} from './helpers'

export const userSecurityRoutes: ManagementRouteConfig[] = [
  {
    method: 'get',
    path: '/users',
    operationId: 'listUsers',
    summary: 'List users',
    request: { query: managementUserListQuerySchema },
    response: listManagementUsersResponseSchema,
    paginated: true,
  },
  {
    method: 'post',
    path: '/users',
    operationId: 'createUser',
    summary: 'Create user',
    request: { body: jsonBody(managementCreateUserRequestSchema) },
    response: managementUserDetailResponseSchema,
    status: 201,
  },
  {
    method: 'get',
    path: '/users/{userId}',
    operationId: 'getUser',
    summary: 'Get user',
    request: { params: userIdParam },
    response: managementUserDetailResponseSchema,
  },
  {
    method: 'patch',
    path: '/users/{userId}',
    operationId: 'updateUser',
    summary: 'Update user',
    request: { params: userIdParam, body: jsonBody(managementUpdateUserRequestSchema) },
    response: managementUserDetailResponseSchema,
  },
  {
    method: 'delete',
    path: '/users/{userId}',
    operationId: 'deleteUser',
    summary: 'Delete user',
    request: { params: userIdParam },
    noBody: true,
  },
  {
    method: 'get',
    path: '/users/{userId}/suspension',
    operationId: 'getUserSuspension',
    summary: 'Get a User suspension',
    request: { params: userIdParam },
    response: z.object({
      userId: z.string(),
      suspended: z.boolean(),
      reason: z.string().nullable(),
      expiresAt: z.string().nullable(),
    }),
  },
  {
    method: 'put',
    path: '/users/{userId}/suspension',
    operationId: 'replaceUserSuspension',
    summary: 'Create or replace a User suspension',
    request: { params: userIdParam, body: jsonBody(managementBanUserRequestSchema) },
    response: managementUserDetailResponseSchema,
  },
  {
    method: 'delete',
    path: '/users/{userId}/suspension',
    operationId: 'deleteUserSuspension',
    summary: 'Delete a User suspension',
    request: { params: userIdParam },
    response: managementUserDetailResponseSchema,
  },
  {
    method: 'post',
    path: '/users/{userId}/password-reset-requests',
    operationId: 'createUserPasswordResetRequest',
    summary: 'Create user password reset request',
    request: { params: userIdParam },
    response: passwordResetRequestResponseSchema,
    status: 201,
  },
  {
    method: 'get',
    path: '/users/{userId}/password-reset-requests/{requestId}',
    operationId: 'getUserPasswordResetRequest',
    summary: 'Get user password reset request',
    request: { params: z.object({ userId: z.string(), requestId: z.string() }) },
    response: passwordResetRequestResponseSchema,
  },
  {
    method: 'get',
    path: '/users/{userId}/sessions',
    operationId: 'listUserSessions',
    summary: 'List user sessions',
    request: { params: userIdParam, query: paginationQuerySchema },
    response: listManagementUserSessionsResponseSchema,
    paginated: true,
  },
  {
    method: 'delete',
    path: '/users/{userId}/sessions',
    operationId: 'deleteUserSessions',
    summary: 'Delete user sessions',
    request: { params: userIdParam },
    noBody: true,
  },
  {
    method: 'get',
    path: '/users/{userId}/sessions/{sessionId}',
    operationId: 'getUserSession',
    summary: 'Get user session',
    request: { params: userSessionParam },
    response: z.unknown(),
  },
  {
    method: 'delete',
    path: '/users/{userId}/sessions/{sessionId}',
    operationId: 'deleteUserSession',
    summary: 'Delete user session',
    request: { params: userSessionParam },
    noBody: true,
  },
  {
    method: 'get',
    path: '/users/{userId}/linked-accounts',
    operationId: 'listUserLinkedAccounts',
    summary: 'List user linked accounts',
    request: { params: userIdParam, query: paginationQuerySchema },
    response: listManagementUserLinkedAccountsResponseSchema,
    paginated: true,
  },
  {
    method: 'get',
    path: '/users/{userId}/passkeys',
    operationId: 'listUserPasskeys',
    summary: 'List user passkeys',
    request: { params: userIdParam, query: paginationQuerySchema },
    response: listManagementUserPasskeysResponseSchema,
    paginated: true,
  },
  {
    method: 'delete',
    path: '/users/{userId}/passkeys/{passkeyId}',
    operationId: 'deleteUserPasskey',
    summary: 'Delete user passkey',
    request: { params: userPasskeyParam },
    noBody: true,
  },

  {
    method: 'get',
    path: '/realm/security-policy',
    operationId: 'getSecurityPolicy',
    summary: 'Get security policy',
    response: z.object({ policy: securityPolicyResponseSchema }),
  },
  {
    method: 'patch',
    path: '/realm/security-policy',
    operationId: 'updateSecurityPolicy',
    summary: 'Update security policy',
    request: { body: jsonBody(updateSecurityPolicySchema) },
    response: z.object({ policy: securityPolicyResponseSchema }),
  },
]