jupi

simple async authentication for play2

May 31st, 2013
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.83 KB | None | 0 0
  1. package hu.jupi.play.authentication
  2.  
  3. import play.api.mvc._
  4. import scala.concurrent.Future
  5. import scala.concurrent.ExecutionContext.Implicits.global
  6.  
  7. abstract class WithAuthentication(private val request: Request[AnyContent]) extends WrappedRequest(request)
  8. case class Authenticated[A](principal: A)(implicit private val request: Request[AnyContent]) extends WithAuthentication(request)
  9. case class Guest(implicit private val request: Request[AnyContent]) extends WithAuthentication(request)
  10.  
  11. trait Authentication[A] {
  12.   def principal(requestHeader: RequestHeader): Future[Option[A]]
  13.   def WithAuthentication(f: WithAuthentication => Result) = Action {
  14.     implicit request => AsyncResult {
  15.       principal(request) map (p => p match {
  16.         case Some(p) => f(Authenticated(p))
  17.         case _ => f(Guest())
  18.       })
  19.     }
  20.   }
  21. }
Advertisement
Add Comment
Please, Sign In to add comment