@@ -2,17 +2,23 @@ import { Body, CookieParam, JsonController, Param, Post, Req, Res } from 'routin
 | 
			
		||||
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
			
		||||
import { IllegalJWTError, InvalidCredentialsError, JwtNotProvidedError, PasswordNeededError, RefreshTokenCountInvalidError, UsernameOrEmailNeededError } from '../errors/AuthError';
 | 
			
		||||
import { UserNotFoundError } from '../errors/UserErrors';
 | 
			
		||||
import { Mailer } from '../mailer';
 | 
			
		||||
import { CreateAuth } from '../models/actions/create/CreateAuth';
 | 
			
		||||
import { CreateResetToken } from '../models/actions/create/CreateResetToken';
 | 
			
		||||
import { HandleLogout } from '../models/actions/HandleLogout';
 | 
			
		||||
import { RefreshAuth } from '../models/actions/RefreshAuth';
 | 
			
		||||
import { ResetPassword } from '../models/actions/ResetPassword';
 | 
			
		||||
import { ResponseAuth } from '../models/responses/ResponseAuth';
 | 
			
		||||
import { ResponseEmpty } from '../models/responses/ResponseEmpty';
 | 
			
		||||
import { Logout } from '../models/responses/ResponseLogout';
 | 
			
		||||
 | 
			
		||||
@JsonController('/auth')
 | 
			
		||||
export class AuthController {
 | 
			
		||||
 | 
			
		||||
	private mailer: Mailer;
 | 
			
		||||
 | 
			
		||||
	constructor() {
 | 
			
		||||
		this.mailer = new Mailer();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Post("/login")
 | 
			
		||||
@@ -82,13 +88,14 @@ export class AuthController {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Post("/reset")
 | 
			
		||||
	@ResponseSchema(ResponseAuth)
 | 
			
		||||
	@ResponseSchema(UserNotFoundError)
 | 
			
		||||
	@ResponseSchema(UsernameOrEmailNeededError)
 | 
			
		||||
	@ResponseSchema(ResponseEmpty, { statusCode: 200 })
 | 
			
		||||
	@ResponseSchema(UserNotFoundError, { statusCode: 404 })
 | 
			
		||||
	@ResponseSchema(UsernameOrEmailNeededError, { statusCode: 406 })
 | 
			
		||||
	@OpenAPI({ description: "Request a password reset token. <br> This will provide you with a reset token that you can use by posting to /api/auth/reset/{token}." })
 | 
			
		||||
	async getResetToken(@Body({ validate: true }) passwordReset: CreateResetToken) {
 | 
			
		||||
		//This really shouldn't just get returned, but sent via mail or sth like that. But for dev only this is fine.
 | 
			
		||||
		return { "resetToken": await passwordReset.toResetToken() };
 | 
			
		||||
		const reset_token: String = await passwordReset.toResetToken();
 | 
			
		||||
		await this.mailer.sendResetMail(passwordReset.email, reset_token);
 | 
			
		||||
		return new ResponseEmpty();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Post("/reset/:token")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user