diff --git a/obp-api/src/main/scala/code/api/util/DBUtil.scala b/obp-api/src/main/scala/code/api/util/DBUtil.scala new file mode 100644 index 000000000..f3f4901da --- /dev/null +++ b/obp-api/src/main/scala/code/api/util/DBUtil.scala @@ -0,0 +1,31 @@ +package code.api.util + +import code.api.Constant + +object DBUtil { + def dbUrl: String = APIUtil.getPropsValue("db.url") openOr Constant.h2DatabaseDefaultUrlValue + + def getDbConnectionParameters: (String, String, String) = { + dbUrl.contains("jdbc:h2") match { + case true => getH2DbConnectionParameters + case false => getOtherDbConnectionParameters + } + } + + private def getOtherDbConnectionParameters: (String, String, String) = { + val usernameAndPassword = dbUrl.split("\\?").filter(_.contains("user")).mkString + val username = usernameAndPassword.split("&").filter(_.contains("user")).mkString.split("=")(1) + val password = usernameAndPassword.split("&").filter(_.contains("password")).mkString.split("=")(1) + val dbUser = APIUtil.getPropsValue("db.user").getOrElse(username) + val dbPassword = APIUtil.getPropsValue("db.password").getOrElse(password) + (dbUrl, dbUser, dbPassword) + } + // H2 database has specific bd url string which is different compared to other databases + private def getH2DbConnectionParameters: (String, String, String) = { + val username = dbUrl.split(";").filter(_.contains("user")).toList.headOption.map(_.split("=")(1)) + val password = dbUrl.split(";").filter(_.contains("password")).toList.headOption.map(_.split("=")(1)) + val dbUser = APIUtil.getPropsValue("db.user").orElse(username) + val dbPassword = APIUtil.getPropsValue("db.password").orElse(password) + (dbUrl, dbUser.getOrElse(""), dbPassword.getOrElse("")) + } +} diff --git a/obp-api/src/main/scala/code/api/util/ErrorMessages.scala b/obp-api/src/main/scala/code/api/util/ErrorMessages.scala index d34cff08b..4dd639ddb 100644 --- a/obp-api/src/main/scala/code/api/util/ErrorMessages.scala +++ b/obp-api/src/main/scala/code/api/util/ErrorMessages.scala @@ -2,8 +2,10 @@ package code.api.util import java.util.Objects import java.util.regex.Pattern + import com.openbankproject.commons.model.enums.TransactionRequestStatus._ import code.api.Constant._ +import code.api.util.ApiRole.CanCreateAnyTransactionRequest object ErrorMessages { import code.api.util.APIUtil._ @@ -532,7 +534,7 @@ object ErrorMessages { val InsufficientAuthorisationToCreateTransactionRequest = "OBP-40002: Insufficient authorisation to create TransactionRequest. " + "The Transaction Request could not be created " + "because the login user doesn't have access to the view of the from account " + - "or the view don't have the `canAddTransactionRequestToAnyAccount` permission " + + s"or the view don't have the `${CanCreateAnyTransactionRequest.toString()}` permission " + "or your consumer doesn't not have the access to the view of the from account " + "or you don't have the role CanCreateAnyTransactionRequest." val InvalidTransactionRequestCurrency = "OBP-40003: Transaction Request Currency must be the same as From Account Currency." diff --git a/obp-api/src/main/scala/code/api/util/migration/MigrationOfConsentAuthContextDropIndex.scala b/obp-api/src/main/scala/code/api/util/migration/MigrationOfConsentAuthContextDropIndex.scala index 57abab8ae..3a25f41d2 100644 --- a/obp-api/src/main/scala/code/api/util/migration/MigrationOfConsentAuthContextDropIndex.scala +++ b/obp-api/src/main/scala/code/api/util/migration/MigrationOfConsentAuthContextDropIndex.scala @@ -1,6 +1,6 @@ package code.api.util.migration -import code.api.util.APIUtil +import code.api.util.{APIUtil, DBUtil} import code.api.util.migration.Migration.{DbFunction, saveLog} import code.context.MappedConsentAuthContext import net.liftweb.common.Full @@ -18,15 +18,6 @@ object MigrationOfConsentAuthContextDropIndex { val oneDayAgo = ZonedDateTime.now(ZoneId.of("UTC")).minusDays(1) val oneYearInFuture = ZonedDateTime.now(ZoneId.of("UTC")).plusYears(1) val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm'Z'") - - private lazy val getDbConnectionParameters: (String, String, String) = { - val dbUrl = APIUtil.getPropsValue("db.url") openOr Constant.h2DatabaseDefaultUrlValue - val username = dbUrl.split(";").filter(_.contains("user")).toList.headOption.map(_.split("=")(1)) - val password = dbUrl.split(";").filter(_.contains("password")).toList.headOption.map(_.split("=")(1)) - val dbUser = APIUtil.getPropsValue("db.user").orElse(username) - val dbPassword = APIUtil.getPropsValue("db.password").orElse(password) - (dbUrl, dbUser.getOrElse(""), dbPassword.getOrElse("")) - } /** * this connection pool context corresponding db.url in default.props @@ -39,7 +30,7 @@ object MigrationOfConsentAuthContextDropIndex { validationQuery = "select 1", connectionPoolFactoryName = "commons-dbcp2" ) - val (dbUrl, user, password) = getDbConnectionParameters + val (dbUrl, user, password) = DBUtil.getDbConnectionParameters val dbName = "DB_NAME" // corresponding props db.url DB ConnectionPool.add(dbName, dbUrl, user, password, settings) val connectionPool = ConnectionPool.get(dbName) diff --git a/obp-api/src/main/scala/code/api/util/migration/MigrationOfMappedBadLoginAttemptDropIndex.scala b/obp-api/src/main/scala/code/api/util/migration/MigrationOfMappedBadLoginAttemptDropIndex.scala index c29e71e68..4f6ceb1f6 100644 --- a/obp-api/src/main/scala/code/api/util/migration/MigrationOfMappedBadLoginAttemptDropIndex.scala +++ b/obp-api/src/main/scala/code/api/util/migration/MigrationOfMappedBadLoginAttemptDropIndex.scala @@ -1,14 +1,13 @@ package code.api.util.migration import code.api.Constant -import code.api.util.APIUtil +import code.api.util.{APIUtil, DBUtil} import code.api.util.migration.Migration.{DbFunction, saveLog} import code.loginattempts.MappedBadLoginAttempt import net.liftweb.mapper.{DB, Schemifier} import net.liftweb.util.DefaultConnectionIdentifier import scalikejdbc.DB.CPContext import scalikejdbc._ - import java.time.format.DateTimeFormatter import java.time.{ZoneId, ZonedDateTime} @@ -17,15 +16,6 @@ object MigrationOfMappedBadLoginAttemptDropIndex { val oneDayAgo = ZonedDateTime.now(ZoneId.of("UTC")).minusDays(1) val oneYearInFuture = ZonedDateTime.now(ZoneId.of("UTC")).plusYears(1) val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm'Z'") - - private lazy val getDbConnectionParameters: (String, String, String) = { - val dbUrl = APIUtil.getPropsValue("db.url") openOr Constant.h2DatabaseDefaultUrlValue - val username = dbUrl.split(";").filter(_.contains("user")).toList.headOption.map(_.split("=")(1)) - val password = dbUrl.split(";").filter(_.contains("password")).toList.headOption.map(_.split("=")(1)) - val dbUser = APIUtil.getPropsValue("db.user").orElse(username) - val dbPassword = APIUtil.getPropsValue("db.password").orElse(password) - (dbUrl, dbUser.getOrElse(""), dbPassword.getOrElse("")) - } /** * this connection pool context corresponding db.url in default.props @@ -38,7 +28,7 @@ object MigrationOfMappedBadLoginAttemptDropIndex { validationQuery = "select 1", connectionPoolFactoryName = "commons-dbcp2" ) - val (dbUrl, user, password) = getDbConnectionParameters + val (dbUrl, user, password) = DBUtil.getDbConnectionParameters val dbName = "DB_NAME" // corresponding props db.url DB ConnectionPool.add(dbName, dbUrl, user, password, settings) val connectionPool = ConnectionPool.get(dbName) diff --git a/obp-api/src/main/scala/code/api/util/migration/MigrationOfUserAuthContext.scala b/obp-api/src/main/scala/code/api/util/migration/MigrationOfUserAuthContext.scala index 1c5d67eb5..4bf98a4d0 100644 --- a/obp-api/src/main/scala/code/api/util/migration/MigrationOfUserAuthContext.scala +++ b/obp-api/src/main/scala/code/api/util/migration/MigrationOfUserAuthContext.scala @@ -4,7 +4,7 @@ import java.time.format.DateTimeFormatter import java.time.{ZoneId, ZonedDateTime} import code.api.Constant -import code.api.util.APIUtil +import code.api.util.{APIUtil, DBUtil} import code.api.util.migration.Migration.{DbFunction, saveLog} import code.context.MappedUserAuthContext import code.views.system.AccountAccess @@ -19,15 +19,6 @@ object MigrationOfUserAuthContext { val oneDayAgo = ZonedDateTime.now(ZoneId.of("UTC")).minusDays(1) val oneYearInFuture = ZonedDateTime.now(ZoneId.of("UTC")).plusYears(1) val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm'Z'") - - private lazy val getDbConnectionParameters: (String, String, String) = { - val dbUrl = APIUtil.getPropsValue("db.url") openOr Constant.h2DatabaseDefaultUrlValue - val username = dbUrl.split(";").filter(_.contains("user")).toList.headOption.map(_.split("=")(1)) - val password = dbUrl.split(";").filter(_.contains("password")).toList.headOption.map(_.split("=")(1)) - val dbUser = APIUtil.getPropsValue("db.user").orElse(username) - val dbPassword = APIUtil.getPropsValue("db.password").orElse(password) - (dbUrl, dbUser.getOrElse(""), dbPassword.getOrElse("")) - } /** * this connection pool context corresponding db.url in default.props @@ -40,7 +31,7 @@ object MigrationOfUserAuthContext { validationQuery = "select 1", connectionPoolFactoryName = "commons-dbcp2" ) - val (dbUrl, user, password) = getDbConnectionParameters + val (dbUrl, user, password) = DBUtil.getDbConnectionParameters val dbName = "DB_NAME" // corresponding props db.url DB ConnectionPool.add(dbName, dbUrl, user, password, settings) val connectionPool = ConnectionPool.get(dbName) diff --git a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala index 7213f16c0..9ee66be83 100644 --- a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala +++ b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala @@ -867,15 +867,6 @@ object LocalMappedConnector extends Connector with MdcLoggable { getCoreBankAccountsLegacy(bankIdAccountIds: List[BankIdAccountId], callContext: Option[CallContext]) } } - - private lazy val getDbConnectionParameters: (String, String, String) = { - val dbUrl = APIUtil.getPropsValue("db.url") openOr Constant.h2DatabaseDefaultUrlValue - val username = dbUrl.split(";").filter(_.contains("user")).toList.headOption.map(_.split("=")(1)) - val password = dbUrl.split(";").filter(_.contains("password")).toList.headOption.map(_.split("=")(1)) - val dbUser = APIUtil.getPropsValue("db.user").orElse(username) - val dbPassword = APIUtil.getPropsValue("db.password").orElse(password) - (dbUrl, dbUser.getOrElse(""), dbPassword.getOrElse("")) - } /** * this connection pool context corresponding db.url in default.props @@ -888,7 +879,7 @@ object LocalMappedConnector extends Connector with MdcLoggable { validationQuery = "select 1", connectionPoolFactoryName = "commons-dbcp2" ) - val (dbUrl, user, password) = getDbConnectionParameters + val (dbUrl, user, password) = DBUtil.getDbConnectionParameters val dbName = "DB_NAME" // corresponding props db.url DB ConnectionPool.add(dbName, dbUrl, user, password, settings) val connectionPool = ConnectionPool.get(dbName) diff --git a/obp-api/src/main/scala/code/metrics/MappedMetrics.scala b/obp-api/src/main/scala/code/metrics/MappedMetrics.scala index 5441cbf3f..333ec61a8 100644 --- a/obp-api/src/main/scala/code/metrics/MappedMetrics.scala +++ b/obp-api/src/main/scala/code/metrics/MappedMetrics.scala @@ -90,15 +90,6 @@ object MappedMetrics extends APIMetrics with MdcLoggable{ metric.save } - private lazy val getDbConnectionParameters: (String, String, String) = { - val dbUrl = APIUtil.getPropsValue("db.url") openOr Constant.h2DatabaseDefaultUrlValue - val username = dbUrl.split(";").filter(_.contains("user")).toList.headOption.map(_.split("=")(1)) - val password = dbUrl.split(";").filter(_.contains("password")).toList.headOption.map(_.split("=")(1)) - val dbUser = APIUtil.getPropsValue("db.user").orElse(username) - val dbPassword = APIUtil.getPropsValue("db.password").orElse(password) - (dbUrl, dbUser.getOrElse(""), dbPassword.getOrElse("")) - } - private def trueOrFalse(condition: Boolean) = if (condition) sqls"1=1" else sqls"0=1" private def falseOrTrue(condition: Boolean) = if (condition) sqls"0=1" else sqls"1=1" @@ -252,7 +243,7 @@ object MappedMetrics extends APIMetrics with MdcLoggable{ validationQuery = "select 1", connectionPoolFactoryName = "commons-dbcp2" ) - val (dbUrl, user, password) = getDbConnectionParameters + val (dbUrl, user, password) = DBUtil.getDbConnectionParameters val dbName = "DB_NAME" // corresponding props db.url DB ConnectionPool.add(dbName, dbUrl, user, password, settings) val connectionPool = ConnectionPool.get(dbName) @@ -399,7 +390,7 @@ object MappedMetrics extends APIMetrics with MdcLoggable{ val excludeUrlPatternsQueries = extendLikeQuery(excludeUrlPatternsList, false) - val (dbUrl, _, _) = getDbConnectionParameters + val (dbUrl, _, _) = DBUtil.getDbConnectionParameters val result: List[TopApi] = scalikeDB readOnly { implicit session => // MS SQL server has the specific syntax for limiting number of rows @@ -475,7 +466,7 @@ object MappedMetrics extends APIMetrics with MdcLoggable{ val excludeUrlPatternsQueries = extendLikeQuery(excludeUrlPatternsList, false) - val (dbUrl, _, _) = getDbConnectionParameters + val (dbUrl, _, _) = DBUtil.getDbConnectionParameters // MS SQL server has the specific syntax for limiting number of rows val msSqlLimit = if (dbUrl.contains("sqlserver")) sqls"TOP ($limit)" else sqls"" diff --git a/obp-api/src/main/scala/code/webuiprops/MappedWebUiPropsProvider.scala b/obp-api/src/main/scala/code/webuiprops/MappedWebUiPropsProvider.scala index 992dbdc3e..c19d6e935 100644 --- a/obp-api/src/main/scala/code/webuiprops/MappedWebUiPropsProvider.scala +++ b/obp-api/src/main/scala/code/webuiprops/MappedWebUiPropsProvider.scala @@ -49,7 +49,7 @@ object MappedWebUiPropsProvider extends WebUiPropsProvider { } // In case there is a translation we must use it - val language = I18NUtil.currentLocale().getLanguage().toLowerCase() + val language = I18NUtil.currentLocale().toString() val webUiPropsPropertyName = s"${brandSpecificPropertyName}_${language}" val translatedAndOrBrandPropertyName = WebUiProps.find(By(WebUiProps.Name, webUiPropsPropertyName)).isDefined match { case true => webUiPropsPropertyName diff --git a/obp-api/src/main/webapp/consumer-registration.html b/obp-api/src/main/webapp/consumer-registration.html index 2f9c80cb5..a7f9a6665 100644 --- a/obp-api/src/main/webapp/consumer-registration.html +++ b/obp-api/src/main/webapp/consumer-registration.html @@ -174,61 +174,61 @@ Berlin 13359, Germany

Please save it in a secure location.

-
Consumer ID
+
Consumer ID:
123
-
Application Type
+
Application Type:
web
-
Application Name
+
Application Name:
ABC
-
User redirect URL
+
User redirect URL:
ABC
-
Developer Email
+
Developer Email:
abc@example.com
-
App Description
+
App Description:
ABCDEF
-
Client certificate
+
Client certificate:
ABCDEF
-
Consumer Key
+
Consumer Key:
23432432432432
-
Consumer Secret
+
Consumer Secret:
3334543543543
-
OAuth 1.0a Endpoint
+
OAuth 1.0a Endpoint:
endpoint
-
OAuth 1.0a Documentation
+
OAuth 1.0a Documentation:
How to use OAuth for OpenBankProject
-
Dummy Users' Direct Login Tokens
+
Dummy Users' Direct Login Tokens:
Get dummy users' token
-
Direct Login Endpoint
+
Direct Login Endpoint:
endpoint
-
Direct Login Documentation
+
Direct Login Documentation:
How to use Direct Login
@@ -237,7 +237,7 @@ Berlin 13359, Germany
-
OAuth2
+
OAuth2:
oauth2.client_id=auth-code-client