2023-06-22 15:20:04 +00:00
|
|
|
import { Exception } from '@adonisjs/core/build/standalone';
|
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
|
|
|
|
*/
|
2023-07-17 17:13:30 +00:00
|
|
|
public static invalidUid() {
|
2023-06-22 15:20:04 +00:00
|
|
|
const error = new this('User not found', 400, 'E_INVALID_AUTH_UID');
|
2023-03-03 15:54:28 +00:00
|
|
|
return error;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Invalid user password
|
|
|
|
*/
|
2023-07-17 17:13:30 +00:00
|
|
|
public static invalidPassword() {
|
2023-06-22 15:20:04 +00:00
|
|
|
const error = new this('Password mis-match', 400, 'E_INVALID_AUTH_PASSWORD');
|
2023-03-03 15:54:28 +00:00
|
|
|
return error;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Flash error message and redirect the user back
|
|
|
|
*/
|
|
|
|
private respondWithRedirect(error, ctx) {
|
|
|
|
// if (!ctx.session) {
|
|
|
|
// return ctx.response.status(this.status).send(this.responseText);
|
|
|
|
// }
|
2023-06-22 15:20:04 +00:00
|
|
|
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: {
|
2023-06-22 15:20:04 +00:00
|
|
|
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
|
|
|
},
|
|
|
|
});
|
2023-06-22 15:20:04 +00:00
|
|
|
ctx.response.redirect('back', true);
|
2023-03-03 15:54:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle this exception by itself
|
|
|
|
*/
|
|
|
|
|
2023-07-17 17:13:30 +00:00
|
|
|
public handle(error, ctx) {
|
2023-03-03 15:54:28 +00:00
|
|
|
// return response.status(403).view.render("errors/unauthorized", {
|
|
|
|
// error: error,
|
|
|
|
// });
|
|
|
|
this.respondWithRedirect(error, ctx);
|
|
|
|
}
|
|
|
|
}
|