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:
Simon Redfern 2016-11-21 20:20:19 +01:00 committed by GitHub
commit a664dd3b91
2 changed files with 26 additions and 2 deletions

View File

@ -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" ::

View File

@ -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)