mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 15:27:01 +00:00
Option to split the Mapped tables code into a separate scala project separated by Akka #154 - get rid of implicit foreign key references - in progress
This commit is contained in:
parent
80f03d984f
commit
6749d3fff2
@ -39,6 +39,7 @@ import net.liftweb.common.{Box, Failure, Full}
|
||||
import code.api.UserNotFound
|
||||
import code.views.Views
|
||||
import code.entitlement.Entitlement
|
||||
import code.model.dataAccess.ResourceUser
|
||||
import code.users.Users
|
||||
|
||||
case class UserId(val value : Long) {
|
||||
@ -117,7 +118,19 @@ object User {
|
||||
Users.users.vend.getUserByUserName(userName)
|
||||
}
|
||||
|
||||
def findAll() = {
|
||||
Users.users.vend.getAllUsers()
|
||||
}
|
||||
|
||||
def createResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]) = {
|
||||
Users.users.vend.createResourceUser(provider, providerId, name, email, userId)
|
||||
}
|
||||
|
||||
def createUnsavedResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]) = {
|
||||
Users.users.vend.createUnsavedResourceUser(provider, providerId, name, email, userId)
|
||||
}
|
||||
|
||||
def saveResourceUser(ru: ResourceUser) = {
|
||||
Users.users.vend.saveResourceUser(ru)
|
||||
}
|
||||
}
|
||||
@ -91,12 +91,8 @@ class AuthUser extends MegaProtoUser[AuthUser] with Logger {
|
||||
}
|
||||
|
||||
def createUnsavedResourceUser() : ResourceUser = {
|
||||
ResourceUser.create
|
||||
.name_(username)
|
||||
.email(email)
|
||||
.provider_(getProvider())
|
||||
.providerId(username)
|
||||
//code.model.User.createResourceUser(getProvider(), Some(username), Some(username), Some(email), None).get
|
||||
val user = code.model.User.createUnsavedResourceUser(getProvider(), Some(username), Some(username), Some(email), None).get
|
||||
user
|
||||
}
|
||||
|
||||
def getResourceUsersByEmail(userEmail: String) : List[ResourceUser] = {
|
||||
|
||||
@ -13,8 +13,10 @@ trait CreateAuthUsers {
|
||||
def asSaveable(u : AuthUser) = new Saveable[ResourceUser] {
|
||||
val value = u.createUnsavedResourceUser()
|
||||
def save() = {
|
||||
value.save()
|
||||
u.user(value).save()
|
||||
val usr = code.model.User.saveResourceUser(value)
|
||||
for (uu <- usr) {
|
||||
u.user(uu).save()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import code.metadata.counterparties.{Counterparties, MapperCounterparties}
|
||||
import code.products.Products
|
||||
import code.products.Products.{Product, ProductCode}
|
||||
import code.bankconnectors.{Connector, OBPLimit, OBPOffset}
|
||||
import code.model.dataAccess.{ResourceUser, MappedAccountHolder}
|
||||
import code.model.dataAccess.{MappedAccountHolder, ResourceUser}
|
||||
import code.model._
|
||||
import code.branches.Branches.Branch
|
||||
import code.atms.Atms.Atm
|
||||
@ -162,6 +162,7 @@ trait OBPDataImport extends Loggable {
|
||||
*/
|
||||
protected def setAccountOwner(owner : AccountOwnerUsername, account: BankAccount, createdUsers: List[ResourceUser]): AnyVal = {
|
||||
val resourceUserOwner = createdUsers.find(user => owner == user.name)
|
||||
println("{resourceUserOwner: " + resourceUserOwner)
|
||||
|
||||
resourceUserOwner match {
|
||||
case Some(o) => {
|
||||
@ -522,7 +523,7 @@ trait OBPDataImport extends Loggable {
|
||||
|
||||
|
||||
|
||||
|
||||
val us = code.model.User.findAll().getOrElse(List());
|
||||
logger.info(s"importData is saving ${accountResults.size} accountResults (accounts, views and permissions)..")
|
||||
accountResults.foreach {
|
||||
case (account, views, accOwnerUsernames) =>
|
||||
@ -531,11 +532,11 @@ trait OBPDataImport extends Loggable {
|
||||
views.filterNot(_.isPublic).foreach(v => {
|
||||
//grant the owner access to non-public views
|
||||
//this should always find the owners as that gets verified at an earlier stage, but it's not perfect this way
|
||||
val accOwners = users.map(_.value).filter(u => accOwnerUsernames.exists(name => u.name == name))
|
||||
val accOwners = us.filter(u => accOwnerUsernames.exists(name => u.name == name))
|
||||
accOwners.foreach(Views.views.vend.addPermission(v.uid, _))
|
||||
})
|
||||
|
||||
accOwnerUsernames.foreach(setAccountOwner(_, account.value, users.map(_.value)))
|
||||
accOwnerUsernames.foreach(setAccountOwner(_, account.value, us))
|
||||
}
|
||||
logger.info(s"importData is saving ${transactions.size} transactions (and loading them again)")
|
||||
transactions.foreach { t =>
|
||||
|
||||
@ -23,6 +23,10 @@ object LiftUsers extends Users {
|
||||
ResourceUser.find(By(ResourceUser.name_, userName))
|
||||
}
|
||||
|
||||
override def getAllUsers(): Box[List[ResourceUser]] = {
|
||||
Full(ResourceUser.findAll())
|
||||
}
|
||||
|
||||
override def createResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]): Box[ResourceUser] = {
|
||||
val ru = ResourceUser.create
|
||||
ru.provider_(provider)
|
||||
@ -44,5 +48,32 @@ object LiftUsers extends Users {
|
||||
}
|
||||
Full(ru.saveMe())
|
||||
}
|
||||
|
||||
override def createUnsavedResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]): Box[ResourceUser] = {
|
||||
val ru = ResourceUser.create
|
||||
ru.provider_(provider)
|
||||
providerId match {
|
||||
case Some(v) => ru.providerId(v)
|
||||
case None =>
|
||||
}
|
||||
name match {
|
||||
case Some(v) => ru.name_(v)
|
||||
case None =>
|
||||
}
|
||||
email match {
|
||||
case Some(v) => ru.email(v)
|
||||
case None =>
|
||||
}
|
||||
userId match {
|
||||
case Some(v) => ru.userId_(v)
|
||||
case None =>
|
||||
}
|
||||
Full(ru)
|
||||
}
|
||||
|
||||
override def saveResourceUser(ru: ResourceUser): Box[ResourceUser] = {
|
||||
val r = Full(ru.saveMe())
|
||||
r
|
||||
}
|
||||
|
||||
}
|
||||
@ -24,7 +24,13 @@ trait Users {
|
||||
|
||||
def getUserByUserName(userName: String) : Box[ResourceUser]
|
||||
|
||||
def getAllUsers() : Box[List[ResourceUser]]
|
||||
|
||||
def createResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]) : Box[ResourceUser]
|
||||
|
||||
def createUnsavedResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]) : Box[ResourceUser]
|
||||
|
||||
def saveResourceUser(resourceUser: ResourceUser) : Box[ResourceUser]
|
||||
}
|
||||
|
||||
class RemoteUserCaseClasses {
|
||||
@ -32,7 +38,10 @@ class RemoteUserCaseClasses {
|
||||
case class getUserByProviderId(provider : String, idGivenByProvider : String)
|
||||
case class getUserByUserId(userId : String)
|
||||
case class getUserByUserName(userName : String)
|
||||
case class getAllUsers()
|
||||
case class createResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String])
|
||||
case class createUnsavedResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String])
|
||||
case class saveResourceUser(resourceUser: ResourceUser)
|
||||
}
|
||||
|
||||
object RemoteUserCaseClasses extends RemoteUserCaseClasses
|
||||
@ -378,6 +378,21 @@ object AkkaMapperViews extends Views with Users {
|
||||
}
|
||||
res
|
||||
}
|
||||
def getAllUsers() : Box[List[ResourceUser]] = {
|
||||
val res = try {
|
||||
Full(
|
||||
Await.result(
|
||||
(viewsActor ? ru.getAllUsers()).mapTo[List[ResourceUser]],
|
||||
TIMEOUT
|
||||
)
|
||||
)
|
||||
}
|
||||
catch {
|
||||
case k: ActorKilledException => Empty ~> APIFailure(s"Users not found", 404)
|
||||
case e: Throwable => throw e
|
||||
}
|
||||
res
|
||||
}
|
||||
def createResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]) : Box[ResourceUser] = {
|
||||
val res = try {
|
||||
Full(
|
||||
@ -393,5 +408,35 @@ object AkkaMapperViews extends Views with Users {
|
||||
}
|
||||
res
|
||||
}
|
||||
def createUnsavedResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]) : Box[ResourceUser] = {
|
||||
val res = try {
|
||||
Full(
|
||||
Await.result(
|
||||
(viewsActor ? ru.createUnsavedResourceUser(provider, providerId, name, email, userId)).mapTo[ResourceUser],
|
||||
TIMEOUT
|
||||
)
|
||||
)
|
||||
}
|
||||
catch {
|
||||
case k: ActorKilledException => Empty ~> APIFailure(s"User not created", 404)
|
||||
case e: Throwable => throw e
|
||||
}
|
||||
res
|
||||
}
|
||||
def saveResourceUser(resourceUser: ResourceUser) : Box[ResourceUser] = {
|
||||
val res = try {
|
||||
Full(
|
||||
Await.result(
|
||||
(viewsActor ? ru.saveResourceUser(resourceUser)).mapTo[ResourceUser],
|
||||
TIMEOUT
|
||||
)
|
||||
)
|
||||
}
|
||||
catch {
|
||||
case k: ActorKilledException => Empty ~> APIFailure(s"User not created", 404)
|
||||
case e: Throwable => throw e
|
||||
}
|
||||
res
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -254,6 +254,17 @@ class AkkaMapperViewsActor extends Actor {
|
||||
}
|
||||
}.getOrElse( context.stop(sender) )
|
||||
|
||||
case ru.getAllUsers() =>
|
||||
logger.info("getAllUsers()")
|
||||
|
||||
{
|
||||
for {
|
||||
res <- vu.getAllUsers()
|
||||
} yield {
|
||||
sender ! res
|
||||
}
|
||||
}.getOrElse( context.stop(sender) )
|
||||
|
||||
case ru.createResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]) =>
|
||||
logger.info("createResourceUser(" + provider + ", " + providerId.getOrElse("None") + ", " + name.getOrElse("None") + ", " + email.getOrElse("None") + ", " + userId.getOrElse("None") + ")")
|
||||
|
||||
@ -265,6 +276,28 @@ class AkkaMapperViewsActor extends Actor {
|
||||
}
|
||||
}.getOrElse( context.stop(sender) )
|
||||
|
||||
case ru.createUnsavedResourceUser(provider: String, providerId: Option[String], name: Option[String], email: Option[String], userId: Option[String]) =>
|
||||
logger.info("createUnsavedResourceUser(" + provider + ", " + providerId.getOrElse("None") + ", " + name.getOrElse("None") + ", " + email.getOrElse("None") + ", " + userId.getOrElse("None") + ")")
|
||||
|
||||
{
|
||||
for {
|
||||
res <- vu.createUnsavedResourceUser(provider, providerId, name, email, userId)
|
||||
} yield {
|
||||
sender ! res.asInstanceOf[ResourceUser]
|
||||
}
|
||||
}.getOrElse( context.stop(sender) )
|
||||
|
||||
case ru.saveResourceUser(resourceUser: ResourceUser) =>
|
||||
logger.info("saveResourceUser")
|
||||
|
||||
{
|
||||
for {
|
||||
res <- vu.saveResourceUser(resourceUser)
|
||||
} yield {
|
||||
sender ! res.asInstanceOf[ResourceUser]
|
||||
}
|
||||
}.getOrElse( context.stop(sender) )
|
||||
|
||||
case message => logger.info("[AKKA ACTOR ERROR - REQUEST NOT RECOGNIZED] " + message)
|
||||
}
|
||||
|
||||
|
||||
@ -292,7 +292,7 @@ class SandboxDataLoadingTest extends FlatSpec with SendServerRequests with Shoul
|
||||
foundAccount.publicViews.size should equal(0)
|
||||
}
|
||||
|
||||
val owner = Users.users.vend.getUserByProviderId(defaultProvider, foundAccount.owners.toList.head.name).get
|
||||
val owner = code.model.User.findByProviderId(defaultProvider, foundAccount.owners.toList.head.name).get
|
||||
//there should be an owner view
|
||||
val views = Views.views.vend.permittedViews(owner, foundAccount)
|
||||
val ownerView = views.find(v => v.viewId.value == "owner")
|
||||
@ -591,6 +591,7 @@ class SandboxDataLoadingTest extends FlatSpec with SendServerRequests with Shoul
|
||||
|
||||
banks.foreach(verifyBankCreated)
|
||||
users.foreach(verifyUserCreated)
|
||||
println("accounts: " + accounts)
|
||||
accounts.foreach(verifyAccountCreated)
|
||||
transactions.foreach(verifyTransactionCreated(_, accounts))
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user