From e90daedf6266540bea061f6863fcf8523d3d088e Mon Sep 17 00:00:00 2001 From: Krzysztof Zmij Date: Fri, 28 Aug 2020 09:37:45 +0200 Subject: [PATCH] add keycloak service to insert a user --- .../com/ing/wbaa/rokku/sts/api/AdminApi.scala | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/api/AdminApi.scala b/src/main/scala/com/ing/wbaa/rokku/sts/api/AdminApi.scala index 43298f1..39f40ca 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/api/AdminApi.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/api/AdminApi.scala @@ -19,7 +19,7 @@ trait AdminApi extends LazyLogging with Encryption with JwtToken { protected[this] def stsSettings: StsSettings val adminRoutes: Route = pathPrefix("admin") { - listAllNPAs ~ addNPA ~ addServiceNPA ~ setAccountStatus ~ insertUserToKeycloak + listAllNPAs ~ addNPA ~ addServiceNPA ~ setAccountStatus ~ insertServiceUserToKeycloak ~ insertUserToKeycloak } case class ResponseMessage(code: String, message: String, target: String) @@ -164,4 +164,23 @@ trait AdminApi extends LazyLogging with Encryption with JwtToken { } } } + + def insertServiceUserToKeycloak: Route = logRequestResult("debug") { + post { + path("service" / "keycloak" / "user") { + formFields((Symbol("username"))) { username => + headerValueByName("Authorization") { bearerToken => + if (verifyInternalToken(bearerToken)) { + onComplete(insertUserToKeycloak(UserName(username))) { + case Success(_) => complete(ResponseMessage(s"Add user ok", s"$username added", "keycloak")) + case Failure(ex) => complete(ResponseMessage(s"Add user error", ex.getMessage, "keycloak")) + } + } else { + reject(AuthorizationFailedRejection) + } + } + } + } + } + } }