Add job queue; e-mail sending; password reset support

This commit is contained in:
garrettmills
2020-05-25 15:45:26 -05:00
parent f371310620
commit 76ba843348
22 changed files with 884 additions and 30 deletions

View File

@@ -3,7 +3,7 @@ const zxcvbn = require('zxcvbn')
class PasswordController extends Controller {
static get services() {
return [...super.services, 'auth']
return [...super.services, 'auth', 'jobs', 'models']
}
async get_resets(req, res, next) {
@@ -92,8 +92,26 @@ class PasswordController extends Controller {
const flitter = await this.auth.get_provider('flitter')
await flitter.logout(req)
await req.user.kickout()
req.trust.unassume()
return res.api()
}
async request_reset(req, res, next) {
if ( !req.body.email )
return res.status(400)
.message('Missing required field: email')
.api()
const User = this.models.get('auth:User')
const user = await User.findOne({ email: req.body.email })
if ( user ) {
const reset_queue = this.jobs.queue('password_resets')
await reset_queue.add('PasswordReset', { user_id: user.id })
}
return res.api({ success: true })
}
}
module.exports = exports = PasswordController

View File

@@ -12,6 +12,13 @@ class PasswordController extends Controller {
})
}
async password_reset_keyaction(req, res, next) {
req.user.trap = 'password_reset'
await req.user.save()
req.trust.assume()
return res.redirect('/auth/password/reset')
}
}
module.exports = exports = PasswordController