{"version":3,"file":"auth.mjs","names":[],"sources":["../../src/schemas/auth.ts"],"sourcesContent":["import z from \"zod\";\nimport { AuthProviderSchema } from \"../libs/auth-providers/schema.js\";\nimport { translate } from \"../libs/i18n/index.js\";\nimport type { ControllerSchema } from \"../types.js\";\n\nexport const controllerSchemas = {\n\tgetCSRF: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: z.object({\n\t\t\t_csrf: z.string().meta({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Store this value and use it for the X-CSRF-Token header on required endpoints.\",\n\t\t\t\texample:\n\t\t\t\t\t\"55b26b90b9715d0e9cc425e8f1ba565cad5157e3d56ae8380d8c832a5fb3fcb7\",\n\t\t\t}),\n\t\t}),\n\t} satisfies ControllerSchema,\n\tlogin: {\n\t\tbody: z\n\t\t\t.object({\n\t\t\t\tusernameOrEmail: z.string().trim().meta({\n\t\t\t\t\tdescription: \"Username or email address\",\n\t\t\t\t\texample: \"admin\",\n\t\t\t\t}),\n\t\t\t\tpassword: z.string().meta({\n\t\t\t\t\tdescription: \"User password\",\n\t\t\t\t\texample: \"password\",\n\t\t\t\t}),\n\t\t\t})\n\t\t\t.meta({ description: \"User credentials for login\" }),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n\ttoken: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n\tlogout: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n\tsetupRequired: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: z.object({\n\t\t\tsetupRequired: z.boolean().meta({\n\t\t\t\tdescription: \"Whether initial user setup is required\",\n\t\t\t\texample: true,\n\t\t\t}),\n\t\t}),\n\t} satisfies ControllerSchema,\n\tsetup: {\n\t\tbody: z\n\t\t\t.object({\n\t\t\t\temail: z.email().trim().toLowerCase().meta({\n\t\t\t\t\tdescription: \"Admin user email address\",\n\t\t\t\t\texample: \"admin@example.com\",\n\t\t\t\t}),\n\t\t\t\tusername: z.string().trim().meta({\n\t\t\t\t\tdescription: \"Admin username\",\n\t\t\t\t\texample: \"admin\",\n\t\t\t\t}),\n\t\t\t\tfirstName: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.trim()\n\t\t\t\t\t.meta({\n\t\t\t\t\t\tdescription: \"Admin first name\",\n\t\t\t\t\t\texample: \"John\",\n\t\t\t\t\t})\n\t\t\t\t\t.optional(),\n\t\t\t\tlastName: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.trim()\n\t\t\t\t\t.meta({\n\t\t\t\t\t\tdescription: \"Admin last name\",\n\t\t\t\t\t\texample: \"Doe\",\n\t\t\t\t\t})\n\t\t\t\t\t.optional(),\n\t\t\t\tpassword: z.string().meta({\n\t\t\t\t\tdescription: \"Admin password\",\n\t\t\t\t\texample: \"securepassword123\",\n\t\t\t\t}),\n\t\t\t})\n\t\t\t.meta({ description: \"Initial admin user setup data\" }),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n\tgetProviders: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: z.object({\n\t\t\tdisablePassword: z.boolean().meta({\n\t\t\t\tdescription: \"Whether password login is disabled\",\n\t\t\t\texample: false,\n\t\t\t}),\n\t\t\tproviders: z.array(AuthProviderSchema.omit({ config: true })),\n\t\t}),\n\t} satisfies ControllerSchema,\n\tvalidateInvitation: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z.object({\n\t\t\ttoken: z.string().meta({\n\t\t\t\tdescription: \"The invitation token\",\n\t\t\t\texample: \"abc123def456\",\n\t\t\t}),\n\t\t}),\n\t\tresponse: z.union([\n\t\t\tz.object({\n\t\t\t\tvalid: z.literal(true).meta({\n\t\t\t\t\tdescription: \"Indicates the token is valid\",\n\t\t\t\t\texample: true,\n\t\t\t\t}),\n\t\t\t\tuser: z.object({\n\t\t\t\t\tid: z.number().meta({\n\t\t\t\t\t\tdescription: \"The user's ID\",\n\t\t\t\t\t\texample: 1,\n\t\t\t\t\t}),\n\t\t\t\t\temail: z.string().meta({\n\t\t\t\t\t\tdescription: \"The user's email address\",\n\t\t\t\t\t\texample: \"user@example.com\",\n\t\t\t\t\t}),\n\t\t\t\t\tusername: z.string().meta({\n\t\t\t\t\t\tdescription: \"The user's username\",\n\t\t\t\t\t\texample: \"johndoe\",\n\t\t\t\t\t}),\n\t\t\t\t\tfirstName: z.string().nullable().meta({\n\t\t\t\t\t\tdescription: \"The user's first name\",\n\t\t\t\t\t\texample: \"John\",\n\t\t\t\t\t}),\n\t\t\t\t\tlastName: z.string().nullable().meta({\n\t\t\t\t\t\tdescription: \"The user's last name\",\n\t\t\t\t\t\texample: \"Doe\",\n\t\t\t\t\t}),\n\t\t\t\t}),\n\t\t\t}),\n\t\t\tz.object({\n\t\t\t\tvalid: z.literal(false).meta({\n\t\t\t\t\tdescription: \"Indicates the token is not valid\",\n\t\t\t\t\texample: false,\n\t\t\t\t}),\n\t\t\t}),\n\t\t]),\n\t} satisfies ControllerSchema,\n\tacceptInvitation: {\n\t\tbody: z\n\t\t\t.object({\n\t\t\t\tpassword: z.string().min(8).max(128).meta({\n\t\t\t\t\tdescription: \"Your new password\",\n\t\t\t\t\texample: \"password123\",\n\t\t\t\t}),\n\t\t\t\tpasswordConfirmation: z.string().min(8).max(128).meta({\n\t\t\t\t\tdescription: \"A repeat of your new password\",\n\t\t\t\t\texample: \"password123\",\n\t\t\t\t}),\n\t\t\t})\n\t\t\t.refine((data) => data.password === data.passwordConfirmation, {\n\t\t\t\tmessage: translate(\"server:core.input.ensure.passwords.match\"),\n\t\t\t\tpath: [\"passwordConfirmation\"],\n\t\t\t}),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z.object({\n\t\t\ttoken: z.string().meta({\n\t\t\t\tdescription: \"The invitation token\",\n\t\t\t\texample: \"abc123def456\",\n\t\t\t}),\n\t\t}),\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n\tproviderInitiate: {\n\t\tbody: z.object({\n\t\t\tinvitationToken: z\n\t\t\t\t.string()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"An optional invitation token. This is used so on user invite acceptance, providers can be used to authenticate the user.\",\n\t\t\t\t\texample: \"abc123def456\",\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\tactionType: z.enum([\"invitation\", \"authenticated-link\", \"login\"]).meta({\n\t\t\t\tdescription:\n\t\t\t\t\t\"The type of action to be performed by the auth provider on callback. Are we accepting an invitation (so we should verify the token, user etc.), are we just logging in, or are we authenticated and attempting to link a new provider?\",\n\t\t\t\texample: \"login\",\n\t\t\t}),\n\t\t\tredirectPath: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"The redirect path on a successful callback\",\n\t\t\t\t\texample: \"/lucid\",\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t}),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z.object({\n\t\t\tproviderKey: z.string().trim().meta({\n\t\t\t\tdescription: \"The provider key\",\n\t\t\t\texample: \"google\",\n\t\t\t}),\n\t\t}),\n\t\tresponse: z.object({\n\t\t\tredirectUrl: z.string().meta({\n\t\t\t\tdescription: \"The redirect URL\",\n\t\t\t\texample: \"https://example.com/auth/callback\",\n\t\t\t}),\n\t\t}),\n\t} satisfies ControllerSchema,\n\tproviderOIDCCallback: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: z.object({\n\t\t\t\tcode: z.string().meta({\n\t\t\t\t\tdescription: \"The authorization code returned by the OAuth provider\",\n\t\t\t\t\texample: \"4/0AY0e-g7xQZ9...\",\n\t\t\t\t}),\n\t\t\t\tstate: z.string().meta({\n\t\t\t\t\tdescription: \"The state token for CSRF protection\",\n\t\t\t\t\texample: \"abc123def456\",\n\t\t\t\t}),\n\t\t\t}),\n\t\t\tformatted: z.object({\n\t\t\t\tcode: z.string().meta({\n\t\t\t\t\tdescription: \"The authorization code returned by the OAuth provider\",\n\t\t\t\t\texample: \"4/0AY0e-g7xQZ9...\",\n\t\t\t\t}),\n\t\t\t\tstate: z.string().meta({\n\t\t\t\t\tdescription: \"The state token for CSRF protection\",\n\t\t\t\t\texample: \"abc123def456\",\n\t\t\t\t}),\n\t\t\t}),\n\t\t},\n\t\tparams: z.object({\n\t\t\tproviderKey: z.string().trim().meta({\n\t\t\t\tdescription: \"The provider key\",\n\t\t\t\texample: \"google\",\n\t\t\t}),\n\t\t}),\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n};\n"],"mappings":"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"}