Skip to content

Commit

Permalink
Merge 6b212ad into f09c317
Browse files Browse the repository at this point in the history
  • Loading branch information
thimo-schneider committed Oct 21, 2021
2 parents f09c317 + 6b212ad commit 359ef37
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
12 changes: 10 additions & 2 deletions src/main/scala/com/campudus/tableaux/RequestContext.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.campudus.tableaux
import com.campudus.tableaux.helper.JsonUtils
import io.vertx.core.json.JsonArray
import org.vertx.scala.core.json.{Json, JsonObject}
import io.vertx.scala.ext.web.Cookie

object RequestContext {
def apply(): RequestContext = new RequestContext()
Expand All @@ -16,8 +17,8 @@ class RequestContext() {
// for testing purposes, unit tests must reset the principal in setUp method
def resetPrincipal(): Unit = principal = Json.emptyObj()

def getPrincipleString(name: String, defaultValue: String): String = {
principal.getString(name, defaultValue)
def getPrincipleString(name: String): String = {
principal.getString(name)
}

def getUserRoles: Seq[String] = {
Expand All @@ -28,4 +29,11 @@ class RequestContext() {

JsonUtils.asSeqOf[String](roles)
}

// field has to be mutable and is only set from RouterRegistry::routes
var cookies: Set[Cookie] = Set.empty[Cookie] // scalastyle:ignore

def getCookieValue(name: String, defaultValue: String = "dev"): String = {
cookies.find(_.getName() == name).map(_.getValue()).getOrElse(defaultValue)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,8 @@ case class CreateHistoryModel(tableauxModel: TableauxModel, connection: Database
val attachmentModel = AttachmentModel(connection)

private def getUserName: String = {
requestContext.getPrincipleString("preferred_username", "dev")
Option(requestContext.getPrincipleString("preferred_username"))
.getOrElse(requestContext.getCookieValue("userName", "unknown"))
}

private def retrieveCurrentLinkIds(table: Table, column: LinkColumn, rowId: RowId): Future[Seq[RowId]] = {
Expand Down
11 changes: 10 additions & 1 deletion src/main/scala/com/campudus/tableaux/router/RouterRegistry.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ import com.typesafe.scalalogging.LazyLogging
import io.vertx.lang.scala.VertxExecutionContext
import io.vertx.scala.core.Vertx
import io.vertx.scala.ext.auth.oauth2.providers.KeycloakAuth
import io.vertx.scala.ext.web.Router
import io.vertx.scala.ext.web.{Router, RoutingContext}
import io.vertx.scala.ext.web.handler.OAuth2AuthHandler
import io.vertx.scala.ext.web.handler.CookieHandler

object RouterRegistry extends LazyLogging {

Expand All @@ -27,6 +28,8 @@ object RouterRegistry extends LazyLogging {
val mainRouter: Router = Router.router(vertx)

implicit val requestContext: RequestContext = RequestContext()
mainRouter.route().handler(CookieHandler.create())
mainRouter.route().handler(retrieveCookies)

if (isAuthorization) {
val keycloakAuthProvider = KeycloakAuth.create(vertx, tableauxConfig.authConfig)
Expand Down Expand Up @@ -72,4 +75,10 @@ object RouterRegistry extends LazyLogging {

mainRouter
}

private def retrieveCookies(context: RoutingContext)(implicit requestContext: RequestContext): Unit = {
requestContext.cookies = context.cookies().toSet
context.next()
}

}

0 comments on commit 359ef37

Please sign in to comment.