Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package controllers
- import play.api._
- import play.api.mvc._
- import play.api.mvc.Results._
- import play.api.data._
- import play.api.data.Forms._
- import play.api.Play.current
- import views._
- case class Account(id: Int, username: String)
- case class Login(username: String, password: String) {
- // Defines a login
- // A login is NOT an account
- def isValid = {
- username == "admin" && password == "pass"
- }
- def account = { Account(1, username) }
- }
- trait AuthForms {
- implicit val loginForm = Form(
- tuple(
- "username" -> nonEmptyText,
- "password" -> nonEmptyText
- ) verifying ("Invalid email or password", result => result match {
- case (username, password) => Login(username, password).isValid
- })
- )
- }
- object Auth extends Controller with AuthForms {
- def login = Action { implicit request =>
- request.session.get(Security.username).map { user =>
- Unauthorized("You are already logged in")
- }.getOrElse {
- loginForm.bindFromRequest.fold(
- formWithErrors => Redirect(routes.Application.index()).flashing("error" -> "Login failed"),
- login => Redirect(routes.Application.index()).flashing("info" -> "You were now logged in").withSession(Security.username -> login._1)
- )
- }
- }
- def logout = Action { request =>
- Redirect(routes.Application.index()).flashing("info" -> "You were logged out").withNewSession
- }
- }
- object Application extends Controller with AuthForms {
- def index = Action { implicit request =>
- Ok(views.html.index())
- }
- }
Add Comment
Please, Sign In to add comment