SAML; Dashboard

This commit is contained in:
garrettmills
2020-05-03 20:16:54 -05:00
parent e3ecfb0d37
commit c389e151b5
1778 changed files with 148410 additions and 82 deletions

View File

@@ -13,7 +13,7 @@ class Forms extends FormController {
async login_provider_get(req, res, next) {
return res.page('auth:login', {
...this.Vue.data({
login_message: 'Please sign-in to continue.'
login_message: req.session?.auth?.message || 'Please sign-in to continue.'
}),
})
}

View File

@@ -2,7 +2,7 @@ const { Controller } = require('libflitter')
class MFAController extends Controller {
static get services() {
return [...super.services, 'Vue', 'configs']
return [...super.services, 'Vue', 'configs', 'models']
}
async setup(req, res, next) {
@@ -39,6 +39,21 @@ class MFAController extends Controller {
...this.Vue.data()
})
}
async get_disable(req, res, next) {
return this.Vue.confirm(res, {
message: `You are about to disable multi-factor authentication for your account. This process will require you to re-authenticate to continue. <br><br> Proceed?`,
yes: '/auth/mfa/disable/process',
no: '/dash/profile',
})
}
async do_disable(req, res, next) {
return res.page('auth:mfa:disable', {
...this.Vue.data(),
...this.Vue.session(req),
})
}
}
module.exports = exports = MFAController

View File

@@ -0,0 +1,17 @@
const { Controller } = require('libflitter')
class PasswordController extends Controller {
static get services() {
return [...super.services, 'Vue']
}
async get_reset(req, res, next) {
return res.page('auth:password:reset', {
...this.Vue.data(),
...this.Vue.session(req),
})
}
}
module.exports = exports = PasswordController

View File

@@ -0,0 +1,49 @@
const { Controller } = require('libflitter')
class TrustController extends Controller {
static get services() {
return [...super.services, 'Vue']
}
/*
* Prompts the user to re-authenticate.
* If successful, a trust token will be issued for the specified scope.
*
* Requires req.session.trust_flow = { scope: String, next: String }
*/
async get_issue(req, res, next) {
if ( !req.trust.has_flow() )
return res.status(400).message('Missing trust flow data.').send()
// Check if the session already has a token for this scope
const has_scope = req.trust.has(req.trust.flow_scope())
// If so, redirect them to the destination
if ( has_scope ) {
return res.redirect(req.trust.end())
}
// Otherwise, show the trust prompt for re-authorization
const token = req.trust.start()
return res.page('auth:trust:grant', {
...this.Vue.data({
grant_code: token,
login_message: 'Please re-authenticate to continue.',
}),
...this.Vue.session(req)
})
}
/*async get_continue(req, res, next) {
if ( !req.trust.has_flow() )
return res.status(400).message('Missing trust flow data.')
if ( !req.trust.in_progress() )
return res.status(401).message('No flow in progress. Please try again.')
req.trust.grant(req.trust.flow_scope())
return res.redirect(req.trust.end())
}*/
}
module.exports = exports = TrustController