2020-12-30 18:35:18 +00:00
|
|
|
import { Session } from '../../db';
|
2020-12-28 11:48:47 +00:00
|
|
|
import { ErrorForbidden } from '../../utils/errors';
|
|
|
|
import uuidgen from '../../utils/uuidgen';
|
|
|
|
import BaseController from '../BaseController';
|
|
|
|
|
|
|
|
export default class SessionController extends BaseController {
|
|
|
|
|
|
|
|
public async authenticate(email: string, password: string): Promise<Session> {
|
|
|
|
const userModel = this.models.user();
|
2020-12-30 18:35:18 +00:00
|
|
|
const user = await userModel.login(email, password);
|
2020-12-28 11:48:47 +00:00
|
|
|
if (!user) throw new ErrorForbidden('Invalid username or password');
|
|
|
|
const session: Session = { id: uuidgen(), user_id: user.id };
|
2020-12-30 18:35:18 +00:00
|
|
|
return this.models.session().save(session, { isNew: true });
|
2020-12-28 11:48:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|