
controllers.auth.AuthenticationController.scala Maven / Gradle / Ivy
The newest version!
package controllers.auth
import javax.inject.Inject
import com.mohiva.play.silhouette.api.{Environment, LogoutEvent}
import com.mohiva.play.silhouette.impl.authenticators.CookieAuthenticator
import com.mohiva.play.silhouette.impl.providers.SocialProviderRegistry
import controllers.{BaseController, ViewContext}
import forms._
import models.User
import play.api.i18n.MessagesApi
import scala.concurrent.Future
/**
* The basic application controller.
*
* @param messagesApi The Play messages API.
* @param env The Silhouette environment.
* @param socialProviderRegistry The social provider registry.
*/
class AuthenticationController @Inject() (
val messagesApi: MessagesApi,
val env: Environment[User, CookieAuthenticator],
socialProviderRegistry: SocialProviderRegistry)
extends BaseController {
/**
* Handles the Sign In action.
*
* @return The result to display.
*/
def signIn = UserAwareAction.async { implicit request =>
request.identity match {
case Some(user) => Future.successful(Redirect("/"))
case None => Future.successful(Ok(views.html.signIn(SignInForm.form, socialProviderRegistry)))
}
}
/**
* Handles the Sign Up action.
*
* @return The result to display.
*/
def signUp = UserAwareAction.async { implicit request =>
request.identity match {
case Some(user) => Future.successful(Redirect("/"))
case None => Future.successful(Ok(views.html.signUp(SignUpForm.form)))
}
}
/**
* Handles the Sign Out action.
*
* @return The result to display.
*/
def signOut = SecuredAction.async { implicit request =>
val result = Redirect("/")
env.eventBus.publish(LogoutEvent(request.identity, request, request2Messages))
env.authenticatorService.discard(request.authenticator, result)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy