mirror of
https://github.com/ysoftdevs/odc-analyzer.git
synced 2026-03-27 03:21:49 +01:00
When user signs in/out, a proper redirect is performed.
This commit is contained in:
@@ -30,16 +30,16 @@ class AuthController @Inject() (
|
|||||||
"rememberMe" -> boolean
|
"rememberMe" -> boolean
|
||||||
)(LoginRequest.apply)(LoginRequest.unapply))
|
)(LoginRequest.apply)(LoginRequest.unapply))
|
||||||
|
|
||||||
def signIn = UserAwareAction { implicit request =>
|
def signIn(callback: String) = UserAwareAction { implicit request =>
|
||||||
request.identity match {
|
request.identity match {
|
||||||
case Some(user) => Redirect(routes.Application.index(Map()))
|
case Some(user) => generateCallback(callback)
|
||||||
case None => Ok(views.html.auth.signIn(signInForm/*, socialProviderRegistry*/))
|
case None => Ok(views.html.auth.signIn(signInForm, callback/*, socialProviderRegistry*/))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def authenticate() = UserAwareAction.async { implicit request =>
|
def authenticate(callback: String) = UserAwareAction.async { implicit request =>
|
||||||
signInForm.bindFromRequest().fold(
|
signInForm.bindFromRequest().fold(
|
||||||
formWithErrors => Future.successful(BadRequest(views.html.auth.signIn(formWithErrors/*, socialProviderRegistry*/))),
|
formWithErrors => Future.successful(BadRequest(views.html.auth.signIn(formWithErrors, callback/*, socialProviderRegistry*/))),
|
||||||
loginRequest => {
|
loginRequest => {
|
||||||
credentialsVerificationService.verifyCredentials(loginRequest.username, loginRequest.password).flatMap{
|
credentialsVerificationService.verifyCredentials(loginRequest.username, loginRequest.password).flatMap{
|
||||||
case Right(email) =>
|
case Right(email) =>
|
||||||
@@ -50,18 +50,22 @@ class AuthController @Inject() (
|
|||||||
authenticator <- env.authenticatorService.create(loginInfo)
|
authenticator <- env.authenticatorService.create(loginInfo)
|
||||||
_ = env.eventBus.publish(LoginEvent(user, request, implicitly[Messages]))
|
_ = env.eventBus.publish(LoginEvent(user, request, implicitly[Messages]))
|
||||||
res <- env.authenticatorService.init(authenticator).flatMap(cookie =>
|
res <- env.authenticatorService.init(authenticator).flatMap(cookie =>
|
||||||
env.authenticatorService.embed(cookie.copy(secure = request.secure), Redirect(routes.Application.index(Map())))
|
env.authenticatorService.embed(cookie.copy(secure = request.secure), generateCallback(callback))
|
||||||
)
|
)
|
||||||
} yield res
|
} yield res
|
||||||
case Left(errorMessage) =>
|
case Left(errorMessage) =>
|
||||||
Future.successful(Redirect(routes.AuthController.signIn()).flashing("error" -> Messages("invalid.credentials")))
|
Future.successful(Redirect(routes.AuthController.signIn(callback)).flashing("error" -> Messages("invalid.credentials")))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
def signOut = SecuredAction.async { implicit request =>
|
private def generateCallback(callback: String) = {
|
||||||
val result = Redirect(routes.Application.index(Map()))
|
if (callback startsWith "/") Redirect(callback) else Redirect(routes.Application.index(Map()))
|
||||||
|
}
|
||||||
|
|
||||||
|
def signOut(callback: String) = SecuredAction.async { implicit request =>
|
||||||
|
val result = generateCallback(callback)
|
||||||
env.eventBus.publish(LogoutEvent(request.identity, request, request2Messages))
|
env.eventBus.publish(LogoutEvent(request.identity, request, request2Messages))
|
||||||
env.authenticatorService.discard(request.authenticator, result)
|
env.authenticatorService.discard(request.authenticator, result)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ trait AuthenticatedControllerLowPriorityImplicits[T, C]{
|
|||||||
abstract class AuthenticatedController extends Silhouette[User, CookieAuthenticator] with AuthenticatedControllerLowPriorityImplicits[User, CookieAuthenticator]{
|
abstract class AuthenticatedController extends Silhouette[User, CookieAuthenticator] with AuthenticatedControllerLowPriorityImplicits[User, CookieAuthenticator]{
|
||||||
|
|
||||||
|
|
||||||
override protected def onNotAuthenticated(request: RequestHeader): Option[Future[Result]] = Some(Future.successful(Redirect(routes.AuthController.signIn())))
|
override protected def onNotAuthenticated(request: RequestHeader): Option[Future[Result]] = Some(Future.successful(Redirect(
|
||||||
|
routes.AuthController.signIn(request.path+"?"+request.rawQueryString)
|
||||||
|
)))
|
||||||
|
|
||||||
object ReadAction extends SecuredActionBuilder with Results {
|
object ReadAction extends SecuredActionBuilder with Results {
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
@import helper._
|
@import helper._
|
||||||
@(loginForm: Form[LoginRequest]/*, socialProviderRegistry: SocialProviderRegistry*/)(implicit requestHeader: DefaultRequest, messages: Messages)
|
@(loginForm: Form[LoginRequest], callback: String/*, socialProviderRegistry: SocialProviderRegistry*/)(implicit requestHeader: DefaultRequest, messages: Messages)
|
||||||
|
|
||||||
@main("Log in"){
|
@main("Log in"){
|
||||||
@form(routes.AuthController.authenticate()){
|
@form(routes.AuthController.authenticate(callback)){
|
||||||
@CSRF.formField
|
@CSRF.formField
|
||||||
@inputText(loginForm("username"))
|
@inputText(loginForm("username"))
|
||||||
@inputPassword(loginForm("password"))
|
@inputPassword(loginForm("password"))
|
||||||
|
|||||||
@@ -74,9 +74,9 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li>@header.identity.fold{
|
<li>@header.identity.fold{
|
||||||
<a class="btn btn-default" href="@routes.AuthController.signIn()">Log in</a>
|
<a class="btn btn-default" href="@routes.AuthController.signIn(header.path+"?"+header.rawQueryString)">Log in</a>
|
||||||
}{ user =>
|
}{ user =>
|
||||||
@form(routes.AuthController.signOut()){
|
@form(routes.AuthController.signOut(header.path+"?"+header.rawQueryString)){
|
||||||
@CSRF.formField
|
@CSRF.formField
|
||||||
<button type="submit" class="btn btn-warning">Logout @user.username</button>
|
<button type="submit" class="btn btn-warning">Logout @user.username</button>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,9 +41,9 @@ POST /tags/import controllers.Application.tagsImport
|
|||||||
|
|
||||||
GET /routes.js controllers.Application.javascriptRoutes
|
GET /routes.js controllers.Application.javascriptRoutes
|
||||||
|
|
||||||
GET /sign-in controllers.AuthController.signIn
|
GET /sign-in controllers.AuthController.signIn(callback: String)
|
||||||
POST /sign-in controllers.AuthController.authenticate
|
POST /sign-in controllers.AuthController.authenticate(callback: String)
|
||||||
POST /sign-out controllers.AuthController.signOut
|
POST /sign-out controllers.AuthController.signOut(callback: String)
|
||||||
|
|
||||||
# Map static resources from the /public folder to the /assets URL path
|
# Map static resources from the /public folder to the /assets URL path
|
||||||
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
|
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
|
||||||
|
|||||||
Reference in New Issue
Block a user