Flesh out Cobalt, LDAP groups, &c.

This commit is contained in:
garrettmills
2020-05-11 20:26:09 -05:00
parent c389e151b5
commit 6f621f5891
34 changed files with 1508 additions and 31 deletions

View File

@@ -0,0 +1,14 @@
const { Middleware } = require('libflitter')
class PermissionMiddleware extends Middleware {
async test(req, res, next, { check }) {
if ( !req.user.can(check) )
return res.status(401)
.message('Insufficient permissions.')
.api()
return next()
}
}
module.exports = exports = PermissionMiddleware

View File

@@ -7,6 +7,15 @@ const auth_routes = {
get: {
'/mfa/enable/date': ['middleware::auth:UserOnly', 'controller::api:v1:Auth.get_mfa_enable_date'],
'/roles': [
['middleware::api:Permission', { check: 'v1:auth:roles:list' }],
'controller::api:v1:Auth.get_roles',
],
'/users': [
['middleware::api:Permission', { check: 'v1:auth:users:list' }],
'controller::api:v1:Auth.get_users',
],
},
post: {

View File

@@ -0,0 +1,61 @@
const ldap_routes = {
prefix: '/api/v1/ldap',
middleware: [
'auth:UserOnly',
],
get: {
'/clients': [
['middleware::api:Permission', { check: 'v1:ldap:clients:list' }],
'controller::api:v1:LDAP.get_clients',
],
'/clients/:id': [
['middleware::api:Permission', { check: 'v1:ldap:clients:get' }],
'controller::api:v1:LDAP.get_client',
],
'/groups': [
['middleware::api:Permission', { check: 'v1:ldap:groups:list' }],
'controller::api:v1:LDAP.get_groups',
],
'/groups/:id': [
['middleware::api:Permission', { check: 'v1:ldap:groups:get' }],
'controller::api:v1:LDAP.get_group',
],
},
post: {
'/clients': [
['middleware::api:Permission', { check: 'v1:ldap:clients:create' }],
'controller::api:v1:LDAP.create_client',
],
'/groups': [
['middleware::api:Permission', { check: 'v1:ldap:groups:create' }],
'controller::api:v1:LDAP.create_group',
],
},
patch: {
'/clients/:id': [
['middleware::api:Permission', { check: 'v1:ldap:clients:update' }],
'controller::api:v1:LDAP.update_client',
],
'/groups/:id': [
['middleware::api:Permission', { check: 'v1:ldap:groups:update' }],
'controller::api:v1:LDAP.update_group',
],
},
delete: {
'/clients/:id': [
['middleware::api:Permission', { check: 'v1:ldap:clients:delete' }],
'controller::api:v1:LDAP.delete_client',
],
'/groups/:id': [
['middleware::api:Permission', { check: 'v1:ldap:groups:delete' }],
'controller::api:v1:LDAP.delete_group',
],
},
}
module.exports = exports = ldap_routes

View File

@@ -0,0 +1,41 @@
const saml_routes = {
prefix: '/api/v1/saml',
middleware: [
'auth:UserOnly',
],
get: {
'/providers': [
['middleware::api:Permission', { check: 'v1:saml:providers:list' }],
'controller::api:v1:SAML.get_providers',
],
'/providers/:id': [
['middleware::api:Permission', { check: 'v1:saml:providers:get' }],
'controller::api:v1:SAML.get_provider',
],
},
post: {
'/providers': [
['middleware::api:Permission', { check: 'v1:saml:providers:create' }],
'controller::api:v1:SAML.create_provider',
],
},
patch: {
'/providers/:id': [
['middleware::api:Permission', { check: 'v1:saml:providers:update' }],
'controller::api:v1:SAML.update_provider',
],
},
delete: {
'/providers/:id': [
['middleware::api:Permission', { check: 'v1:saml:providers:delete' }],
'controller::api:v1:SAML.delete_provider',
],
},
}
module.exports = exports = saml_routes

View File

@@ -0,0 +1,18 @@
const cobalt_routes = {
prefix: '/dash/c',
middleware: [
'auth:UserOnly',
],
get: {
'/listing/:resource*': [
'controller::Cobalt.listing',
],
'/form/:resource*': [
'controller::Cobalt.form',
],
},
}
module.exports = exports = cobalt_routes