tethys.backend/app/exceptions/InvalidCredentialException.ts

70 lines
2.0 KiB
TypeScript
Raw Normal View History

2024-03-14 19:25:27 +00:00
import { Exception } from "@adonisjs/core/exceptions";
import { HttpContext } from "@adonisjs/core/http";
2023-03-03 15:54:28 +00:00
/*
|--------------------------------------------------------------------------
| Exception
|--------------------------------------------------------------------------
|
| The Exception class imported from '@adonisjs/core' allows defining
| a status code and error code for every exception.
|
| @example
| new InvalidCredentialException('message', 403, 'E_RUNTIME_EXCEPTION')
|
*/
export default class InvalidCredentialException extends Exception {
// constructor() {
// super(...arguments);
// // this.responseText = this.message;
// }
/**
* Unable to find user
*/
public static invalidUid() {
2024-03-14 19:25:27 +00:00
const error = new this('User not found', {status: 400, code: 'E_INVALID_AUTH_UID'});
2023-03-03 15:54:28 +00:00
return error;
}
/**
* Invalid user password
*/
public static invalidPassword() {
2024-03-14 19:25:27 +00:00
const error = new this('Password mis-match', {status: 400, code: 'E_INVALID_AUTH_PASSWORD'});
2023-03-03 15:54:28 +00:00
return error;
}
/**
* Flash error message and redirect the user back
*/
2024-03-14 19:25:27 +00:00
private respondWithRedirect(error: any, ctx: HttpContext) {
2023-03-03 15:54:28 +00:00
// if (!ctx.session) {
// return ctx.response.status(this.status).send(this.responseText);
// }
ctx.session.flashExcept(['_csrf']);
ctx.session.flash('auth', {
2023-03-03 15:54:28 +00:00
error: error,
/**
* Will be removed in the future
*/
errors: {
uid: this.code === 'E_INVALID_AUTH_UID' ? ['Invalid login id'] : null,
password: this.code === 'E_INVALID_AUTH_PASSWORD' ? ['Invalid password'] : null,
2023-03-03 15:54:28 +00:00
},
});
ctx.response.redirect('back', true);
2023-03-03 15:54:28 +00:00
}
/**
* Handle this exception by itself
*/
2024-03-14 19:25:27 +00:00
public handle(error: any, ctx: HttpContext) {
2023-03-03 15:54:28 +00:00
// return response.status(403).view.render("errors/unauthorized", {
// error: error,
// });
this.respondWithRedirect(error, ctx);
}
}