diff --git a/otoroshi/app/actions/privateapps.scala b/otoroshi/app/actions/privateapps.scala index f9cc3cb6bc..ccb3f95535 100644 --- a/otoroshi/app/actions/privateapps.scala +++ b/otoroshi/app/actions/privateapps.scala @@ -16,10 +16,10 @@ import otoroshi.utils.http.RequestImplicits._ case class PrivateAppsActionContext[A]( request: Request[A], - user: Option[PrivateAppsUser], + users: Seq[PrivateAppsUser], globalConfig: otoroshi.models.GlobalConfig ) { - def connected: Boolean = user.isDefined + def connected: Boolean = users.nonEmpty def from(implicit env: Env): String = request.theIpAddress def ua: String = request.theUserAgent } @@ -47,24 +47,24 @@ class PrivateAppsAction(val parser: BodyParser[AnyContent])(implicit env: Env) env.datastores.privateAppsUserDataStore.findById(id).flatMap { case Some(user) => user.withAuthModuleConfig(a => GenericOauth2Module.handleTokenRefresh(a, user)) - block(PrivateAppsActionContext(request, Some(user), globalConfig)) + block(PrivateAppsActionContext(request, Seq(user), globalConfig)) case None if env.clusterConfig.mode == ClusterMode.Worker => { if (Cluster.logger.isDebugEnabled) Cluster.logger.debug(s"private apps session $id not found locally - from action") env.clusterAgent.isSessionValid(id, Some(request)).flatMap { case Some(user) => user.save(Duration(user.expiredAt.getMillis - System.currentTimeMillis(), TimeUnit.MILLISECONDS)) - block(PrivateAppsActionContext(request, Some(user), globalConfig)) - case None => block(PrivateAppsActionContext(request, None, globalConfig)) + block(PrivateAppsActionContext(request, Seq(user), globalConfig)) + case None => block(PrivateAppsActionContext(request, Seq.empty, globalConfig)) } } - case None => block(PrivateAppsActionContext(request, None, globalConfig)) + case None => block(PrivateAppsActionContext(request, Seq.empty, globalConfig)) } } getOrElse { cookieOpt match { - case None => block(PrivateAppsActionContext(request, None, globalConfig)) + case None => block(PrivateAppsActionContext(request, Seq.empty, globalConfig)) case Some(cookie) => - block(PrivateAppsActionContext(request, None, globalConfig)).fast + block(PrivateAppsActionContext(request, Seq.empty, globalConfig)).fast .map( _.discardingCookies( env.removePrivateSessionCookiesWithSuffix(host, cookie.name.replace("oto-papps-", "")): _* diff --git a/otoroshi/app/controllers/PrivateAppsController.scala b/otoroshi/app/controllers/PrivateAppsController.scala index df9d991ac5..ef13ecc822 100644 --- a/otoroshi/app/controllers/PrivateAppsController.scala +++ b/otoroshi/app/controllers/PrivateAppsController.scala @@ -28,7 +28,7 @@ class PrivateAppsController(ApiAction: ApiAction, PrivateAppsAction: PrivateApps def home = PrivateAppsAction { ctx => - Ok(otoroshi.views.html.privateapps.home(ctx.user, env)) + Ok(otoroshi.views.html.privateapps.home(ctx.users.headOption, env)) } def redirect = diff --git a/otoroshi/app/next/extensions/extension.scala b/otoroshi/app/next/extensions/extension.scala index f137a02935..804a72480f 100644 --- a/otoroshi/app/next/extensions/extension.scala +++ b/otoroshi/app/next/extensions/extension.scala @@ -116,7 +116,7 @@ case class AdminExtensionPrivateAppAuthRoute( handle: ( AdminExtensionRouterContext[AdminExtensionPrivateAppAuthRoute], RequestHeader, - Option[PrivateAppsUser], + Seq[PrivateAppsUser], Option[Source[ByteString, _]] ) => Future[Result] ) extends AdminExtensionRoute @@ -494,10 +494,10 @@ class AdminExtensions(env: Env, _extensions: Seq[AdminExtension]) { privateAppAuthOverridesRouter.find(request) match { case Some(route) if route.adminRoute.wantsBody => Some(PrivateAppsAction.async(sourceBodyParser) { ctx => - route.adminRoute.handle(route, ctx.request, ctx.user, ctx.request.body.some) + route.adminRoute.handle(route, ctx.request, ctx.users, ctx.request.body.some) }) case Some(route) if !route.adminRoute.wantsBody => - Some(PrivateAppsAction.async { ctx => route.adminRoute.handle(route, ctx.request, ctx.user, None) }) + Some(PrivateAppsAction.async { ctx => route.adminRoute.handle(route, ctx.request, ctx.users, None) }) case None => f } } else if (hasExtensions && request.path.startsWith("/extensions/assets/") && assets.nonEmpty) { @@ -517,10 +517,10 @@ class AdminExtensions(env: Env, _extensions: Seq[AdminExtension]) { privateAppAuthRouter.find(request) match { case Some(route) if route.adminRoute.wantsBody => Some(PrivateAppsAction.async(sourceBodyParser) { ctx => - route.adminRoute.handle(route, ctx.request, ctx.user, ctx.request.body.some) + route.adminRoute.handle(route, ctx.request, ctx.users, ctx.request.body.some) }) case Some(route) if !route.adminRoute.wantsBody => - Some(PrivateAppsAction.async { ctx => route.adminRoute.handle(route, ctx.request, ctx.user, None) }) + Some(PrivateAppsAction.async { ctx => route.adminRoute.handle(route, ctx.request, ctx.users, None) }) case None => f } } else f