Add api_scope target for IAM policy
This commit is contained in:
@@ -2,7 +2,7 @@ const { Controller } = require('libflitter')
|
||||
|
||||
class IAMController extends Controller {
|
||||
static get services() {
|
||||
return [...super.services, 'models']
|
||||
return [...super.services, 'models', 'canon']
|
||||
}
|
||||
|
||||
async check_entity_access(req, res, next) {
|
||||
@@ -111,7 +111,7 @@ class IAMController extends Controller {
|
||||
.message('Invalid access_type. Must be one of: allow, deny.')
|
||||
.api()
|
||||
|
||||
if ( !['application'].includes(req.body.target_type) )
|
||||
if ( !['application', 'api_scope'].includes(req.body.target_type) )
|
||||
return res.status(400)
|
||||
.message('Invalid target_type. Must be one of: application.')
|
||||
.api()
|
||||
@@ -124,6 +124,12 @@ class IAMController extends Controller {
|
||||
return res.status(400)
|
||||
.message('Invalid target_id.')
|
||||
.api()
|
||||
} else if ( req.body.target_type === 'api_scope' ) {
|
||||
const api_scopes = this.canon.get('controller::api:v1:Reflect.api_scopes')()
|
||||
if ( !api_scopes.includes(req.body.target_id) )
|
||||
return res.status(400)
|
||||
.message('Invalid target_id.')
|
||||
.api()
|
||||
}
|
||||
|
||||
const policy = new Policy({
|
||||
@@ -189,7 +195,7 @@ class IAMController extends Controller {
|
||||
.message('Invalid access_type. Must be one of: allow, deny.')
|
||||
.api()
|
||||
|
||||
if ( !['application'].includes(req.body.target_type) )
|
||||
if ( !['application', 'api_scope'].includes(req.body.target_type) )
|
||||
return res.status(400)
|
||||
.message('Invalid target_type. Must be one of: application.')
|
||||
.api()
|
||||
@@ -202,6 +208,12 @@ class IAMController extends Controller {
|
||||
return res.status(400)
|
||||
.message('Invalid target_id.')
|
||||
.api()
|
||||
} else if ( req.body.target_type === 'api_scope' ) {
|
||||
const api_scopes = this.canon.get('controller::api:v1:Reflect.api_scopes')()
|
||||
if ( !api_scopes.includes(req.body.target_id) )
|
||||
return res.status(400)
|
||||
.message('Invalid target_id.')
|
||||
.api()
|
||||
}
|
||||
|
||||
policy.entity_type = req.body.entity_type
|
||||
|
||||
Reference in New Issue
Block a user