Disallow LDAP bind if trap is set; support setting trap from user form

This commit is contained in:
garrettmills
2020-05-22 09:47:01 -05:00
parent 64356d42d0
commit decb83bdbb
9 changed files with 77 additions and 4 deletions

View File

@@ -7,6 +7,24 @@ class AuthController extends Controller {
return [...super.services, 'models', 'auth', 'MFA', 'output', 'configs', 'utility']
}
async get_traps(req, res, next) {
const trap_config = this.configs.get('traps')
const data = [{ name: '(None)', trap: '', redirect_to: '/' }]
for ( const name in trap_config.types ) {
if ( !trap_config.types.hasOwnProperty(name) ) continue
data.push({
name: name.replace(/_/g, ' ')
.split(' ')
.map(x => x.charAt(0).toUpperCase() + x.substr(1))
.join(' '),
trap: name,
redirect_to: trap_config.types[name].redirect_to
})
}
return res.api(data)
}
async registration(req, res, next) {
const User = this.models.get('auth:User')
const required_fields = ['first_name', 'last_name', 'uid', 'email']
@@ -230,6 +248,15 @@ class AuthController extends Controller {
if ( req.body.tagline )
user.tagline = req.body.tagline
if ( req.body.trap ) {
if ( !req.trap.trap_exists(req.body.trap) )
return res.status(400)
.message('Invalid trap type.')
.api()
user.trap = req.body.trap
}
await user.reset_password(req.body.password, 'create')
await user.save()
return res.api(await user.to_api())
@@ -340,6 +367,16 @@ class AuthController extends Controller {
else
user.tagline = ''
if ( req.body.trap ) {
if ( !req.trap.trap_exists(req.body.trap) )
return res.status(400)
.message('Invalid trap type.')
.api()
user.trap = req.body.trap
} else
user.trap = ''
await user.save()
return res.api()
}