app/controllers/Login.scala (42 lines of code) (raw):

package controllers import auth.PanDomainAuthActions import com.gu.pandomainauth.PanDomainAuthSettingsRefresher import com.gu.permissions.PermissionsProvider import config.AppConfig import helpers.Loggable import permissions.Permissions import play.api.libs.json.Json import play.api.libs.ws.WSClient import play.api.mvc._ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.{ExecutionContext, Future} class Login( val controllerComponents: ControllerComponents, val config: AppConfig, override val wsClient: WSClient, override val permissions: PermissionsProvider, override val panDomainSettings: PanDomainAuthSettingsRefresher ) extends BaseController with PanDomainAuthActions with Loggable { def oauthCallback: Action[AnyContent] = Action.async { implicit request => processOAuthCallback() } def logout: Action[AnyContent] = Action.async { implicit request => Future(processLogout) } def authError(message: String): Action[AnyContent] = Action.async { implicit request => Future(Forbidden(views.html.authError(message))) } def user: Action[AnyContent] = AuthAction { implicit request => Ok(request.user.toJson).as(JSON) } def usersPermissions: Action[AnyContent] = AuthAction { implicit request => Ok(Json.toJson( Permissions.all.view.map( p => p.name -> permissions.hasPermission(p, request.user.email) ).toMap )) } protected val parser: BodyParser[AnyContent] = controllerComponents.parsers.default protected val executionContext: ExecutionContext = controllerComponents.executionContext }