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 49607 2232 - 2246 Literal <nosymbol> org.make.api.user.adminuserapitest "make.org API"
55 34240 2376 - 2390 Select org.make.core.user.Role.RoleSuperAdmin org.make.api.user.adminuserapitest org.make.core.user.Role.RoleSuperAdmin
55 46220 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 41061 2365 - 2374 Select org.make.core.user.Role.RoleAdmin org.make.api.user.adminuserapitest org.make.core.user.Role.RoleAdmin
58 32874 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 39130 2502 - 2512 Select org.make.api.technical.auth.MakeAuthentication.makeOAuth2 org.make.api.proposal.proposalapitest MakeAuthentication.this.makeOAuth2
58 44874 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]])
59 47741 2577 - 2637 Apply org.make.api.technical.auth.MakeAuthentication.getSecuredOperation MakeAuthentication.this.getSecuredOperation(MakeAuthentication.this.questionService.getQuestion(questionId))
59 35261 2597 - 2636 Apply org.make.api.question.QuestionService.getQuestion MakeAuthentication.this.questionService.getQuestion(questionId)
59 45659 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 31853 2639 - 2648 Select scala.concurrent.duration.DurationConversions.seconds scala.concurrent.duration.`package`.DurationInt(5).seconds
59 40765 2639 - 2640 Literal <nosymbol> 5
62 33667 2732 - 2795 Select scala.collection.IterableOnceOps.nonEmpty authInfo.user.roles.intersect[org.make.core.user.Role](MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES).nonEmpty
62 41795 2762 - 2785 Select org.make.api.technical.auth.MakeAuthentication.OIDC_ALLOWED_MAKE_ROLES MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES
62 39163 2797 - 2814 Block akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo)
62 47279 2797 - 2814 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo)
63 47570 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 35012 2861 - 2884 Apply scala.Long./ now.toEpochMilli()./(1000)
65 32373 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)))
65 47780 2935 - 2956 Select org.make.core.operation.SimpleOperation.operationId operation.operationId
65 40188 2929 - 2957 Apply scala.collection.MapOps.get x$1.get(operation.operationId)
66 45700 3004 - 3030 Apply scala.Long.>= oidcInfo.exp.>=(nowSeconds)
66 41016 3034 - 3051 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo)
67 33420 3089 - 3114 Apply scala.Long.< oidcInfo.exp.<(nowSeconds)
68 46710 3175 - 3196 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
68 38925 3198 - 3202 Select scala.None scala.None
68 47819 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 39949 3140 - 3140 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]
68 31324 3141 - 3203 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)
68 31805 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]])
69 45453 3270 - 3291 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
69 41048 3293 - 3297 Select scala.None scala.None
69 38353 3235 - 3235 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]
69 47229 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 30523 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 33457 3236 - 3298 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)
72 39983 3347 - 3364 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](authInfo)
77 31275 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 33204 3556 - 3595 Apply org.make.api.question.QuestionService.getQuestion org.make.api.sequence.sequenceapitest MakeAuthentication.this.questionService.getQuestion(questionId)
77 47271 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 41089 3528 - 3544 Select org.make.core.question.QuestionId.value org.make.api.sequence.sequenceapitest questionId.value
77 39411 3505 - 3505 Select org.make.api.technical.auth.MakeAuthentication.optionalOidcAuthBySlug$default$4 org.make.api.sequence.sequenceapitest MakeAuthentication.this.optionalOidcAuthBySlug$default$4
85 37405 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 47609 3860 - 3878 Select org.make.api.technical.auth.MakeAuthentication.optionalMakeOAuth2 org.make.api.sequence.sequenceapitest MakeAuthentication.this.optionalMakeOAuth2
85 45527 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 47022 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 44910 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 32911 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 40509 4010 - 4086 Apply org.make.api.question.QuestionService.getQuestionByQuestionIdValueOrSlug org.make.api.question.questionapitest MakeAuthentication.this.questionService.getQuestionByQuestionIdValueOrSlug(questionSlugOrQuestionId)
90 33246 4107 - 4116 Select scala.concurrent.duration.DurationConversions.seconds org.make.api.sequence.sequenceapitest scala.concurrent.duration.`package`.DurationInt(5).seconds
90 37826 4107 - 4108 Literal <nosymbol> org.make.api.sequence.sequenceapitest 5
94 31313 4276 - 4339 Select scala.collection.IterableOnceOps.nonEmpty authInfo.user.roles.intersect[org.make.core.user.Role](MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES).nonEmpty
94 39449 4306 - 4329 Select org.make.api.technical.auth.MakeAuthentication.OIDC_ALLOWED_MAKE_ROLES MakeAuthentication.this.OIDC_ALLOWED_MAKE_ROLES
95 48074 4353 - 4375 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](maybeAuthInfo)
97 40547 4467 - 4490 Apply scala.Long./ now.toEpochMilli()./(1000)
98 37857 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 32659 4539 - 4560 Select org.make.core.operation.SimpleOperation.operationId operation.operationId
98 45443 4533 - 4561 Apply scala.collection.MapOps.get x$2.get(operation.operationId)
99 47058 4636 - 4658 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide MakeAuthentication.this.provide[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]](maybeAuthInfo)
99 33154 4606 - 4632 Apply scala.Long.>= oidcInfo.exp.>=(nowSeconds)
100 39486 4694 - 4719 Apply scala.Long.< oidcInfo.exp.<(nowSeconds)
102 46222 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 33195 4790 - 4790 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
102 37621 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 38711 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]]])
103 45478 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 31061 4865 - 4886 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
105 48112 4961 - 4981 Apply org.make.core.operation.OidcConfiguration.simple x$4.simple(questionId)
105 32695 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 39698 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 45226 5047 - 5047 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
108 37657 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 39738 5048 - 5110 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)
108 34274 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 31098 5082 - 5103 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
108 32138 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))
108 43609 5105 - 5109 Select scala.None scala.None
111 45974 5201 - 5201 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
111 38177 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 50184 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]]])
111 32648 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)))))))
112 39776 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 46259 5276 - 5297 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
114 43644 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 30850 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)))
114 39441 5372 - 5392 Apply org.make.core.operation.OidcConfiguration.simple x$6.simple(questionId)
117 45732 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 32686 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 31609 5459 - 5521 Apply org.make.api.technical.OidcAuthenticationNeededRejection.apply org.make.api.technical.OidcAuthenticationNeededRejection.apply(akka.http.scaladsl.model.StatusCodes.Forbidden, scala.None)
117 44702 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 40838 5458 - 5458 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
117 46301 5493 - 5514 Select akka.http.scaladsl.model.StatusCodes.Forbidden akka.http.scaladsl.model.StatusCodes.Forbidden
117 39201 5516 - 5520 Select scala.None scala.None
121 44147 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 40880 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 45769 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 32446 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 31355 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 37612 5715 - 5739 Select akka.http.scaladsl.model.StatusCodes.Unauthorized org.make.api.question.questionapitest akka.http.scaladsl.model.StatusCodes.Unauthorized
124 39239 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)))))
124 46802 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 50224 5810 - 5830 Apply org.make.core.operation.OidcConfiguration.simple org.make.api.question.questionapitest x$8.simple(questionId)
127 30841 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]]]
127 46838 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 35787 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 38999 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 37647 5919 - 5943 Select akka.http.scaladsl.model.StatusCodes.Unauthorized org.make.api.sequence.sequenceapitest akka.http.scaladsl.model.StatusCodes.Unauthorized
127 50686 5945 - 5949 Select scala.None org.make.api.sequence.sequenceapitest scala.None
127 44183 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]]])
128 32484 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 43447 6193 - 6193 Select scala.concurrent.ExecutionContext.Implicits.global org.make.api.sequence.sequenceapitest scala.concurrent.ExecutionContext.Implicits.global
137 39023 6193 - 6193 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture org.make.api.sequence.sequenceapitest cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
138 39033 6280 - 6280 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
138 50717 6250 - 6270 Select org.make.core.question.Question.operationId question.operationId
138 51030 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 45515 6247 - 6247 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
138 37936 6247 - 6247 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
138 47308 6280 - 6280 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
139 30877 6330 - 6373 Apply org.make.api.operation.OperationService.findOneSimple MakeAuthentication.this.operationService.findOneSimple(operationId)
139 44492 6319 - 6319 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
139 36923 6319 - 6319 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
139 33031 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))
140 47347 6451 - 6451 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
140 35827 6451 - 6451 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
140 43411 6405 - 6405 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
140 38988 6405 - 6405 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
140 31389 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 43939 6408 - 6441 Select org.make.core.operation.SimpleOperation.operationAuthentication operation.operationAuthentication
140 32948 6451 - 6451 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
140 51235 6451 - 6451 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
141 45010 6496 - 6515 Select org.make.core.operation.OperationKind.SecuredConsultation org.make.core.operation.OperationKind.SecuredConsultation
141 37439 6469 - 6515 Apply java.lang.Object.== operation.operationKind.==(org.make.core.operation.OperationKind.SecuredConsultation)
142 43975 6565 - 6565 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
142 51272 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 30637 6565 - 6565 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
142 37198 6524 - 6524 ApplyToImplicitArgs cats.Invariant.catsInstancesForFuture cats.this.Invariant.catsInstancesForFuture(scala.concurrent.ExecutionContext.Implicits.global)
142 45762 6524 - 6524 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
142 39485 6527 - 6555 Select org.make.core.operation.OperationAuthentication.oidc operationAuthentication.oidc
143 31135 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 36888 6599 - 6618 Select org.make.core.question.Question.questionId question.questionId
143 32987 6586 - 6618 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.operation.SimpleOperation](operation).->[org.make.core.question.QuestionId](question.questionId)
147 49431 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)))
147 36689 6743 - 6762 Apply org.make.api.technical.auth.MakeAuthentication.oauth2Authenticator org.make.api.user.adminuserapitest MakeAuthentication.this.oauth2Authenticator(credentials)
147 43929 6736 - 6741 Select org.make.api.technical.auth.MakeAuthentication.realm org.make.api.user.adminuserapitest MakeAuthentication.this.realm
151 50469 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]]]
151 49467 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 45555 6844 - 6854 Select org.make.api.technical.auth.MakeAuthentication.makeOAuth2 org.make.api.user.adminuserapitest MakeAuthentication.this.makeOAuth2
151 45303 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 37158 6859 - 6866 Apply scala.Some.apply scala.Some.apply[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]](x$10)
152 43482 6971 - 6975 Select scala.None org.make.api.user.adminuserapitest scala.None
152 38780 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)
153 36120 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 31173 7032 - 7054 Apply akka.http.scaladsl.server.directives.RouteDirectives.reject MakeAuthentication.this.reject((rejections: _*))
153 43681 7038 - 7038 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 util.this.Tuple.forTuple1[Option[scalaoauth2.provider.AuthInfo[org.make.core.auth.UserRights]]]
160 30927 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 38815 7289 - 7289 Select scala.concurrent.ExecutionContext.Implicits.global org.make.api.user.adminuserapitest scala.concurrent.ExecutionContext.Implicits.global
161 37188 7317 - 7363 Apply scalaoauth2.provider.ProtectedResourceHandler.findAuthInfoByAccessToken MakeAuthentication.this.oauth2DataHandler.findAuthInfoByAccessToken(t)
162 43398 7390 - 7413 Apply scala.concurrent.Future.successful scala.concurrent.Future.successful[None.type](scala.None)
162 50503 7408 - 7412 Select scala.None scala.None
164 36159 7440 - 7463 Apply scala.concurrent.Future.successful org.make.api.user.adminuserapitest scala.concurrent.Future.successful[None.type](scala.None)
164 43714 7458 - 7462 Select scala.None org.make.api.user.adminuserapitest scala.None
168 45339 7573 - 7641 Apply org.make.api.technical.MakeDirectives.optionalCookieValue org.make.api.user.adminuserapitest MakeAuthentication.this.optionalCookieValue(MakeAuthentication.this.makeSettings.SecureCookie.name, applicationName)
168 49934 7593 - 7623 Select org.make.api.extensions.MakeSettings.SecureCookie.name org.make.api.user.adminuserapitest MakeAuthentication.this.makeSettings.SecureCookie.name
173 38255 7778 - 7812 Apply org.make.api.technical.auth.MakeAuthentication.secureCookieValue org.make.api.technical.makedirectivestest MakeAuthentication.this.secureCookieValue(applicationName)
173 50295 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 38286 7775 - 7775 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.technical.makedirectivestest util.this.Tuple.forTuple1[Option[String]]
174 45804 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]])
174 43438 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 35581 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 49970 7838 - 7838 TypeApply akka.http.scaladsl.server.util.LowerPriorityTupler.forAnyRef org.make.api.technical.makedirectivestest util.this.Tupler.forAnyRef[Option[String]]
174 50260 7867 - 7880 Select akka.http.scaladsl.model.headers.Authorization org.make.api.technical.makedirectivestest akka.http.scaladsl.model.headers.Authorization
175 36678 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 31737 7936 - 7957 Apply akka.http.scaladsl.model.headers.HttpCredentials.token org.make.api.technical.makedirectivestest x$11.credentials.token()
175 43753 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 35376 8092 - 8092 TypeApply akka.http.scaladsl.server.util.Tuple.forTuple1 org.make.api.technical.makedirectivestest util.this.Tuple.forTuple1[String]
179 30917 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])
179 43190 8054 - 8083 Apply org.make.api.technical.auth.MakeAuthentication.extractToken org.make.api.technical.makedirectivestest MakeAuthentication.this.extractToken(applicationName)
180 35618 8120 - 8134 Apply akka.http.scaladsl.server.directives.BasicDirectives.provide org.make.api.technical.makedirectivestest MakeAuthentication.this.provide[String](token)
183 36712 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 45294 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 49720 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))
183 30879 8238 - 8256 Select akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing org.make.api.technical.makedirectivestest akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsMissing
183 44812 8292 - 8297 Select org.make.api.technical.auth.MakeAuthentication.realm org.make.api.technical.makedirectivestest MakeAuthentication.this.realm
184 37723 8321 - 8323 Literal <nosymbol> org.make.api.technical.makedirectivestest ""
184 50818 8315 - 8315 TypeApply akka.http.scaladsl.server.util.LowerPriorityTupler.forAnyRef org.make.api.technical.makedirectivestest util.this.Tupler.forAnyRef[String]
184 43232 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])