Add job queue; e-mail sending; password reset support
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user