Merge branch 'develop' of github.com:OpenBankProject/OBP-API into develop

This commit is contained in:
simonredfern 2025-12-17 11:02:48 +01:00
commit d9794277ed
4 changed files with 36 additions and 49 deletions

View File

@ -30,7 +30,7 @@ import code.CustomerDependants.MappedCustomerDependant
import code.DynamicData.DynamicData
import code.DynamicEndpoint.DynamicEndpoint
import code.UserRefreshes.MappedUserRefreshes
import code.abacrule.MappedAbacRule
import code.abacrule.AbacRule
import code.accountapplication.MappedAccountApplication
import code.accountattribute.MappedAccountAttribute
import code.accountholders.MapperAccountHolders
@ -1041,7 +1041,7 @@ object ToSchemify {
MappedRegulatedEntity,
AtmAttribute,
Admin,
MappedAbacRule,
AbacRule,
MappedBank,
MappedBankAccount,
BankAccountRouting,

View File

@ -8,7 +8,7 @@ import net.liftweb.util.Helpers.tryo
import java.util.Date
trait AbacRule {
trait AbacRuleTrait {
def abacRuleId: String
def ruleName: String
def ruleCode: String
@ -18,32 +18,20 @@ trait AbacRule {
def updatedByUserId: String
}
class MappedAbacRule extends AbacRule with LongKeyedMapper[MappedAbacRule] with IdPK with CreatedUpdated {
def getSingleton = MappedAbacRule
class AbacRule extends AbacRuleTrait with LongKeyedMapper[AbacRule] with IdPK with CreatedUpdated {
def getSingleton = AbacRule
object AbacRuleId extends MappedString(this, 255) {
override def defaultValue = APIUtil.generateUUID()
override def dbColumnName = "abac_rule_id"
}
object RuleName extends MappedString(this, 255) {
override def dbColumnName = "rule_name"
}
object RuleCode extends MappedText(this) {
override def dbColumnName = "rule_code"
}
object RuleName extends MappedString(this, 255)
object RuleCode extends MappedText(this)
object IsActive extends MappedBoolean(this) {
override def defaultValue = true
override def dbColumnName = "is_active"
}
object Description extends MappedText(this) {
override def dbColumnName = "description"
}
object CreatedByUserId extends MappedString(this, 255) {
override def dbColumnName = "created_by_user_id"
}
object UpdatedByUserId extends MappedString(this, 255) {
override def dbColumnName = "updated_by_user_id"
}
object Description extends MappedText(this)
object CreatedByUserId extends MappedString(this, 255)
object UpdatedByUserId extends MappedString(this, 255)
override def abacRuleId: String = AbacRuleId.get
override def ruleName: String = RuleName.get
@ -54,23 +42,22 @@ class MappedAbacRule extends AbacRule with LongKeyedMapper[MappedAbacRule] with
override def updatedByUserId: String = UpdatedByUserId.get
}
object MappedAbacRule extends MappedAbacRule with LongKeyedMetaMapper[MappedAbacRule] {
override def dbTableName = "abac_rule"
override def dbIndexes: List[BaseIndex[MappedAbacRule]] = Index(AbacRuleId) :: Index(RuleName) :: Index(CreatedByUserId) :: super.dbIndexes
object AbacRule extends AbacRule with LongKeyedMetaMapper[AbacRule] {
override def dbIndexes: List[BaseIndex[AbacRule]] = Index(AbacRuleId) :: Index(RuleName) :: Index(CreatedByUserId) :: super.dbIndexes
}
trait AbacRuleProvider {
def getAbacRuleById(ruleId: String): Box[AbacRule]
def getAbacRuleByName(ruleName: String): Box[AbacRule]
def getAllAbacRules(): List[AbacRule]
def getActiveAbacRules(): List[AbacRule]
def getAbacRuleById(ruleId: String): Box[AbacRuleTrait]
def getAbacRuleByName(ruleName: String): Box[AbacRuleTrait]
def getAllAbacRules(): List[AbacRuleTrait]
def getActiveAbacRules(): List[AbacRuleTrait]
def createAbacRule(
ruleName: String,
ruleCode: String,
description: String,
isActive: Boolean,
createdBy: String
): Box[AbacRule]
): Box[AbacRuleTrait]
def updateAbacRule(
ruleId: String,
ruleName: String,
@ -78,26 +65,26 @@ trait AbacRuleProvider {
description: String,
isActive: Boolean,
updatedBy: String
): Box[AbacRule]
): Box[AbacRuleTrait]
def deleteAbacRule(ruleId: String): Box[Boolean]
}
object MappedAbacRuleProvider extends AbacRuleProvider {
override def getAbacRuleById(ruleId: String): Box[AbacRule] = {
MappedAbacRule.find(By(MappedAbacRule.AbacRuleId, ruleId))
override def getAbacRuleById(ruleId: String): Box[AbacRuleTrait] = {
AbacRule.find(By(AbacRule.AbacRuleId, ruleId))
}
override def getAbacRuleByName(ruleName: String): Box[AbacRule] = {
MappedAbacRule.find(By(MappedAbacRule.RuleName, ruleName))
override def getAbacRuleByName(ruleName: String): Box[AbacRuleTrait] = {
AbacRule.find(By(AbacRule.RuleName, ruleName))
}
override def getAllAbacRules(): List[AbacRule] = {
MappedAbacRule.findAll()
override def getAllAbacRules(): List[AbacRuleTrait] = {
AbacRule.findAll()
}
override def getActiveAbacRules(): List[AbacRule] = {
MappedAbacRule.findAll(By(MappedAbacRule.IsActive, true))
override def getActiveAbacRules(): List[AbacRuleTrait] = {
AbacRule.findAll(By(AbacRule.IsActive, true))
}
override def createAbacRule(
@ -106,9 +93,9 @@ object MappedAbacRuleProvider extends AbacRuleProvider {
description: String,
isActive: Boolean,
createdBy: String
): Box[AbacRule] = {
): Box[AbacRuleTrait] = {
tryo {
MappedAbacRule.create
AbacRule.create
.RuleName(ruleName)
.RuleCode(ruleCode)
.Description(description)
@ -126,9 +113,9 @@ object MappedAbacRuleProvider extends AbacRuleProvider {
description: String,
isActive: Boolean,
updatedBy: String
): Box[AbacRule] = {
): Box[AbacRuleTrait] = {
for {
rule <- MappedAbacRule.find(By(MappedAbacRule.AbacRuleId, ruleId))
rule <- AbacRule.find(By(AbacRule.AbacRuleId, ruleId))
updatedRule <- tryo {
rule
.RuleName(ruleName)
@ -143,7 +130,7 @@ object MappedAbacRuleProvider extends AbacRuleProvider {
override def deleteAbacRule(ruleId: String): Box[Boolean] = {
for {
rule <- MappedAbacRule.find(By(MappedAbacRule.AbacRuleId, ruleId))
rule <- AbacRule.find(By(AbacRule.AbacRuleId, ruleId))
deleted <- tryo(rule.delete_!)
} yield deleted
}

View File

@ -827,7 +827,7 @@ case class UpdateViewJsonV600(
ViewsJsonV600(views.map(createViewJsonV600))
}
def createAbacRuleJsonV600(rule: code.abacrule.AbacRule): AbacRuleJsonV600 = {
def createAbacRuleJsonV600(rule: code.abacrule.AbacRuleTrait): AbacRuleJsonV600 = {
AbacRuleJsonV600(
abac_rule_id = rule.abacRuleId,
rule_name = rule.ruleName,
@ -839,7 +839,7 @@ case class UpdateViewJsonV600(
)
}
def createAbacRulesJsonV600(rules: List[code.abacrule.AbacRule]): AbacRulesJsonV600 = {
def createAbacRulesJsonV600(rules: List[code.abacrule.AbacRuleTrait]): AbacRulesJsonV600 = {
AbacRulesJsonV600(rules.map(createAbacRuleJsonV600))
}
}

View File

@ -144,9 +144,9 @@ class SystemViewsTest extends V600ServerSetup with DefaultUsers {
val isSystem = (json \ "is_system").values.asInstanceOf[Boolean]
isSystem should equal(true)
And("View should have permissions defined")
val canSeeBalance = (json \ "can_see_bank_account_balance").values.asInstanceOf[Boolean]
canSeeBalance should be(true)
And("View should have permissions defined in allowed_actions")
val allowedActions = (json \ "allowed_actions").values.asInstanceOf[List[String]]
allowedActions should contain("can_see_bank_account_balance")
}
scenario("We try to get different system views by ID - Authorized access", ApiEndpoint2, VersionOfApi) {