class AuthenticatedBuilder[U] extends ActionBuilder[[A]AuthenticatedRequest[A, U], AnyContent]
An authenticated action builder.
This can be used to create an action builder, like so:
class UserAuthenticatedBuilder (parser: BodyParser[AnyContent])(implicit ec: ExecutionContext) extends AuthenticatedBuilder[User]({ req: RequestHeader => req.session.get("user").map(User) }, parser) { @Inject() def this(parser: BodyParsers.Default)(implicit ec: ExecutionContext) = { this(parser: BodyParser[AnyContent]) } }
You can then use the authenticated builder with other action builders, i.e. to use a messagesApi with authentication, you can add:
class AuthMessagesRequest[A](val user: User, messagesApi: MessagesApi, request: Request[A]) extends MessagesRequest[A](request, messagesApi) class AuthenticatedActionBuilder(val parser: BodyParser[AnyContent], messagesApi: MessagesApi, builder: AuthenticatedBuilder[User]) (implicit val executionContext: ExecutionContext) extends ActionBuilder[AuthMessagesRequest, AnyContent] { type ResultBlock[A] = (AuthMessagesRequest[A]) => Future[Result] @Inject def this(parser: BodyParsers.Default, messagesApi: MessagesApi, builder: UserAuthenticatedBuilder)(implicit ec: ExecutionContext) = { this(parser: BodyParser[AnyContent], messagesApi, builder) } def invokeBlock[A](request: Request[A], block: ResultBlock[A]): Future[Result] = { builder.authenticate(request, { authRequest: AuthenticatedRequest[A, User] => block(new AuthMessagesRequest[A](authRequest.user, messagesApi, request)) }) } }
- Source
- Security.scala
- Alphabetic
- By Inheritance
- AuthenticatedBuilder
- ActionBuilder
- ActionFunction
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
AuthenticatedBuilder(userinfo: (RequestHeader) ⇒ Option[U], defaultParser: BodyParser[AnyContent], onUnauthorized: (RequestHeader) ⇒ Result = ...)(implicit executionContext: ExecutionContext)
- userinfo
The function that looks up the user info.
- onUnauthorized
The function to get the result for when no authenticated user can be found.
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
andThen[Q[_]](other: ActionFunction[[A]AuthenticatedRequest[A, U], Q]): ActionBuilder[Q, AnyContent]
Compose this ActionFunction with another, with this one applied first.
Compose this ActionFunction with another, with this one applied first.
- other
ActionFunction with which to compose
- returns
The new ActionFunction
- Definition Classes
- ActionBuilder → ActionFunction
-
final
def
apply(block: ⇒ Result): Action[AnyContent]
Constructs an
Action
with default content, and no request parameter.Constructs an
Action
with default content, and no request parameter.For example:
val hello = Action { Ok("Hello!") }
- block
the action code
- returns
an action
- Definition Classes
- ActionBuilder
-
final
def
apply(block: (AuthenticatedRequest[AnyContent, U]) ⇒ Result): Action[AnyContent]
Constructs an
Action
with default content.Constructs an
Action
with default content.For example:
val echo = Action { request => Ok("Got request [" + request + "]") }
- block
the action code
- returns
an action
- Definition Classes
- ActionBuilder
-
final
def
apply[A](bodyParser: BodyParser[A]): ActionBuilder[[A]AuthenticatedRequest[A, U], A]
Constructs an ActionBuilder with the given BodyParser.
Constructs an ActionBuilder with the given BodyParser. The result can then be applied directly to a block.
For example:
val echo = Action(parse.anyContent) { request => Ok("Got request [" + request + "]") }
- A
the type of the request body
- bodyParser
the
BodyParser
to use to parse the request body- returns
an action
- Definition Classes
- ActionBuilder
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
final
def
async[A](bodyParser: BodyParser[A])(block: (AuthenticatedRequest[A, U]) ⇒ Future[Result]): Action[A]
Constructs an
Action
with the given BodyParser that returns a future of a result.Constructs an
Action
with the given BodyParser that returns a future of a result.For example:
val hello = Action.async(parse.anyContent) { request => ws.url(request.getQueryString("url").get).get().map { r => if (r.status == 200) Ok("The website is up") else NotFound("The website is down") } }
- block
the action code
- returns
an action
- Definition Classes
- ActionBuilder
-
final
def
async(block: (AuthenticatedRequest[AnyContent, U]) ⇒ Future[Result]): Action[AnyContent]
Constructs an
Action
that returns a future of a result, with default content.Constructs an
Action
that returns a future of a result, with default content.For example:
val hello = Action.async { request => ws.url(request.getQueryString("url").get).get().map { r => if (r.status == 200) Ok("The website is up") else NotFound("The website is down") } }
- block
the action code
- returns
an action
- Definition Classes
- ActionBuilder
-
final
def
async(block: ⇒ Future[Result]): Action[AnyContent]
Constructs an
Action
that returns a future of a result, with default content, and no request parameter.Constructs an
Action
that returns a future of a result, with default content, and no request parameter.For example:
val hello = Action.async { ws.url("http://www.playframework.com").get().map { r => if (r.status == 200) Ok("The website is up") else NotFound("The website is down") } }
- block
the action code
- returns
an action
- Definition Classes
- ActionBuilder
-
def
authenticate[A](request: Request[A], block: (AuthenticatedRequest[A, U]) ⇒ Future[Result]): Future[Result]
Authenticate the given block.
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
compose[B](other: ActionBuilder[Request, B]): ActionBuilder[[A]AuthenticatedRequest[A, U], B]
- Definition Classes
- ActionFunction
-
def
compose[Q[_]](other: ActionFunction[Q, Request]): ActionFunction[Q, [A]AuthenticatedRequest[A, U]]
Compose another ActionFunction with this one, with this one applied last.
Compose another ActionFunction with this one, with this one applied last.
- other
ActionFunction with which to compose
- returns
The new ActionFunction
- Definition Classes
- ActionFunction
-
def
composeAction[A](action: Action[A]): Action[A]
Compose the action with other actions.
Compose the action with other actions. This allows mixing in of various actions together.
- action
The action to compose
- returns
The composed action
- Attributes
- protected
- Definition Classes
- ActionBuilder
-
def
composeParser[A](bodyParser: BodyParser[A]): BodyParser[A]
Compose the parser.
Compose the parser. This allows the action builder to potentially intercept requests before they are parsed.
- bodyParser
The body parser to compose
- returns
The composed body parser
- Attributes
- protected
- Definition Classes
- ActionBuilder
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
implicit
val
executionContext: ExecutionContext
- returns
The execution context to run the request in.
- Definition Classes
- AuthenticatedBuilder → ActionFunction
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
invokeBlock[A](request: Request[A], block: (AuthenticatedRequest[A, U]) ⇒ Future[Result]): Future[Result]
Invoke the block.
Invoke the block. This is the main method that an ActionBuilder has to implement, at this stage it can wrap it in any other actions, modify the request object or potentially use a different class to represent the request.
- request
The request
- block
The block of code to invoke
- returns
A future of the result
- Definition Classes
- AuthenticatedBuilder → ActionFunction
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
lazy val
parser: BodyParser[AnyContent]
- returns
The BodyParser to be used by this ActionBuilder if no other is specified
- Definition Classes
- AuthenticatedBuilder → ActionBuilder
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()