1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api.technical.auth
21 
22 import akka.http.scaladsl.model.StatusCodes
23 import akka.http.scaladsl.model.headers.{Authorization, HttpChallenges}
24 import akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing
25 import akka.http.scaladsl.server.directives.Credentials
26 import akka.http.scaladsl.server.{AuthenticationFailedRejection, Directive1}
27 import cats.data.OptionT
28 import cats.syntax.option._
29 import org.make.api.operation.OperationServiceComponent
30 import org.make.api.question.QuestionServiceComponent
31 import org.make.api.technical.MakeDirectives.MakeDirectivesDependencies
32 import org.make.api.technical.{MakeDirectives, OidcAuthenticationNeededRejection, ShortenedNames}
33 import org.make.core.ApplicationName
34 import org.make.core.auth.UserRights
35 import org.make.core.operation.SimpleOperation
36 import org.make.core.operation.OperationKind.SecuredConsultation
37 import org.make.core.question.{Question, QuestionId}
38 import org.make.core.user.Role.{RoleAdmin, RoleSuperAdmin}
39 import scalaoauth2.provider._
40 
41 import java.time.Instant
42 import scala.concurrent.{Await, Future}
43 import scala.concurrent.ExecutionContext.Implicits.global
44 import scala.concurrent.duration._
45 
46 /**
47   * Mostly taken from https://github.com/nulab/akka-http-oauth2-provider with added support for redirect
48   */
49 trait MakeAuthentication extends ShortenedNames with MakeDirectives {
50   self: MakeDirectivesDependencies with QuestionServiceComponent with OperationServiceComponent =>
51 
52   val realm = "make.org API"
53 
54   // Admins and Super Admins can access secured operations without OIDC
55   private val OIDC_ALLOWED_MAKE_ROLES = List(RoleAdmin, RoleSuperAdmin)
56 
57   def oidcAuth(questionId: QuestionId, now: Instant = Instant.now()): Directive1[AuthInfo[UserRights]] =
58     makeOAuth2.flatMap { authInfo =>
59       val securedOperation = Await.result(getSecuredOperation(questionService.getQuestion(questionId)), 5.seconds)
60       securedOperation match {
61         case Some(operation -> _) =>
62           if (authInfo.user.roles.intersect(OIDC_ALLOWED_MAKE_ROLES).nonEmpty) provide(authInfo)
63           else {
64             val nowSeconds = now.toEpochMilli / 1000
65             authInfo.user.oidcInfos.flatMap(_.get(operation.operationId)) match {
66               case Some(oidcInfo) if oidcInfo.exp >= nowSeconds => provide(authInfo)
67               case Some(oidcInfo) if oidcInfo.exp < nowSeconds =>
68                 reject(OidcAuthenticationNeededRejection(StatusCodes.Forbidden, None))
69               case _ => reject(OidcAuthenticationNeededRejection(StatusCodes.Forbidden, None))
70             }
71           }
72         case None => provide(authInfo)
73       }
74     }
75 
76   def optionalOidcAuth(questionId: QuestionId, now: Instant = Instant.now()): Directive1[Option[AuthInfo[UserRights]]] =
77     optionalOidcAuthBySlug(questionId.value, now, Some(questionService.getQuestion(questionId)))
78 
79   def optionalOidcAuthBySlug(
80     questionSlugOrQuestionId: String,
81     now: Instant = Instant.now(),
82     getQuestion: Option[Future[Option[Question]]] = None,
83     oidcConfigOnErrorResponse: Boolean = false
84   ): Directive1[Option[AuthInfo[UserRights]]] = {
85     optionalMakeOAuth2.flatMap { maybeAuthInfo =>
86       val securedOperation = Await.result(
87         getSecuredOperation(
88           getQuestion.getOrElse(questionService.getQuestionByQuestionIdValueOrSlug(questionSlugOrQuestionId))
89         ),
90         5.seconds
91       )
92       (securedOperation, maybeAuthInfo) match {
93         // Admins can access secured operations without OIDC
94         case (Some(_), Some(authInfo)) if authInfo.user.roles.intersect(OIDC_ALLOWED_MAKE_ROLES).nonEmpty =>
95           provide(maybeAuthInfo)
96         case (Some(operation -> questionId), Some(authInfo)) =>
97           val nowSeconds = now.toEpochMilli / 1000
98           authInfo.user.oidcInfos.flatMap(_.get(operation.operationId)) match {
99             case Some(oidcInfo) if oidcInfo.exp >= nowSeconds => provide(maybeAuthInfo)
100             case Some(oidcInfo) if oidcInfo.exp < nowSeconds =>
101               if (oidcConfigOnErrorResponse)
102                 reject(
103                   OidcAuthenticationNeededRejection(
104                     StatusCodes.Forbidden,
105                     operation.operationAuthentication.flatMap(_.oidc.map(_.simple(questionId)))
106                   )
107                 )
108               else reject(OidcAuthenticationNeededRejection(StatusCodes.Forbidden, None))
109             case _ =>
110               if (oidcConfigOnErrorResponse)
111                 reject(
112                   OidcAuthenticationNeededRejection(
113                     StatusCodes.Forbidden,
114                     operation.operationAuthentication.flatMap(_.oidc.map(_.simple(questionId)))
115                   )
116                 )
117               else reject(OidcAuthenticationNeededRejection(StatusCodes.Forbidden, None))
118           }
119         case (Some(operation -> questionId), None) =>
120           if (oidcConfigOnErrorResponse)
121             reject(
122               OidcAuthenticationNeededRejection(
123                 StatusCodes.Unauthorized,
124                 operation.operationAuthentication.flatMap(_.oidc.map(_.simple(questionId)))
125               )
126             )
127           else reject(OidcAuthenticationNeededRejection(StatusCodes.Unauthorized, None))
128         case (None, _) => provide(maybeAuthInfo)
129       }
130     }
131   }
132 
133   private def getSecuredOperation(
134     getQuestion: Future[Option[Question]]
135   ): Future[Option[(SimpleOperation, QuestionId)]] = {
136     (for {
137       question                <- OptionT(getQuestion)
138       operationId             <- question.operationId.toOptionT[Future]
139       operation               <- OptionT(operationService.findOneSimple(operationId))
140       operationAuthentication <- operation.operationAuthentication.toOptionT[Future]
141       if operation.operationKind == SecuredConsultation
142       _ <- operationAuthentication.oidc.toOptionT[Future]
143     } yield operation -> question.questionId).value
144   }
145 
146   def makeOAuth2: Directive1[AuthInfo[UserRights]] = {
147     authenticateOAuth2Async[AuthInfo[UserRights]](realm, oauth2Authenticator)
148   }
149 
150   def optionalMakeOAuth2: Directive1[Option[AuthInfo[UserRights]]] = {
151     makeOAuth2.map(Some(_): Option[AuthInfo[UserRights]]).recover {
152       case AuthenticationFailedRejection(_, _) +: _ => provide(None)
153       case rejections                               => reject(rejections: _*)
154     }
155   }
156 
157   private def oauth2Authenticator(credentials: Credentials): Future[Option[AuthInfo[UserRights]]] =
158     credentials match {
159       case Credentials.Provided(token) =>
160         oauth2DataHandler.findAccessToken(token).flatMap {
161           case Some(t) => oauth2DataHandler.findAuthInfoByAccessToken(t)
162           case None    => Future.successful(None)
163         }
164       case _ => Future.successful(None)
165     }
166 
167   def secureCookieValue(applicationName: Option[ApplicationName]): Directive1[Option[String]] = {
168     optionalCookieValue(makeSettings.SecureCookie.name, applicationName)
169   }
170 
171   def extractToken(applicationName: Option[ApplicationName]): Directive1[Option[String]] = {
172     for {
173       maybeCookie        <- secureCookieValue(applicationName)
174       maybeAuthorization <- optionalHeaderValueByType(Authorization)
175     } yield maybeCookie.orElse(maybeAuthorization.map(_.credentials.token()))
176   }
177 
178   def requireToken(applicationName: Option[ApplicationName]): Directive1[String] = {
179     extractToken(applicationName).flatMap {
180       case Some(token) => provide(token)
181       case None =>
182         mapInnerRoute { _ =>
183           reject(AuthenticationFailedRejection(cause = CredentialsMissing, challenge = HttpChallenges.oAuth2(realm)))
184         }.tmap(_ => "")
185     }
186   }
187 }
Line Stmt Id Pos Tree Symbol Tests Code
52 49646 2232 - 2246 Literal <nosymbol> org.make.api.user.adminuserapitest "make.org API"
55 41081 2365 - 2374 Select org.make.core.user.Role.RoleAdmin org.make.api.user.adminuserapitest org.make.core.user.Role.RoleAdmin
55 46256 2360 - 2391 Apply scala.collection.IterableFactory.apply org.make.api.user.adminuserapitest scala.`package`.List.apply[org.make.core.user.Role](org.make.core.user.Role.RoleAdmin, org.make.core.user.Role.RoleSuperAdmin)
55 34245 2376 - 2390 Select org.make.core.user.Role.RoleSuperAdmin org.make.api.user.adminuserapitest org.make.core.user.Role.RoleSuperAdmin
58 32879 2521 - 2521 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.proposal.proposalapitest util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]
58 44907 2502 - 3378 ApplyToImplicitArgs akka.http.scaladsl.server.Directive.SingleValueTransformers.flatMap org.make.api.proposal.proposalapitest server.this.Directive.SingleValueTransformers[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](MakeAuthentication.this.makeOAuth2).flatMap[(scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights],)](((authInfo: scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]) => { val securedOperation: Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)] = scala.concurrent.Await.result[Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)]](MakeAuthentication.this.getSecuredOperation(MakeAuthentication.this.questionService.getQuestion(questionId)), scala.concurrent.duration.`package`.DurationInt(5).seconds); securedOperation match { case (value: (org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)): Some[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)]((_1: org.make.core.operation.SimpleOperation, _2: org.make.core.question.QuestionId): (org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)((operation @ _), _)) => if (authInfo.user.roles.intersect[org.make.core.user.Role](MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES).nonEmpty) MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo) else { val nowSeconds: Long = now.toEpochMilli()./(1000); authInfo.user.oidcInfos.flatMap[org.make.core.user.OidcInfo](((x$1: Map[org.make.core.operation.OperationId,org.make.core.user.OidcInfo]) => x$1.get(operation.operationId))) match { case (value: org.make.core.user.OidcInfo): Some[org.make.core.user.OidcInfo]((oidcInfo @ _)) if oidcInfo.exp.>=(nowSeconds) => MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo) case (value: org.make.core.user.OidcInfo): Some[org.make.core.user.OidcInfo]((oidcInfo @ _)) if oidcInfo.exp.<(nowSeconds) => server.this.StandardRoute.toDirective[(scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]) case _ => server.this.StandardRoute.toDirective[(scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]) } } case scala.None => MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo) } }))(util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]])
58 39150 2502 - 2512 Select org.make.api.technical.auth.MakeAuthentication.makeOAuth2 org.make.api.proposal.proposalapitest MakeAuthentication.this.makeOAuth2
59 31858 2639 - 2648 Select scala.concurrent.duration.DurationConversions.seconds scala.concurrent.duration.`package`.DurationInt(5).seconds
59 40785 2639 - 2640 Literal <nosymbol> 5
59 47777 2577 - 2637 Apply org.make.api.technical.auth.MakeAuthentication.getSecuredOperation MakeAuthentication.this.getSecuredOperation(MakeAuthentication.this.questionService.getQuestion(questionId))
59 45695 2564 - 2649 Apply scala.concurrent.Await.result scala.concurrent.Await.result[Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)]](MakeAuthentication.this.getSecuredOperation(MakeAuthentication.this.questionService.getQuestion(questionId)), scala.concurrent.duration.`package`.DurationInt(5).seconds)
59 35268 2597 - 2636 Apply org.make.api.question.QuestionService.getQuestion MakeAuthentication.this.questionService.getQuestion(questionId)
62 41817 2762 - 2785 Select org.make.api.technical.auth.MakeAuthentication.OIDC_ALLOWED_MAKE_ROLES MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES
62 33672 2732 - 2795 Select scala.collection.IterableOnceOps.nonEmpty authInfo.user.roles.intersect[org.make.core.user.Role](MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES).nonEmpty
62 47315 2797 - 2814 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo)
62 39183 2797 - 2814 Block akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo)
63 47606 2830 - 3325 Block <nosymbol> { val nowSeconds: Long = now.toEpochMilli()./(1000); authInfo.user.oidcInfos.flatMap[org.make.core.user.OidcInfo](((x$1: Map[org.make.core.operation.OperationId,org.make.core.user.OidcInfo]) => x$1.get(operation.operationId))) match { case (value: org.make.core.user.OidcInfo): Some[org.make.core.user.OidcInfo]((oidcInfo @ _)) if oidcInfo.exp.>=(nowSeconds) => MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo) case (value: org.make.core.user.OidcInfo): Some[org.make.core.user.OidcInfo]((oidcInfo @ _)) if oidcInfo.exp.<(nowSeconds) => server.this.StandardRoute.toDirective[(scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]) case _ => server.this.StandardRoute.toDirective[(scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]) } }
64 35018 2861 - 2884 Apply scala.Long./ now.toEpochMilli()./(1000)
65 47816 2935 - 2956 Select org.make.core.operation.SimpleOperation.operationId operation.operationId
65 40208 2929 - 2957 Apply scala.collection.MapOps.get x$1.get(operation.operationId)
65 32378 2897 - 2958 Apply scala.Option.flatMap authInfo.user.oidcInfos.flatMap[org.make.core.user.OidcInfo](((x$1: Map[org.make.core.operation.OperationId,org.make.core.user.OidcInfo]) => x$1.get(operation.operationId)))
66 41036 3034 - 3051 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo)
66 45736 3004 - 3030 Apply scala.Long.>= oidcInfo.exp.>=(nowSeconds)
67 33425 3089 - 3114 Apply scala.Long.< oidcInfo.exp.<(nowSeconds)
68 46746 3175 - 3196 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
68 47855 3134 - 3204 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None))
68 31810 3134 - 3204 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]])
68 31328 3141 - 3203 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)
68 38945 3198 - 3202 Select scala.None scala.None
68 39969 3140 - 3140 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]
69 30524 3229 - 3299 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]])
69 47265 3229 - 3299 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None))
69 45488 3270 - 3291 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
69 41068 3293 - 3297 Select scala.None scala.None
69 33462 3236 - 3298 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)
69 38372 3235 - 3235 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]
72 40003 3347 - 3364 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo)
77 47307 3551 - 3596 Apply scala.Some.apply org.make.api.sequence.sequenceapitest scala.Some.apply[scala.concurrent.Future[Option[org.make.core.question.Question]]](MakeAuthentication.this.questionService.getQuestion(questionId))
77 33209 3556 - 3595 Apply org.make.api.question.QuestionService.getQuestion org.make.api.sequence.sequenceapitest MakeAuthentication.this.questionService.getQuestion(questionId)
77 41109 3528 - 3544 Select org.make.core.question.QuestionId.value org.make.api.sequence.sequenceapitest questionId.value
77 31279 3505 - 3597 Apply org.make.api.technical.auth.MakeAuthentication.optionalOidcAuthBySlug org.make.api.sequence.sequenceapitest MakeAuthentication.this.optionalOidcAuthBySlug(questionId.value, now, scala.Some.apply[scala.concurrent.Future[Option[org.make.core.question.Question]]](MakeAuthentication.this.questionService.getQuestion(questionId)), MakeAuthentication.this.optionalOidcAuthBySlug$default$4)
77 39431 3505 - 3505 Select org.make.api.technical.auth.MakeAuthentication.optionalOidcAuthBySlug$default$4 org.make.api.sequence.sequenceapitest MakeAuthentication.this.optionalOidcAuthBySlug$default$4
85 47645 3860 - 3878 Select org.make.api.technical.auth.MakeAuthentication.optionalMakeOAuth2 org.make.api.sequence.sequenceapitest MakeAuthentication.this.optionalMakeOAuth2
85 37422 3860 - 6014 ApplyToImplicitArgs akka.http.scaladsl.server.Directive.SingleValueTransformers.flatMap org.make.api.sequence.sequenceapitest server.this.Directive.SingleValueTransformers[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](MakeAuthentication.this.optionalMakeOAuth2).flatMap[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](((maybeAuthInfo: Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]) => { val securedOperation: Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)] = scala.concurrent.Await.result[Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)]](MakeAuthentication.this.getSecuredOperation(getQuestion.getOrElse[scala.concurrent.Future[Option[org.make.core.question.Question]]](MakeAuthentication.this.questionService.getQuestionByQuestionIdValueOrSlug(questionSlugOrQuestionId))), scala.concurrent.duration.`package`.DurationInt(5).seconds); scala.Tuple2.apply[Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](securedOperation, maybeAuthInfo) match { case (_1: Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], _2: Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]): (Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]])((value: (org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)): Some[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](_), (value: scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]): Some[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]((authInfo @ _))) if authInfo.user.roles.intersect[org.make.core.user.Role](MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES).nonEmpty => MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](maybeAuthInfo) case (_1: Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], _2: Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]): (Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]])((value: (org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)): Some[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)]((_1: org.make.core.operation.SimpleOperation, _2: org.make.core.question.QuestionId): (org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)((operation @ _), (questionId @ _))), (value: scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]): Some[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]((authInfo @ _))) => { val nowSeconds: Long = now.toEpochMilli()./(1000); authInfo.user.oidcInfos.flatMap[org.make.core.user.OidcInfo](((x$2: Map[org.make.core.operation.OperationId,org.make.core.user.OidcInfo]) => x$2.get(operation.operationId))) match { case (value: org.make.core.user.OidcInfo): Some[org.make.core.user.OidcInfo]((oidcInfo @ _)) if oidcInfo.exp.>=(nowSeconds) => MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](maybeAuthInfo) case (value: org.make.core.user.OidcInfo): Some[org.make.core.user.OidcInfo]((oidcInfo @ _)) if oidcInfo.exp.<(nowSeconds) => if (oidcConfigOnErrorResponse) server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$3: org.make.core.operation.OperationAuthentication) => x$3.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$4: org.make.core.operation.OidcConfiguration) => x$4.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]) else server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]) case _ => if (oidcConfigOnErrorResponse) server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$5: org.make.core.operation.OperationAuthentication) => x$5.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$6: org.make.core.operation.OidcConfiguration) => x$6.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]) else server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]) } } case (_1: Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], _2: Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]): (Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]])((value: (org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)): Some[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)]((_1: org.make.core.operation.SimpleOperation, _2: org.make.core.question.QuestionId): (org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)((operation @ _), (questionId @ _))), scala.None) => if (oidcConfigOnErrorResponse) server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$7: org.make.core.operation.OperationAuthentication) => x$7.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$8: org.make.core.operation.OidcConfiguration) => x$8.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]) else server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]) case (_1: Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], _2: Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]): (Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)], Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]])(scala.None, _) => MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](maybeAuthInfo) } }))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
85 45562 3887 - 3887 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.sequence.sequenceapitest util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
86 47058 3935 - 4124 Apply scala.concurrent.Await.result org.make.api.sequence.sequenceapitest scala.concurrent.Await.result[Option[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)]](MakeAuthentication.this.getSecuredOperation(getQuestion.getOrElse[scala.concurrent.Future[Option[org.make.core.question.Question]]](MakeAuthentication.this.questionService.getQuestionByQuestionIdValueOrSlug(questionSlugOrQuestionId))), scala.concurrent.duration.`package`.DurationInt(5).seconds)
87 44943 3957 - 4097 Apply org.make.api.technical.auth.MakeAuthentication.getSecuredOperation org.make.api.sequence.sequenceapitest MakeAuthentication.this.getSecuredOperation(getQuestion.getOrElse[scala.concurrent.Future[Option[org.make.core.question.Question]]](MakeAuthentication.this.questionService.getQuestionByQuestionIdValueOrSlug(questionSlugOrQuestionId)))
88 32916 3988 - 4087 Apply scala.Option.getOrElse org.make.api.sequence.sequenceapitest getQuestion.getOrElse[scala.concurrent.Future[Option[org.make.core.question.Question]]](MakeAuthentication.this.questionService.getQuestionByQuestionIdValueOrSlug(questionSlugOrQuestionId))
88 40529 4010 - 4086 Apply org.make.api.question.QuestionService.getQuestionByQuestionIdValueOrSlug org.make.api.question.questionapitest MakeAuthentication.this.questionService.getQuestionByQuestionIdValueOrSlug(questionSlugOrQuestionId)
90 33251 4107 - 4116 Select scala.concurrent.duration.DurationConversions.seconds org.make.api.sequence.sequenceapitest scala.concurrent.duration.`package`.DurationInt(5).seconds
90 37844 4107 - 4108 Literal <nosymbol> org.make.api.sequence.sequenceapitest 5
94 31317 4276 - 4339 Select scala.collection.IterableOnceOps.nonEmpty authInfo.user.roles.intersect[org.make.core.user.Role](MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES).nonEmpty
94 39469 4306 - 4329 Select org.make.api.technical.auth.MakeAuthentication.OIDC_ALLOWED_MAKE_ROLES MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES
95 48110 4353 - 4375 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](maybeAuthInfo)
97 40567 4467 - 4490 Apply scala.Long./ now.toEpochMilli()./(1000)
98 37875 4501 - 4562 Apply scala.Option.flatMap authInfo.user.oidcInfos.flatMap[org.make.core.user.OidcInfo](((x$2: Map[org.make.core.operation.OperationId,org.make.core.user.OidcInfo]) => x$2.get(operation.operationId)))
98 32664 4539 - 4560 Select org.make.core.operation.SimpleOperation.operationId operation.operationId
98 45478 4533 - 4561 Apply scala.collection.MapOps.get x$2.get(operation.operationId)
99 33159 4606 - 4632 Apply scala.Long.>= oidcInfo.exp.>=(nowSeconds)
99 47094 4636 - 4658 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](maybeAuthInfo)
100 39506 4694 - 4719 Apply scala.Long.< oidcInfo.exp.<(nowSeconds)
102 46258 4784 - 5021 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$3: org.make.core.operation.OperationAuthentication) => x$3.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$4: org.make.core.operation.OidcConfiguration) => x$4.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
102 38730 4784 - 5021 Block akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$3: org.make.core.operation.OperationAuthentication) => x$3.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$4: org.make.core.operation.OidcConfiguration) => x$4.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
102 37638 4784 - 5021 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$3: org.make.core.operation.OperationAuthentication) => x$3.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$4: org.make.core.operation.OidcConfiguration) => x$4.simple(questionId)))))))
102 33200 4790 - 4790 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
103 45513 4810 - 5003 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$3: org.make.core.operation.OperationAuthentication) => x$3.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$4: org.make.core.operation.OidcConfiguration) => x$4.simple(questionId))))))
104 31064 4865 - 4886 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
105 48148 4961 - 4981 Apply org.make.core.operation.OidcConfiguration.simple x$4.simple(questionId)
105 32700 4908 - 4983 Apply scala.Option.flatMap operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$3: org.make.core.operation.OperationAuthentication) => x$3.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$4: org.make.core.operation.OidcConfiguration) => x$4.simple(questionId)))))
105 39718 4950 - 4982 Apply scala.Option.map x$3.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$4: org.make.core.operation.OidcConfiguration) => x$4.simple(questionId)))
108 45259 5047 - 5047 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
108 31101 5082 - 5103 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
108 37674 5041 - 5111 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
108 43637 5105 - 5109 Select scala.None scala.None
108 39758 5048 - 5110 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)
108 34279 5041 - 5111 Block akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
108 32143 5041 - 5111 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None))
111 46010 5201 - 5201 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
111 38195 5195 - 5432 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$5: org.make.core.operation.OperationAuthentication) => x$5.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$6: org.make.core.operation.OidcConfiguration) => x$6.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
111 32653 5195 - 5432 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$5: org.make.core.operation.OperationAuthentication) => x$5.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$6: org.make.core.operation.OidcConfiguration) => x$6.simple(questionId)))))))
111 50225 5195 - 5432 Block akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$5: org.make.core.operation.OperationAuthentication) => x$5.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$6: org.make.core.operation.OidcConfiguration) => x$6.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
112 39796 5221 - 5414 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$5: org.make.core.operation.OperationAuthentication) => x$5.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$6: org.make.core.operation.OidcConfiguration) => x$6.simple(questionId))))))
113 46295 5276 - 5297 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
114 39461 5372 - 5392 Apply org.make.core.operation.OidcConfiguration.simple x$6.simple(questionId)
114 43672 5319 - 5394 Apply scala.Option.flatMap operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$5: org.make.core.operation.OperationAuthentication) => x$5.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$6: org.make.core.operation.OidcConfiguration) => x$6.simple(questionId)))))
114 30851 5361 - 5393 Apply scala.Option.map x$5.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$6: org.make.core.operation.OidcConfiguration) => x$6.simple(questionId)))
117 45768 5452 - 5522 Block akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
117 31613 5459 - 5521 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)
117 39221 5516 - 5520 Select scala.None scala.None
117 32691 5452 - 5522 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
117 46337 5493 - 5514 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
117 44734 5452 - 5522 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None))
117 40858 5458 - 5458 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
121 44178 5642 - 5862 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject org.make.api.question.questionapitest MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$7: org.make.core.operation.OperationAuthentication) => x$7.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$8: org.make.core.operation.OidcConfiguration) => x$8.simple(questionId)))))))
121 45805 5642 - 5862 Block akka.http.scaladsl.server.StandardRoute.toDirective org.make.api.question.questionapitest server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$7: org.make.core.operation.OperationAuthentication) => x$7.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$8: org.make.core.operation.OidcConfiguration) => x$8.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
121 40900 5648 - 5648 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.question.questionapitest util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
121 32451 5642 - 5862 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective org.make.api.question.questionapitest server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$7: org.make.core.operation.OperationAuthentication) => x$7.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$8: org.make.core.operation.OidcConfiguration) => x$8.simple(questionId))))))))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
122 31359 5664 - 5848 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.question.questionapitest org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$7: org.make.core.operation.OperationAuthentication) => x$7.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$8: org.make.core.operation.OidcConfiguration) => x$8.simple(questionId))))))
123 37629 5715 - 5739 Select akka.http.scaladsl.model.StatusCodes.Unauthorized org.make.api.question.questionapitest akka.http.scaladsl.model.StatusCodes.Unauthorized
124 50265 5810 - 5830 Apply org.make.core.operation.OidcConfiguration.simple org.make.api.question.questionapitest x$8.simple(questionId)
124 46838 5799 - 5831 Apply scala.Option.map org.make.api.question.questionapitest x$7.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$8: org.make.core.operation.OidcConfiguration) => x$8.simple(questionId)))
124 39259 5757 - 5832 Apply scala.Option.flatMap org.make.api.question.questionapitest operation.operationAuthentication.flatMap[org.make.core.operation.SimpleOidcConfiguration](((x$7: org.make.core.operation.OperationAuthentication) => x$7.oidc.map[org.make.core.operation.SimpleOidcConfiguration](((x$8: org.make.core.operation.OidcConfiguration) => x$8.simple(questionId)))))
127 46874 5885 - 5950 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.sequence.sequenceapitest org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, scala.None)
127 35796 5878 - 5951 Block akka.http.scaladsl.server.StandardRoute.toDirective org.make.api.sequence.sequenceapitest server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
127 44214 5878 - 5951 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective org.make.api.sequence.sequenceapitest server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, scala.None)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
127 37664 5919 - 5943 Select akka.http.scaladsl.model.StatusCodes.Unauthorized org.make.api.sequence.sequenceapitest akka.http.scaladsl.model.StatusCodes.Unauthorized
127 39019 5878 - 5951 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject org.make.api.sequence.sequenceapitest MakeAuthentication.this.reject(org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Unauthorized, scala.None))
127 50730 5945 - 5949 Select scala.None org.make.api.sequence.sequenceapitest scala.None
127 30842 5884 - 5884 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.sequence.sequenceapitest util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
128 32489 5978 - 6000 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide org.make.api.sequence.sequenceapitest MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](maybeAuthInfo)
137 43472 6193 - 6193 Select scala.concurrent.ExecutionContext.Implicits.global org.make.api.sequence.sequenceapitest scala.concurrent.ExecutionContext.Implicits.global
137 39043 6193 - 6193 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture org.make.api.sequence.sequenceapitest cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
138 50761 6250 - 6270 Select org.make.core.question.Question.operationId question.operationId
138 51075 6223 - 6618 ApplyToImplicitArgs cats.data.OptionT.flatMap cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OperationId](question.operationId).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operationId: org.make.core.operation.OperationId) => cats.data.OptionT.apply[scala.concurrent.Future, org.make.core.operation.SimpleOperation](MakeAuthentication.this.operationService.findOneSimple(operationId)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operation: org.make.core.operation.SimpleOperation) => cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OperationAuthentication](operation.operationAuthentication).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).withFilter(((operationAuthentication: org.make.core.operation.OperationAuthentication) => operation.operationKind.==(org.make.core.operation.OperationKind.SecuredConsultation)))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operationAuthentication: org.make.core.operation.OperationAuthentication) => cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OidcConfiguration](operationAuthentication.oidc).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).map[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((x$9: org.make.core.operation.OidcConfiguration) => (x$9: org.make.core.operation.OidcConfiguration @unchecked) match { case _ => scala.Predef.ArrowAssoc[org.make.core.operation.SimpleOperation](operation).->[org.make.core.question.QuestionId](question.questionId) }))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))
138 39053 6280 - 6280 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
138 37954 6247 - 6247 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
138 47344 6280 - 6280 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
138 45550 6247 - 6247 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
139 36936 6319 - 6319 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
139 33036 6295 - 6618 ApplyToImplicitArgs cats.data.OptionT.flatMap cats.data.OptionT.apply[scala.concurrent.Future, org.make.core.operation.SimpleOperation](MakeAuthentication.this.operationService.findOneSimple(operationId)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operation: org.make.core.operation.SimpleOperation) => cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OperationAuthentication](operation.operationAuthentication).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).withFilter(((operationAuthentication: org.make.core.operation.OperationAuthentication) => operation.operationKind.==(org.make.core.operation.OperationKind.SecuredConsultation)))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operationAuthentication: org.make.core.operation.OperationAuthentication) => cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OidcConfiguration](operationAuthentication.oidc).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).map[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((x$9: org.make.core.operation.OidcConfiguration) => (x$9: org.make.core.operation.OidcConfiguration @unchecked) match { case _ => scala.Predef.ArrowAssoc[org.make.core.operation.SimpleOperation](operation).->[org.make.core.question.QuestionId](question.questionId) }))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))
139 44523 6319 - 6319 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
139 30878 6330 - 6373 Apply org.make.api.operation.OperationService.findOneSimple MakeAuthentication.this.operationService.findOneSimple(operationId)
140 35836 6451 - 6451 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
140 47383 6451 - 6451 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
140 43970 6408 - 6441 Select org.make.core.operation.SimpleOperation.operationAuthentication operation.operationAuthentication
140 39008 6405 - 6405 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
140 51281 6451 - 6451 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
140 31393 6381 - 6618 ApplyToImplicitArgs cats.data.OptionT.flatMap cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OperationAuthentication](operation.operationAuthentication).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).withFilter(((operationAuthentication: org.make.core.operation.OperationAuthentication) => operation.operationKind.==(org.make.core.operation.OperationKind.SecuredConsultation)))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operationAuthentication: org.make.core.operation.OperationAuthentication) => cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OidcConfiguration](operationAuthentication.oidc).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).map[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((x$9: org.make.core.operation.OidcConfiguration) => (x$9: org.make.core.operation.OidcConfiguration @unchecked) match { case _ => scala.Predef.ArrowAssoc[org.make.core.operation.SimpleOperation](operation).->[org.make.core.question.QuestionId](question.questionId) }))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))
140 43436 6405 - 6405 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
140 32953 6451 - 6451 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
141 37456 6469 - 6515 Apply java.lang.Object.== operation.operationKind.==(org.make.core.operation.OperationKind.SecuredConsultation)
141 45043 6496 - 6515 Select org.make.core.operation.OperationKind.SecuredConsultation org.make.core.operation.OperationKind.SecuredConsultation
142 30638 6565 - 6565 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
142 51318 6522 - 6618 ApplyToImplicitArgs cats.data.OptionT.map cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OidcConfiguration](operationAuthentication.oidc).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).map[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((x$9: org.make.core.operation.OidcConfiguration) => (x$9: org.make.core.operation.OidcConfiguration @unchecked) match { case _ => scala.Predef.ArrowAssoc[org.make.core.operation.SimpleOperation](operation).->[org.make.core.question.QuestionId](question.questionId) }))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))
142 44006 6565 - 6565 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
142 39505 6527 - 6555 Select org.make.core.operation.OperationAuthentication.oidc operationAuthentication.oidc
142 37213 6524 - 6524 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
142 45798 6524 - 6524 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
143 32992 6586 - 6618 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.operation.SimpleOperation](operation).->[org.make.core.question.QuestionId](question.questionId)
143 31138 6157 - 6625 Select cats.data.OptionT.value org.make.api.sequence.sequenceapitest cats.data.OptionT.apply[scala.concurrent.Future, org.make.core.question.Question](getQuestion).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((question: org.make.core.question.Question) => cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OperationId](question.operationId).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operationId: org.make.core.operation.OperationId) => cats.data.OptionT.apply[scala.concurrent.Future, org.make.core.operation.SimpleOperation](MakeAuthentication.this.operationService.findOneSimple(operationId)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operation: org.make.core.operation.SimpleOperation) => cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OperationAuthentication](operation.operationAuthentication).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).withFilter(((operationAuthentication: org.make.core.operation.OperationAuthentication) => operation.operationKind.==(org.make.core.operation.OperationKind.SecuredConsultation)))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).flatMap[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((operationAuthentication: org.make.core.operation.OperationAuthentication) => cats.syntax.`package`.option.catsSyntaxOption[org.make.core.operation.OidcConfiguration](operationAuthentication.oidc).toOptionT[scala.concurrent.Future](cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).map[(org.make.core.operation.SimpleOperation, org.make.core.question.QuestionId)](((x$9: org.make.core.operation.OidcConfiguration) => (x$9: org.make.core.operation.OidcConfiguration @unchecked) match { case _ => scala.Predef.ArrowAssoc[org.make.core.operation.SimpleOperation](operation).->[org.make.core.question.QuestionId](question.questionId) }))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global))))(cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)).value
143 36901 6599 - 6618 Select org.make.core.question.Question.questionId question.questionId
147 36699 6743 - 6762 Apply org.make.api.technical.auth.MakeAuthentication.oauth2Authenticator org.make.api.user.adminuserapitest MakeAuthentication.this.oauth2Authenticator(credentials)
147 43960 6736 - 6741 Select org.make.api.technical.auth.MakeAuthentication.realm org.make.api.user.adminuserapitest MakeAuthentication.this.realm
147 49468 6690 - 6763 Apply akka.http.scaladsl.server.directives.SecurityDirectives.authenticateOAuth2Async org.make.api.user.adminuserapitest MakeAuthentication.this.authenticateOAuth2Async[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](MakeAuthentication.this.realm, ((credentials: akka.http.scaladsl.server.directives.Credentials) => MakeAuthentication.this.oauth2Authenticator(credentials)))
151 37173 6859 - 6866 Apply scala.Some.apply scala.Some.apply[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](x$10)
151 49505 6906 - 6906 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.user.adminuserapitest util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
151 45336 6844 - 7060 ApplyToImplicitArgs akka.http.scaladsl.server.Directive.recover org.make.api.user.adminuserapitest server.this.Directive.SingleValueTransformers[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](MakeAuthentication.this.makeOAuth2).map[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](((x$10: scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]) => (scala.Some.apply[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](x$10): Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]])))(util.this.Tupler.forAnyRef[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]).recover[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](((x0$1: Seq[akka.http.scaladsl.server.Rejection]) => x0$1 match { case scala.`package`.+:.unapply[akka.http.scaladsl.server.Rejection, [_]Seq[_], Seq[akka.http.scaladsl.server.Rejection]](<unapply-selector>) <unapply> ((cause: akka.http.scaladsl.server.AuthenticationFailedRejection.Cause, challenge: akka.http.scaladsl.model.headers.HttpChallenge): akka.http.scaladsl.server.AuthenticationFailedRejection(_, _), _) => MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](scala.None) case (rejections @ _) => server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject((rejections: _*)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]) }))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
151 45590 6844 - 6854 Select org.make.api.technical.auth.MakeAuthentication.makeOAuth2 org.make.api.user.adminuserapitest MakeAuthentication.this.makeOAuth2
151 50512 6858 - 6858 TypeApply akka.http.scaladsl.server.util.LowerPriorityTupler.forAnyRef org.make.api.user.adminuserapitest util.this.Tupler.forAnyRef[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
152 38799 6963 - 6976 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide org.make.api.user.adminuserapitest MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](scala.None)
152 43508 6971 - 6975 Select scala.None org.make.api.user.adminuserapitest scala.None
153 36129 7032 - 7054 ApplyToImplicitArgs akka.http.scaladsl.server.StandardRoute.toDirective server.this.StandardRoute.toDirective[(Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]],)](MakeAuthentication.this.reject((rejections: _*)))(util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]])
153 31176 7032 - 7054 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject MakeAuthentication.this.reject((rejections: _*))
153 43709 7038 - 7038 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
160 30928 7240 - 7423 ApplyToImplicitArgs scala.concurrent.Future.flatMap org.make.api.user.adminuserapitest MakeAuthentication.this.oauth2DataHandler.findAccessToken(token).flatMap[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](((x0$1: Option[scalaoauth2.provider.AccessToken]) => x0$1 match { case (value: scalaoauth2.provider.AccessToken): Some[scalaoauth2.provider.AccessToken]((t @ _)) => MakeAuthentication.this.oauth2DataHandler.findAuthInfoByAccessToken(t) case scala.None => scala.concurrent.Future.successful[None.type](scala.None) }))(scala.concurrent.ExecutionContext.Implicits.global)
160 38835 7289 - 7289 Select scala.concurrent.ExecutionContext.Implicits.global org.make.api.user.adminuserapitest scala.concurrent.ExecutionContext.Implicits.global
161 37203 7317 - 7363 Apply scalaoauth2.provider.ProtectedResourceHandler.findAuthInfoByAccessToken MakeAuthentication.this.oauth2DataHandler.findAuthInfoByAccessToken(t)
162 43423 7390 - 7413 Apply scala.concurrent.Future.successful scala.concurrent.Future.successful[None.type](scala.None)
162 50546 7408 - 7412 Select scala.None scala.None
164 36168 7440 - 7463 Apply scala.concurrent.Future.successful org.make.api.user.adminuserapitest scala.concurrent.Future.successful[None.type](scala.None)
164 43743 7458 - 7462 Select scala.None org.make.api.user.adminuserapitest scala.None
168 45373 7573 - 7641 Apply org.make.api.technical.MakeDirectives.optionalCookieValue org.make.api.user.adminuserapitest MakeAuthentication.this.optionalCookieValue(MakeAuthentication.this.makeSettings.SecureCookie.name, applicationName)
168 49974 7593 - 7623 Select org.make.api.extensions.MakeSettings.SecureCookie.name org.make.api.user.adminuserapitest MakeAuthentication.this.makeSettings.SecureCookie.name
173 38273 7778 - 7812 Apply org.make.api.technical.auth.MakeAuthentication.secureCookieValue org.make.api.technical.makedirectivestest MakeAuthentication.this.secureCookieValue(applicationName)
173 50337 7744 - 7959 ApplyToImplicitArgs akka.http.scaladsl.server.Directive.SingleValueTransformers.flatMap org.make.api.technical.makedirectivestest server.this.Directive.SingleValueTransformers[Option[String]](MakeAuthentication.this.secureCookieValue(applicationName)).flatMap[(Option[String],)](((maybeCookie: Option[String]) => server.this.Directive.SingleValueTransformers[Option[akka.http.scaladsl.model.headers.Authorization]](MakeAuthentication.this.optionalHeaderValueByType[akka.http.scaladsl.model.headers.Authorization](directives.this.HeaderMagnet.fromCompanionNormalHeader[akka.http.scaladsl.model.headers.Authorization](akka.http.scaladsl.model.headers.Authorization)((ClassTag.apply[akka.http.scaladsl.model.headers.Authorization](classOf[akka.http.scaladsl.model.headers.Authorization]): scala.reflect.ClassTag[akka.http.scaladsl.model.headers.Authorization])))).map[Option[String]](((maybeAuthorization: Option[akka.http.scaladsl.model.headers.Authorization]) => maybeCookie.orElse[String](maybeAuthorization.map[String](((x$11: akka.http.scaladsl.model.headers.Authorization) => x$11.credentials.token())))))(util.this.Tupler.forAnyRef[Option[String]])))(util.this.Tuple.forTuple1[Option[String]])
173 38304 7775 - 7775 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.technical.makedirectivestest util.this.Tuple.forTuple1[Option[String]]
174 50301 7867 - 7880 Select akka.http.scaladsl.model.headers.Authorization org.make.api.technical.makedirectivestest akka.http.scaladsl.model.headers.Authorization
174 50010 7838 - 7838 TypeApply akka.http.scaladsl.server.util.LowerPriorityTupler.forAnyRef org.make.api.technical.makedirectivestest util.this.Tupler.forAnyRef[Option[String]]
174 43463 7867 - 7880 ApplyToImplicitArgs akka.http.scaladsl.server.directives.LowPriorityHeaderMagnetImplicits.fromCompanionNormalHeader org.make.api.technical.makedirectivestest directives.this.HeaderMagnet.fromCompanionNormalHeader[akka.http.scaladsl.model.headers.Authorization](akka.http.scaladsl.model.headers.Authorization)((ClassTag.apply[akka.http.scaladsl.model.headers.Authorization](classOf[akka.http.scaladsl.model.headers.Authorization]): scala.reflect.ClassTag[akka.http.scaladsl.model.headers.Authorization]))
174 35589 7841 - 7881 Apply akka.http.scaladsl.server.directives.HeaderDirectives.optionalHeaderValueByType org.make.api.technical.makedirectivestest MakeAuthentication.this.optionalHeaderValueByType[akka.http.scaladsl.model.headers.Authorization](directives.this.HeaderMagnet.fromCompanionNormalHeader[akka.http.scaladsl.model.headers.Authorization](akka.http.scaladsl.model.headers.Authorization)((ClassTag.apply[akka.http.scaladsl.model.headers.Authorization](classOf[akka.http.scaladsl.model.headers.Authorization]): scala.reflect.ClassTag[akka.http.scaladsl.model.headers.Authorization])))
174 45840 7819 - 7959 ApplyToImplicitArgs akka.http.scaladsl.server.Directive.SingleValueTransformers.map org.make.api.technical.makedirectivestest server.this.Directive.SingleValueTransformers[Option[akka.http.scaladsl.model.headers.Authorization]](MakeAuthentication.this.optionalHeaderValueByType[akka.http.scaladsl.model.headers.Authorization](directives.this.HeaderMagnet.fromCompanionNormalHeader[akka.http.scaladsl.model.headers.Authorization](akka.http.scaladsl.model.headers.Authorization)((ClassTag.apply[akka.http.scaladsl.model.headers.Authorization](classOf[akka.http.scaladsl.model.headers.Authorization]): scala.reflect.ClassTag[akka.http.scaladsl.model.headers.Authorization])))).map[Option[String]](((maybeAuthorization: Option[akka.http.scaladsl.model.headers.Authorization]) => maybeCookie.orElse[String](maybeAuthorization.map[String](((x$11: akka.http.scaladsl.model.headers.Authorization) => x$11.credentials.token())))))(util.this.Tupler.forAnyRef[Option[String]])
175 36688 7894 - 7959 Apply scala.Option.orElse org.make.api.technical.makedirectivestest maybeCookie.orElse[String](maybeAuthorization.map[String](((x$11: akka.http.scaladsl.model.headers.Authorization) => x$11.credentials.token())))
175 31741 7936 - 7957 Apply akka.http.scaladsl.model.headers.HttpCredentials.token org.make.api.technical.makedirectivestest x$11.credentials.token()
175 43783 7913 - 7958 Apply scala.Option.map org.make.api.technical.makedirectivestest maybeAuthorization.map[String](((x$11: akka.http.scaladsl.model.headers.Authorization) => x$11.credentials.token()))
179 43213 8054 - 8083 Apply org.make.api.technical.auth.MakeAuthentication.extractToken org.make.api.technical.makedirectivestest MakeAuthentication.this.extractToken(applicationName)
179 35383 8092 - 8092 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.technical.makedirectivestest util.this.Tuple.forTuple1[String]
179 30918 8054 - 8330 ApplyToImplicitArgs akka.http.scaladsl.server.Directive.SingleValueTransformers.flatMap org.make.api.technical.makedirectivestest server.this.Directive.SingleValueTransformers[Option[String]](MakeAuthentication.this.extractToken(applicationName)).flatMap[(String,)](((x0$1: Option[String]) => x0$1 match { case (value: String): Some[String]((token @ _)) => MakeAuthentication.this.provide[String](token) case scala.None => MakeAuthentication.this.mapInnerRoute(((x$12: akka.http.scaladsl.server.Route) => MakeAuthentication.this.reject(akka.http.scaladsl.server.AuthenticationFailedRejection.apply(akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing, akka.http.scaladsl.model.headers.HttpChallenges.oAuth2(MakeAuthentication.this.realm))))).tmap[String](((x$13: Unit) => ""))(util.this.Tupler.forAnyRef[String]) }))(util.this.Tuple.forTuple1[String])
180 35626 8120 - 8134 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide org.make.api.technical.makedirectivestest MakeAuthentication.this.provide[String](token)
183 44844 8292 - 8297 Select org.make.api.technical.auth.MakeAuthentication.realm org.make.api.technical.makedirectivestest MakeAuthentication.this.realm
183 30880 8238 - 8256 Select akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing org.make.api.technical.makedirectivestest akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing
183 36723 8270 - 8298 Apply akka.http.scaladsl.model.headers.HttpChallenges.oAuth2 org.make.api.technical.makedirectivestest akka.http.scaladsl.model.headers.HttpChallenges.oAuth2(MakeAuthentication.this.realm)
183 45327 8193 - 8300 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject org.make.api.technical.makedirectivestest MakeAuthentication.this.reject(akka.http.scaladsl.server.AuthenticationFailedRejection.apply(akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing, akka.http.scaladsl.model.headers.HttpChallenges.oAuth2(MakeAuthentication.this.realm)))
183 49759 8200 - 8299 Apply akka.http.scaladsl.server.AuthenticationFailedRejection.apply org.make.api.technical.makedirectivestest akka.http.scaladsl.server.AuthenticationFailedRejection.apply(akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing, akka.http.scaladsl.model.headers.HttpChallenges.oAuth2(MakeAuthentication.this.realm))
184 43256 8162 - 8324 ApplyToImplicitArgs akka.http.scaladsl.server.Directive.tmap org.make.api.technical.makedirectivestest MakeAuthentication.this.mapInnerRoute(((x$12: akka.http.scaladsl.server.Route) => MakeAuthentication.this.reject(akka.http.scaladsl.server.AuthenticationFailedRejection.apply(akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing, akka.http.scaladsl.model.headers.HttpChallenges.oAuth2(MakeAuthentication.this.realm))))).tmap[String](((x$13: Unit) => ""))(util.this.Tupler.forAnyRef[String])
184 37740 8321 - 8323 Literal <nosymbol> org.make.api.technical.makedirectivestest ""
184 50862 8315 - 8315 TypeApply akka.http.scaladsl.server.util.LowerPriorityTupler.forAnyRef org.make.api.technical.makedirectivestest util.this.Tupler.forAnyRef[String]