Add ability to require e-mail verification
This commit is contained in:
@@ -7,7 +7,7 @@ const FormController = require('flitter-auth/controllers/Forms')
|
||||
*/
|
||||
class Forms extends FormController {
|
||||
static get services() {
|
||||
return [...super.services, 'Vue', 'models']
|
||||
return [...super.services, 'Vue', 'models', 'jobs']
|
||||
}
|
||||
|
||||
async registration_provider_get(req, res, next) {
|
||||
@@ -20,6 +20,50 @@ class Forms extends FormController {
|
||||
})
|
||||
}
|
||||
|
||||
async email_verify_keyaction(req, res, next) {
|
||||
if ( !req.trap.has_trap('verify_email') ) return res.redirect(req.session.email_verify_flow || '/dash/profile')
|
||||
req.user.email_verified = true
|
||||
await req.user.save()
|
||||
await req.trap.end()
|
||||
const url = req.session.email_verify_flow || '/dash/profile'
|
||||
return res.redirect(url)
|
||||
}
|
||||
|
||||
async show_verify_email(req, res, next) {
|
||||
if ( !req.trap.has_trap('verify_email') ) return res.redirect(req.session.email_verify_flow || '/dash/profile')
|
||||
const verify_queue = this.jobs.queue('verifications')
|
||||
await verify_queue.add('SendVerificationEmail', { user_id: req.user.id })
|
||||
|
||||
return res.page('public:message', {
|
||||
...this.Vue.data({
|
||||
message: req.T('auth.must_verify_email'),
|
||||
actions: [
|
||||
{
|
||||
text: 'Send Verification E-Mail',
|
||||
action: 'redirect',
|
||||
next: '/auth/verify-email/sent',
|
||||
},
|
||||
],
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
async send_verify_email(req, res, next) {
|
||||
if ( !req.trap.has_trap('verify_email') ) return res.redirect(req.session.email_verify_flow || '/dash/profile')
|
||||
return res.page('public:message', {
|
||||
...this.Vue.data({
|
||||
message: req.T('auth.verify_email_sent'),
|
||||
actions: [
|
||||
{
|
||||
text: 'Re-send Verification E-Mail',
|
||||
action: 'redirect',
|
||||
next: '/auth/verify-email/sent',
|
||||
},
|
||||
],
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
async finish_registration(req, res, next) {
|
||||
if ( req.trap.has_trap() && req.trap.get_trap() === 'registrant_flow' ) await req.trap.end()
|
||||
const dest = req.session.registrant_flow || '/dash/profile'
|
||||
|
||||
Reference in New Issue
Block a user