Skip to content

Instantly share code, notes, and snippets.

@Bunyod
Forked from nraychaudhuri/Play2SlickBridge.scala
Last active September 17, 2015 11:08
Show Gist options
  • Save Bunyod/c84d7cac0528594d050b to your computer and use it in GitHub Desktop.
Save Bunyod/c84d7cac0528594d050b to your computer and use it in GitHub Desktop.
Play2-Auth and Slick together
//Trait that bridges between slick and Play2-auth. Just mixin with controllers
trait Auth2SlickBridge {
self: StackableController =>
def AuthAction[A](p: BodyParser[A], params: AttributeKey[_]*)(f: RequestWithAttributes[A] => Action[A]): Action[A] = {
AsyncStack(p, params:_*) { implicit rs =>
f(rs).apply(rs)
}
}
def AuthAction(params: AttributeKey[_]*)(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