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
- Protected
Instance Constructors
- new AuthenticatedBuilder(userinfo: (RequestHeader) => Option[U], defaultParser: BodyParser[AnyContent], onUnauthorized: (RequestHeader) => Result = implicit request => Unauthorized(views.html.defaultpages.unauthorized()))(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(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @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: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- implicit val executionContext: ExecutionContext
- returns
The execution context to run the request in.
- Definition Classes
- AuthenticatedBuilder → ActionFunction
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @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
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @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(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)