Class/Object

play.api.mvc.Security

AuthenticatedBuilder

Related Docs: object AuthenticatedBuilder | package Security

Permalink

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
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AuthenticatedBuilder
  2. ActionBuilder
  3. ActionFunction
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new AuthenticatedBuilder(userinfo: (RequestHeader) ⇒ Option[U], defaultParser: BodyParser[AnyContent], onUnauthorized: (RequestHeader) ⇒ Result = ...)(implicit executionContext: ExecutionContext)

    Permalink

    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

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def andThen[Q[_]](other: ActionFunction[[A]AuthenticatedRequest[A, U], Q]): ActionBuilder[Q, AnyContent]

    Permalink

    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
    ActionBuilderActionFunction
  5. final def apply(block: ⇒ Result): Action[AnyContent]

    Permalink

    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
  6. final def apply(block: (AuthenticatedRequest[AnyContent, U]) ⇒ Result): Action[AnyContent]

    Permalink

    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
  7. final def apply[A](bodyParser: BodyParser[A]): ActionBuilder[[A]AuthenticatedRequest[A, U], A]

    Permalink

    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
  8. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  9. final def async[A](bodyParser: BodyParser[A])(block: (AuthenticatedRequest[A, U]) ⇒ Future[Result]): Action[A]

    Permalink

    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
  10. final def async(block: (AuthenticatedRequest[AnyContent, U]) ⇒ Future[Result]): Action[AnyContent]

    Permalink

    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
  11. final def async(block: ⇒ Future[Result]): Action[AnyContent]

    Permalink

    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
  12. def authenticate[A](request: Request[A], block: (AuthenticatedRequest[A, U]) ⇒ Future[Result]): Future[Result]

    Permalink

    Authenticate the given block.

  13. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  14. def compose[B](other: ActionBuilder[Request, B]): ActionBuilder[[A]AuthenticatedRequest[A, U], B]

    Permalink
    Definition Classes
    ActionFunction
  15. def compose[Q[_]](other: ActionFunction[Q, Request]): ActionFunction[Q, [A]AuthenticatedRequest[A, U]]

    Permalink

    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
  16. def composeAction[A](action: Action[A]): Action[A]

    Permalink

    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
  17. def composeParser[A](bodyParser: BodyParser[A]): BodyParser[A]

    Permalink

    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
  18. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  19. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  20. implicit val executionContext: ExecutionContext

    Permalink

    Get the execution context to run the request in.

    Get the execution context to run the request in.

    returns

    The execution context

    Definition Classes
    AuthenticatedBuilderActionFunction
  21. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  22. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  23. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  24. def invokeBlock[A](request: Request[A], block: (AuthenticatedRequest[A, U]) ⇒ Future[Result]): Future[Result]

    Permalink

    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
    AuthenticatedBuilderActionFunction
  25. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  26. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  27. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  28. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  29. lazy val parser: BodyParser[AnyContent]

    Permalink

    returns

    The BodyParser to be used by this ActionBuilder if no other is specified

    Definition Classes
    AuthenticatedBuilderActionBuilder
  30. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  31. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  32. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  33. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  34. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from ActionBuilder[[A]AuthenticatedRequest[A, U], AnyContent]

Inherited from ActionFunction[Request, [A]AuthenticatedRequest[A, U]]

Inherited from AnyRef

Inherited from Any

Ungrouped