Skip to content
This repository was archived by the owner on Feb 10, 2021. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package controllers

import models.User
import play.api.mvc.{Action, Controller}
import security.{ContextAction, ScDeadboltHandler}
import be.objectify.deadbolt.scala.{DeadboltHandler, DeadboltActions}



/**
*/
object AppScala extends Controller with DeadboltActions {

def index = ContextAction {implicit request =>
Ok(views.html.index())
}

def restrictOne = Restrict(Array(Application.USER_ROLE), new ScDeadboltHandler) {
ContextAction {implicit request =>
Ok(views.html.index())
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package security

/**
*/
import play.api.mvc._
import scala.concurrent.Future
import play.mvc.Http.Context
import play.core.j.JavaHelpers

object ContextAction extends ActionBuilder[Request] {

def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[Result]) = {
Context.current.set(JavaHelpers.createJavaContext(request))
block(request)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package security

import be.objectify.deadbolt.scala.{DynamicResourceHandler, DeadboltHandler}
import play.api.mvc.{Request, Result, Results}
import models.User
import be.objectify.deadbolt.core.models.Subject
import com.feth.play.module.pa.PlayAuthenticate
import com.feth.play.module.pa.user.AuthUserIdentity

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
/**
*
*/
class ScDeadboltHandler(dynamicResourceHandler: Option[DynamicResourceHandler] = None) extends DeadboltHandler {


override def beforeAuthCheck[A](request: Request[A]) :Option[Future[Result] ]= {

val java_ctx = play.core.j.JavaHelpers.createJavaContext(request)
if (PlayAuthenticate.isLoggedIn(java_ctx.session)) {
return None
}
else {
val originalUrl: String = PlayAuthenticate.storeOriginalUrl(java_ctx )
java_ctx.flash.put("error", "You need to log in first, to view '" + originalUrl + "'")
val f: Future[Result] = Future {
Results.Redirect(PlayAuthenticate.getResolver.login.url())
}
Some(f)
}
}

override def getDynamicResourceHandler[A](request: Request[A]): Option[DynamicResourceHandler] = None


override def getSubject[A](request: Request[A]): Option[Subject] = {
// e.g. request.session.get("user")
val java_ctx = play.core.j.JavaHelpers.createJavaContext(request)
val u: AuthUserIdentity = PlayAuthenticate.getUser(java_ctx)
Some( User.findByAuthUserIdentity(u ))
}

def onAuthFailure[A](request: Request[A]): Future[Result] = {
Future{ Results.Forbidden(views.html.restricted())}
}
}
1 change: 1 addition & 0 deletions samples/java/play-authenticate-usage/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ version := "1.0-SNAPSHOT"

val appDependencies = Seq(
"be.objectify" %% "deadbolt-java" % "2.3.0-RC1",
"be.objectify" %% "deadbolt-scala" % "2.3.0-RC1",
// Comment the next line for local development of the Play Authentication core:
"com.feth" %% "play-authenticate" % "0.6.5-SNAPSHOT",
"postgresql" % "postgresql" % "9.1-901-1.jdbc4",
Expand Down