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 }