nfp_sites/old/authentication/helper.mjs

33 lines
806 B
JavaScript

import Staff from '../staff/model.mjs'
import Jwt from '../jwt.mjs'
export default class AuthHelper {
constructor(opts = {}) {
Object.assign(this, {
Staff: opts.Staff || Staff,
jwt: opts.jwt || new Jwt(),
})
}
async loginStaff(ctx) {
let staff
try {
staff = await this.Staff
.getSingleQuery(
this.Staff.query(qb => qb.where({ email: ctx.request.body.username }), [], ['*']),
true
)
await this.Staff.compare(ctx.request.body.password, staff.password)
} catch (err) {
if (err.message === 'EmptyResponse' || err.message === 'PasswordMismatch') {
ctx.throw(422, 'The email or password did not match')
}
throw err
}
return this.jwt.createToken(staff.id, staff.email, staff.level)
}
}