From 5aad581c2d01fc674c0f94a7c6a778b798abaa07 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 22 Dec 2020 10:57:25 +0100 Subject: [PATCH] Implemented toe password reset route ref #40 --- src/controllers/AuthController.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/controllers/AuthController.ts b/src/controllers/AuthController.ts index 022bffd..a141a6c 100644 --- a/src/controllers/AuthController.ts +++ b/src/controllers/AuthController.ts @@ -1,4 +1,4 @@ -import { Body, CookieParam, JsonController, Post, Res } from 'routing-controllers'; +import { Body, CookieParam, JsonController, Param, Post, Res } from 'routing-controllers'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; import { IllegalJWTError, InvalidCredentialsError, JwtNotProvidedError, PasswordNeededError, RefreshTokenCountInvalidError, UsernameOrEmailNeededError } from '../errors/AuthError'; import { UserNotFoundError } from '../errors/UserErrors'; @@ -6,6 +6,7 @@ import { CreateAuth } from '../models/actions/CreateAuth'; import { CreateResetToken } from '../models/actions/CreateResetToken'; import { HandleLogout } from '../models/actions/HandleLogout'; import { RefreshAuth } from '../models/actions/RefreshAuth'; +import { ResetPassword } from '../models/actions/ResetPassword'; import { Auth } from '../models/responses/ResponseAuth'; import { Logout } from '../models/responses/ResponseLogout'; @@ -86,6 +87,16 @@ export class AuthController { @ResponseSchema(UsernameOrEmailNeededError) @OpenAPI({ description: "Request a password reset token" }) async getResetToken(@Body({ validate: true }) passwordReset: CreateResetToken) { - return await passwordReset.toResetToken(); + return { "resetToken": await passwordReset.toResetToken() }; + } + + @Post("/reset/:token") + @ResponseSchema(Auth) + @ResponseSchema(UserNotFoundError) + @ResponseSchema(UsernameOrEmailNeededError) + @OpenAPI({ description: "Reset a user's password" }) + async resetPassword(@Param("token") token: string, @Body({ validate: true }) passwordReset: ResetPassword) { + passwordReset.resetToken = token; + return await passwordReset.resetPassword(); } }