Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.da.authenticate
- import org.jsecurity.authc.UsernamePasswordToken
- import org.jsecurity.authc.AuthenticationException
- import org.jsecurity.crypto.hash.Sha1Hash
- import org.jsecurity.SecurityUtils
- import com.da.quiz.QuizAnswers
- class UserController {
- def jsecSecurityManager
- /* On Login */
- def login = { LoginCommand cmd ->
- if(request.method == 'POST') {
- if(!cmd.hasErrors()) {
- request.user = User.findByLogin(cmd.login)
- render(template: "welcomeMessage")
- } else {
- render(template: 'loginForm', model: [loginCmd:cmd])
- }
- } else {
- render(uri:'/')
- }
- }
- /* On Register */
- def register = {
- if(request.method == 'POST') {
- def u = new User(params)
- if(User.findByLogin(params.login)) {
- return [user:u, message:'User already exists']
- } else if(u.password != params.confirm) {
- u.errors.rejectValue('password', 'user.password.dontmatch')
- return [user:u]
- } else {
- if(u.validate()) {
- u.password = new Sha1Hash(u.password).toHex()
- u.addToRoles(name:RoleName.USER)
- u.save()
- def authToken = new UsernamePasswordToken(u.login, params.password)
- this.jsecSecurityManager.login(authToken)
- redirect(uri: '/')
- } else {
- return [user:u]
- }
- }
- }
- }
- /* On Logout */
- def logout = {
- org.jsecurity.SecurityUtils.getSubject().logout()
- redirect(uri: '/')
- }
- /* On User Profile View */
- def profile = {
- def userInstance = request['user']
- if (!userInstance) {
- flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])}"
- redirect(action: "list")
- }
- else {
- [userInstance: userInstance]
- }
- }
- /* On List Action */
- def list = {
- params.max = Math.min(params.max ? params.int('max') : 10, 100)
- [userInstance: User.list(params), userInstanceTotal: User.count()]
- }
- /* On QuizAnswers Action */
- def quizAnswers = {
- params.max = Math.min(params.max ? params.int('max') : 10, 100)
- [quizAnswersInstanceList: QuizAnswers.list(params), quizAnswersInstanceTotal: QuizAnswers.count()]
- }
- }
- class LoginCommand {
- String login
- String password
- def jsecSecurityManager
- /* To Authenticate a User */
- boolean authenticate() {
- def authToken = new UsernamePasswordToken(login, password)
- try {
- this.jsecSecurityManager.login(authToken)
- return true
- } catch (AuthenticationException ae) {
- return false
- }
- }
- static constraints = {
- login blank:false, validator:{val, cmd ->
- if(!cmd.authenticate())
- return 'user.invalid.login'
- }
- password blank:false
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement