Kawai Wiki

Rev

Rev 130 | Rev 149 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8 soliveira 1
package org.kawai.action;
6 soliveira 2
 
8 soliveira 3
import org.kawai.dao.UserDAO;
4
import org.kawai.model.User;
6 soliveira 5
import org.mentawai.core.BaseAction;
6
import org.mentawai.filter.AuthenticationFree;
7
import org.mentawai.mail.Letter;
8
import org.mentawai.mail.SimpleEmail;
9
import org.mentawai.mail.TextLetter;
10
import org.mentawai.rule.EmailRule;
11
import org.mentawai.rule.EqualRule;
12
import org.mentawai.rule.MethodRule;
13
import org.mentawai.rule.RegexRule;
14
import org.mentawai.validation.Validatable;
15
import org.mentawai.validation.Validator;
16
 
130 soliveira 17
public class UserAction extends BaseAction implements Validatable, AuthenticationFree {
6 soliveira 18
 
19
        private final UserDAO userDAO;
20
 
21
        public UserAction(UserDAO userDAO) {
22
                this.userDAO = userDAO;
23
        }
24
 
25
        // You cannot log to register...
26
        @Override
27
        public boolean bypassAuthentication(String method) {
28
 
29
                if (method == null) return false;
30
 
31
                if (method.equals("add")) return true;
32
                if (method.equals("check")) return true;
33
 
34
                return false;
35
        }
36
 
37
        // Validate the fields for the user form...
38
        @Override
39
        public void prepareValidator(Validator val, String method) {
40
 
41
                String username_regex = "^[A-Za-z][A-Za-z0-9\\-\\_\\.]*[A-Za-z0-9]$";
42
 
43
                if (method != null && method.equals("add") && isPost()) {
44
 
45
                        val.requiredFields("required_field", "username", "password", "email", "groupId", "languageId");
46
 
47
                        val.requiredLists("required_field", "groupId", "languageId");
48
 
49
                        val.add("username", RegexRule.getInstance(username_regex), "bad_username");
50
 
51
                        val.add("username", MethodRule.getInstance(this, "checkUsernameAdd"), "username_already_exists");
52
 
53
                        val.add("email", EmailRule.getInstance(), "bad_email");
54
 
55
                        val.add("password", EqualRule.getInstance("password", "passconf"), "pass_no_match");
56
 
57
                }
58
        }
59
 
130 soliveira 60
        boolean checkUsernameAdd(String username) {
6 soliveira 61
 
62
                return userDAO.findByUsername(username) == null;
63
        }
64
 
65
        public String check() {
66
 
67
                if (!isPost()) return ERROR;
68
 
69
                String username = input.getString("username");
70
 
71
                String sessionUsername = input.getString("sessionUsername");
72
 
73
                if (isEmpty(username)) return ERROR;
74
 
75
                User u = userDAO.findByUsername(username);
76
 
77
                if (u == null) return SUCCESS; // username does not exist
78
 
79
                if (sessionUsername != null && u.getUsername().equals(sessionUsername)) return SUCCESS;
80
 
81
                return ALREADY;
82
        }
83
 
84
        public String add() {
85
 
86
                if (!isPost()) {
87
 
88
                        // we only want to allow post to add an user...
89
 
90
                        return ERROR;
91
 
92
                } else {
93
 
94
                        User u = input.getObject(User.class);
95
 
96
                        userDAO.insert(u);
97
 
98
                        setSessionObj(u);
99
 
100
                        setSessionGroup(u.getGroup());
101
 
102
                        addMessage("registration_ok");
103
 
104
                        return CREATED;
105
                }
106
        }
107
}