app/controllers/AuthController.scala (37 lines of code) (raw):
package controllers
import com.gu.googleauth.{GoogleAuthConfig, GoogleGroupChecker, LoginSupport}
import com.gu.janus.model.JanusData
import play.api.Mode
import play.api.libs.ws.WSClient
import play.api.mvc._
import scala.concurrent.ExecutionContext
class AuthController(
janusData: JanusData,
controllerComponents: ControllerComponents,
val authConfig: GoogleAuthConfig,
val googleGroupChecker: GoogleGroupChecker,
requiredGoogleGroups: Set[String]
)(implicit
val wsClient: WSClient,
ec: ExecutionContext,
mode: Mode,
assetsFinder: AssetsFinder
) extends AbstractController(controllerComponents)
with LoginSupport {
override val failureRedirectTarget: Call = routes.AuthController.loginError
override val defaultRedirectTarget: Call = routes.Janus.index
def login = Action.async { implicit request =>
startGoogleLogin()
}
def loginError = Action { implicit request =>
val error =
request.flash.get("error").getOrElse("There was an error logging in")
Ok(views.html.error(error, None, janusData))
}
def logout = Action { implicit request =>
Redirect(routes.Janus.index).withNewSession
}
def oauthCallback = Action.async { implicit request =>
processOauth2Callback(requiredGoogleGroups, googleGroupChecker)
}
}