mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 17:56:46 +00:00
Merge pull request #245 from marko-md/develop
Add Roles for CanCreateEntitlement etc. #244 - Can now add entitlement if superAdmin or have the role
This commit is contained in:
commit
a664dd3b91
@ -45,9 +45,21 @@ object ApiRole {
|
||||
case object CanGetEntitlementsForAnyUserAtOneBank extends ApiRole{
|
||||
val requiresBankId = true
|
||||
}
|
||||
case object CanCreateEntitlementAtOneBank extends ApiRole{
|
||||
val requiresBankId = true
|
||||
}
|
||||
case object CanDeleteEntitlementAtOneBank extends ApiRole{
|
||||
val requiresBankId = true
|
||||
}
|
||||
case object CanGetEntitlementsForAnyUserAtAnyBank extends ApiRole{
|
||||
val requiresBankId = false
|
||||
}
|
||||
case object CanCreateEntitlementAtAnyBank extends ApiRole{
|
||||
val requiresBankId = false
|
||||
}
|
||||
case object CanDeleteEntitlementAtAnyBank extends ApiRole{
|
||||
val requiresBankId = false
|
||||
}
|
||||
case object CanGetConsumers extends ApiRole{
|
||||
val requiresBankId = false
|
||||
}
|
||||
@ -81,7 +93,11 @@ object ApiRole {
|
||||
case "CanGetSocialMediaHandles" => CanGetSocialMediaHandles
|
||||
case "CanCreateSandbox" => CanCreateSandbox
|
||||
case "CanGetEntitlementsForAnyUserAtOneBank" => CanGetEntitlementsForAnyUserAtOneBank
|
||||
case "CanCreateEntitlementAtOneBank" => CanCreateEntitlementAtOneBank
|
||||
case "CanDeleteEntitlementAtOneBank" => CanDeleteEntitlementAtOneBank
|
||||
case "CanGetEntitlementsForAnyUserAtAnyBank" => CanGetEntitlementsForAnyUserAtAnyBank
|
||||
case "CanCreateEntitlementAtAnyBank" => CanCreateEntitlementAtAnyBank
|
||||
case "CanDeleteEntitlementAtAnyBank" => CanDeleteEntitlementAtAnyBank
|
||||
case "CanGetConsumers" => CanGetConsumers
|
||||
case "CanDisableConsumers" => CanDisableConsumers
|
||||
case "CanEnableConsumers" => CanEnableConsumers
|
||||
@ -104,7 +120,11 @@ object ApiRole {
|
||||
"CanGetSocialMediaHandles" ::
|
||||
"CanCreateSandbox" ::
|
||||
"CanGetEntitlementsForAnyUserAtOneBank" ::
|
||||
"CanCreateEntitlementAtOneBank" ::
|
||||
"CanDeleteEntitlementAtOneBank" ::
|
||||
"CanGetEntitlementsForAnyUserAtAnyBank" ::
|
||||
"CanCreateEntitlementAtAnyBank" ::
|
||||
"CanDeleteEntitlementAtAnyBank" ::
|
||||
"CanGetConsumers" ::
|
||||
"CanDisableConsumers" ::
|
||||
"CanEnableConsumers" ::
|
||||
|
||||
@ -1788,14 +1788,18 @@ trait APIMethods200 {
|
||||
user =>
|
||||
for {
|
||||
u <- user ?~ ErrorMessages.UserNotLoggedIn
|
||||
isSuperAdmin <- booleanToBox(isSuperAdmin(u.userId)) ?~ "Logged user is not super admin!"
|
||||
user <- User.findByUserId(userId) ?~! ErrorMessages.UserNotFoundById
|
||||
postedData <- tryo{json.extract[CreateEntitlementJSON]} ?~ "wrong format JSON"
|
||||
role <- tryo{valueOf(postedData.role_name)} ?~! "wrong role name"
|
||||
isBankOrSystemRoleOk <- booleanToBox(ApiRole.valueOf(postedData.role_name).requiresBankId == postedData.bank_id.nonEmpty) ?~!
|
||||
{if (ApiRole.valueOf(postedData.role_name).requiresBankId) ErrorMessages.EntitlementIsBankRole else ErrorMessages.EntitlementIsSystemRole}
|
||||
allowedEntitlements = CanCreateEntitlementAtOneBank ::
|
||||
CanCreateEntitlementAtAnyBank ::
|
||||
Nil
|
||||
isSuperAdmin <- booleanToBox(isSuperAdmin(u.userId) || hasAtLeastOneEntitlement(postedData.bank_id, u.userId, allowedEntitlements) == true) ?~ {"Logged user is not super admin or does not have entitlements: " + allowedEntitlements.mkString(", ") + "!"}
|
||||
bank <- booleanToBox(Bank(BankId(postedData.bank_id)).isEmpty == false || postedData.bank_id.nonEmpty == false) ?~! {ErrorMessages.BankNotFound}
|
||||
role <- tryo{valueOf(postedData.role_name)} ?~! "wrong role name"
|
||||
hasEntitlement <- booleanToBox(hasEntitlement(postedData.bank_id, userId, role) == false, "Entitlement already exists for the user.")
|
||||
hasEntitlement <- booleanToBox(hasEntitlement(postedData.bank_id, userId, role) == false, "Entitlement already exists for the user." )
|
||||
addedEntitlement <- Entitlement.entitlement.vend.addEntitlement(postedData.bank_id, userId, postedData.role_name)
|
||||
} yield {
|
||||
val viewJson = JSONFactory200.createEntitlementJSON(addedEntitlement)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user