mirror of
https://github.com/BradNut/boredgame
synced 2025-09-08 17:40:22 +00:00
145 lines
3.8 KiB
TypeScript
145 lines
3.8 KiB
TypeScript
import {StatusCodes} from '$lib/constants/status-codes';
|
|
import {unauthorizedSchema} from '$lib/server/api/common/exceptions';
|
|
import {selectUserSchema} from '$lib/server/api/databases/postgres/tables/users.table';
|
|
import {updateProfileDto} from '$lib/server/api/dtos/update-profile.dto';
|
|
import {createErrorSchema} from 'stoker/openapi/schemas';
|
|
import {taggedAuthRoute} from '../common/openapi/create-auth-route';
|
|
import {changePasswordDto} from '../dtos/change-password.dto';
|
|
import {verifyPasswordDto} from '../dtos/verify-password.dto';
|
|
|
|
const tag = 'IAM';
|
|
|
|
export const iam = taggedAuthRoute(tag, {
|
|
responses: {
|
|
[StatusCodes.OK]: {
|
|
description: 'User profile',
|
|
schema: selectUserSchema,
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.UNAUTHORIZED]: {
|
|
description: 'Unauthorized',
|
|
schema: createErrorSchema(unauthorizedSchema),
|
|
mediaType: 'application/json',
|
|
},
|
|
},
|
|
});
|
|
|
|
export const updateProfile = taggedAuthRoute(tag, {
|
|
request: {
|
|
json: updateProfileDto,
|
|
},
|
|
responses: {
|
|
[StatusCodes.OK]: {
|
|
description: 'Updated User',
|
|
schema: selectUserSchema,
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.BAD_REQUEST]: {
|
|
description: 'The validation error(s)',
|
|
schema: createErrorSchema(updateProfileDto),
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.UNPROCESSABLE_ENTITY]: {
|
|
description: 'Username already in use',
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.UNAUTHORIZED]: {
|
|
description: 'Unauthorized',
|
|
schema: createErrorSchema(unauthorizedSchema),
|
|
mediaType: 'application/json',
|
|
},
|
|
},
|
|
});
|
|
|
|
export const verifyPassword = taggedAuthRoute(tag, {
|
|
request: {
|
|
json: verifyPasswordDto,
|
|
},
|
|
responses: {
|
|
[StatusCodes.OK]: {
|
|
description: 'Password verified',
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.BAD_REQUEST]: {
|
|
description: 'The validation error(s)',
|
|
schema: createErrorSchema(verifyPasswordDto),
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.UNPROCESSABLE_ENTITY]: {
|
|
description: 'Incorrect password',
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.UNAUTHORIZED]: {
|
|
description: 'Unauthorized',
|
|
schema: createErrorSchema(unauthorizedSchema),
|
|
mediaType: 'application/json',
|
|
},
|
|
},
|
|
});
|
|
|
|
export const updatePassword = taggedAuthRoute(tag, {
|
|
request: {
|
|
json: changePasswordDto,
|
|
},
|
|
responses: {
|
|
[StatusCodes.OK]: {
|
|
description: 'Password updated',
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.BAD_REQUEST]: {
|
|
description: 'The validation error(s)',
|
|
schema: createErrorSchema(changePasswordDto),
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.UNAUTHORIZED]: {
|
|
description: 'Unauthorized',
|
|
schema: createErrorSchema(unauthorizedSchema),
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.FORBIDDEN]: {
|
|
description: 'Incorrect password',
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.INTERNAL_SERVER_ERROR]: {
|
|
description: 'Error updating password',
|
|
mediaType: 'application/json',
|
|
},
|
|
},
|
|
});
|
|
|
|
export const updateEmail = taggedAuthRoute(tag, {
|
|
responses: {
|
|
[StatusCodes.OK]: {
|
|
description: 'Email updated',
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.BAD_REQUEST]: {
|
|
description: 'The validation error(s)',
|
|
schema: createErrorSchema(changePasswordDto),
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.UNAUTHORIZED]: {
|
|
description: 'Unauthorized',
|
|
schema: createErrorSchema(unauthorizedSchema),
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.FORBIDDEN]: {
|
|
description: 'Cannot change email address',
|
|
mediaType: 'application/json',
|
|
},
|
|
},
|
|
});
|
|
|
|
export const logout = taggedAuthRoute(tag, {
|
|
responses: {
|
|
[StatusCodes.OK]: {
|
|
description: 'Logged out',
|
|
mediaType: 'application/json',
|
|
},
|
|
[StatusCodes.UNAUTHORIZED]: {
|
|
description: 'Unauthorized',
|
|
schema: createErrorSchema(unauthorizedSchema),
|
|
mediaType: 'application/json',
|
|
},
|
|
},
|
|
});
|