in pan-domain-auth-play/src/main/scala/com/gu/pandomainauth/action/Actions.scala [23:79]
def authenticateRequest(request: RequestHeader)(produceResultGivenAuthedUser: User => Future[Result]): Future[Result]
override def invokeBlock[A](request: Request[A], block: (UserRequest[A]) => Future[Result]): Future[Result] =
authenticateRequest(request)(user => block(new UserRequest(user, request)))
}
/**
* Play application components that you must provide in order to use AuthActions
*/
def wsClient: WSClient
def controllerComponents: ControllerComponents
val panDomainSettings: PanDomainAuthSettingsRefresher
private lazy val system: String = panDomainSettings.system
private lazy val domain: String = panDomainSettings.domain
private def settings: PanDomainAuthSettings = panDomainSettings.settings
private implicit val ec: ExecutionContext = controllerComponents.executionContext
/**
* Returns true if the authed user is valid in the implementing system (meets your multifactor requirements, you recognise the email etc.).
*
* If your implementing application needs to audit logins / register new users etc then this ia also the place to do it (although in this case
* you should strongly consider setting cacheValidation to true).
*
* @param authedUser
* @return true if the user is valid in your app
*/
def validateUser(authedUser: AuthenticatedUser): Boolean
/**
* By default the validity of the user is checked every request. If your validateUser implementation is expensive or has side effects you
* can override this to true and validity will only be checked the first time the user visits your app after their login is established.
*
* Note the the cache is invalidated after the user's session is re-established with the OAuth provider.
*
* @return true if you want to only check the validity of the user once for the lifetime of the user's auth session
*/
def cacheValidation: Boolean = false
/**
* The auth callback url. This is where the OAuth provider will send the user after authentication.
* This action on should invoke processOAuthCallback
*
* @return
*/
def authCallbackUrl: String
lazy val OAuth = new OAuth(settings.oAuthSettings, system, authCallbackUrl)(ec, wsClient)
/**
* Application name used for initialising Google API clients for directory group checking
*/
lazy val applicationName: String = s"pan-domain-authentication-$system"
lazy val multifactorChecker: Option[Google2FAGroupChecker] = settings.google2FAGroupSettings.map {