Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 3.25 KB | None | 0 0
  1. package com.da.authenticate
  2.  
  3. import org.jsecurity.authc.UsernamePasswordToken
  4. import org.jsecurity.authc.AuthenticationException
  5. import org.jsecurity.crypto.hash.Sha1Hash
  6. import org.jsecurity.SecurityUtils
  7. import com.da.quiz.QuizAnswers
  8.  
  9. class UserController {
  10.  
  11.     def jsecSecurityManager
  12.    
  13.  
  14.     /* On Login */    
  15.     def login = { LoginCommand cmd ->
  16.         if(request.method == 'POST') {
  17.             if(!cmd.hasErrors()) {
  18.                 request.user = User.findByLogin(cmd.login)
  19.                 render(template: "welcomeMessage")
  20.             } else {
  21.                 render(template: 'loginForm', model: [loginCmd:cmd])
  22.             }
  23.         } else {
  24.             render(uri:'/')
  25.         }
  26.     }
  27.    
  28.     /* On Register */
  29.     def register = {
  30.         if(request.method == 'POST') {
  31.             def u = new User(params)
  32.             if(User.findByLogin(params.login)) {
  33.                 return [user:u, message:'User already exists']
  34.             } else if(u.password != params.confirm) {
  35.                 u.errors.rejectValue('password', 'user.password.dontmatch')
  36.                 return [user:u]
  37.             } else {
  38.                 if(u.validate()) {
  39.                     u.password = new Sha1Hash(u.password).toHex()
  40.                     u.addToRoles(name:RoleName.USER)
  41.                     u.save()
  42.                    
  43.                     def authToken = new UsernamePasswordToken(u.login, params.password)
  44.                     this.jsecSecurityManager.login(authToken)
  45.                     redirect(uri: '/')
  46.                 } else {
  47.                     return [user:u]
  48.                 }
  49.             }
  50.         }
  51.     }
  52.    
  53.     /* On Logout */
  54.     def logout = {
  55.         org.jsecurity.SecurityUtils.getSubject().logout()
  56.             redirect(uri: '/')
  57.     }
  58.    
  59.     /* On User Profile View */
  60.     def profile = {
  61.         def userInstance = request['user']
  62.         if (!userInstance) {
  63.             flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])}"
  64.             redirect(action: "list")
  65.         }
  66.         else {
  67.             [userInstance: userInstance]
  68.         }
  69.     }
  70.    
  71.     /* On List Action */
  72.     def list = {
  73.         params.max = Math.min(params.max ? params.int('max') : 10, 100)
  74.         [userInstance: User.list(params), userInstanceTotal: User.count()]
  75.     }
  76.    
  77.     /* On QuizAnswers Action */
  78.     def quizAnswers = {
  79.         params.max = Math.min(params.max ? params.int('max') : 10, 100)
  80.         [quizAnswersInstanceList: QuizAnswers.list(params), quizAnswersInstanceTotal: QuizAnswers.count()]
  81.     }
  82. }
  83.  
  84. class LoginCommand {
  85.     String login
  86.     String password
  87.    
  88.     def jsecSecurityManager
  89.    
  90.     /* To Authenticate a User */
  91.     boolean authenticate() {
  92.         def authToken = new UsernamePasswordToken(login, password)
  93.         try {
  94.             this.jsecSecurityManager.login(authToken)
  95.                 return true
  96.         } catch (AuthenticationException ae) {
  97.             return false
  98.         }
  99.     }
  100.    
  101.     static constraints = {
  102.         login blank:false, validator:{val, cmd ->
  103.             if(!cmd.authenticate())
  104.                 return 'user.invalid.login'
  105.         }
  106.         password blank:false
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement