scala-news-reader

rss/atom news reader in scala

git clone https://9o.is/git/scala-news-reader.git

UserLogin.scala

(1788B)


      1 package com.joereader.snippet
      2 
      3 import net.liftweb._
      4 import util.Helpers._
      5 import common._
      6 import http._
      7 import js._
      8 import SHtml._
      9 import JsCmds._
     10 
     11 import com.joereader._
     12 import model._
     13 import config._
     14 
     15 import net.liftmodules.mongoauth.model.ExtSession
     16 import net.liftmodules.mongoauth.LoginRedirect
     17 
     18 
     19 object UserLogin extends Loggable {
     20 
     21   def render = {
     22 
     23     var pwd = ""
     24 
     25     def doSubmit(): JsCmd = {
     26       S.param("email").map(e => {
     27         val email = e.toLowerCase.trim
     28         // save the email and remember entered in the session var
     29         User.loginCredentials(email)
     30 
     31         if (email.length > 0 && pwd.length > 0) {
     32           User.findByEmail(email) match {
     33             case Full(user) if user.password.isMatch(pwd) =>
     34               User.logUserIn(user, isAuthed = true)
     35               ExtSession.deleteExtCookie()
     36               RedirectTo(LoginRedirect.openOr(Site.home.url))
     37             case _ =>
     38               S.error("id_password_err", "Invalid credentials")
     39               Noop
     40           }
     41         }
     42         else if (email.length <= 0 && pwd.length > 0) {
     43           S.error("id_email_err", "Please enter an email")
     44           Noop
     45         }
     46         else if (pwd.length <= 0 && email.length > 0) {
     47           S.error("id_password_err", "Please enter a password")
     48           Noop
     49         }
     50         else {
     51           S.error("id_email_err", "Please enter an email")
     52           S.error("id_password_err", "Please enter a password")
     53           Noop
     54         }
     55       }) openOr {
     56         S.error("id_email_err", "Please enter an email address")
     57         Noop
     58       }
     59     }
     60 
     61     "#id_email [value]" #> User.loginCredentials.is &
     62       "#id_password" #> password(pwd, pwd = _) &
     63       "#forgot_password [href]" #> Site.passwordRecovery.url &
     64       "#id_submit" #> hidden(doSubmit)
     65   }
     66 }