From 725584181c8de4bae93b85893c42634687e264d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Mili=C4=87?= Date: Thu, 16 Jun 2022 11:15:25 +0200 Subject: [PATCH] bugfix/Integrate Hydra ORA as OIDC Identity Provider --- .../scala/code/model/dataAccess/AuthUser.scala | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/obp-api/src/main/scala/code/model/dataAccess/AuthUser.scala b/obp-api/src/main/scala/code/model/dataAccess/AuthUser.scala index 5ad281316..53581bd60 100644 --- a/obp-api/src/main/scala/code/model/dataAccess/AuthUser.scala +++ b/obp-api/src/main/scala/code/model/dataAccess/AuthUser.scala @@ -947,7 +947,7 @@ def restoreSomeSessions(): Unit = { */ override def login: NodeSeq = { // This query parameter is specific to Hydra ORA login request - val loginChallenge = S.param("login_challenge").getOrElse("") + val loginChallenge: Box[String] = S.param("login_challenge").or(S.getSessionAttribute("login_challenge")) def redirectUri(): String = { loginRedirect.get match { case Full(url) => @@ -980,12 +980,16 @@ def restoreSomeSessions(): Unit = { // If there is the query parameter login_challenge in a url we know it is tha Hydra request // TODO Write standalone application for Login and Consent Request of Hydra as Identity Provider integrateWithHydra match { - case true if !loginChallenge.isEmpty => - val acceptLoginRequest = new AcceptLoginRequest - val adminApi: AdminApi = new AdminApi - acceptLoginRequest.setSubject(user.username.get) - val result = adminApi.acceptLoginRequest(loginChallenge, acceptLoginRequest) - S.redirectTo(result.getRedirectTo) + case true => + if (loginChallenge.isEmpty == false) { + val acceptLoginRequest = new AcceptLoginRequest + val adminApi: AdminApi = new AdminApi + acceptLoginRequest.setSubject(user.username.get) + val result = adminApi.acceptLoginRequest(loginChallenge.getOrElse(""), acceptLoginRequest) + S.redirectTo(result.getRedirectTo) + } else { + S.redirectTo(redirect) + } case false => S.redirectTo(redirect) }