Skip to content

Instantly share code, notes, and snippets.

@sagarsg
Forked from nraychaudhuri/Play2SlickBridge.scala
Created June 18, 2014 20:29
Show Gist options
  • Save sagarsg/068bf49197980445df96 to your computer and use it in GitHub Desktop.
Save sagarsg/068bf49197980445df96 to your computer and use it in GitHub Desktop.
//Trait that bridges between slick and Play2-auth. Just mixin with controllers
trait Auth2SlickBridge {
self: StackableController =>
def AuthAction[A](p: BodyParser[A], params: (RequestAttributeKey[_], Any)*)(f: RequestWithAttributes[A] => Action[A]): Action[A] = {
AsyncStack(p, params:_*) { implicit rs =>
f(rs).apply(rs)
}
}
def AuthAction(params: (RequestAttributeKey[_], Any)*)(f: RequestWithAttributes[AnyContent] => Action[AnyContent]): Action[AnyContent] = {
AsyncStack(params:_*) { implicit rs =>
f(rs).apply(rs)
}
}
}
//exmaple usage
object Message extends Controller with AuthElement with Auth2SlickBridge with AuthConfigImpl {
def main = AuthAction(AuthorityKey -> "user") { implicit play2AuthRequest =>
DBAction { implicit slickRequest =>
Computers.findById(1L).map { computer =>
Ok(html.editForm(1L, Application.computerForm.fill(computer), Companies.options))
}.getOrElse(NotFound)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment