OSDN Git Service

Initial commit
[ultramonkey-l7/l7gui.git] / src / src / org / ultramonkey / l7 / view / UserAddServlet.java
1 package org.ultramonkey.l7.view;
2
3 import java.io.IOException;
4 import java.util.Enumeration;
5 import java.util.regex.Matcher;
6 import java.util.regex.Pattern;
7 import java.util.*;
8
9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import javax.servlet.http.HttpSession;
13
14 import org.apache.log4j.Logger;
15 import org.ultramonkey.l7.model.FileNotWriteException;
16 import org.ultramonkey.l7.model.LogCategorySet;
17 import org.ultramonkey.l7.model.Message;
18 import org.ultramonkey.l7.model.MessageView;
19 import org.ultramonkey.l7.model.UserData;
20 import org.ultramonkey.l7.model.UserManager;
21
22 /**
23  * 
24  * <p>
25  * class UserAddServlet
26  * </p>
27  * <p>
28  * Copyright(c) NTT COMWARE 2008
29  * </p>
30  * 
31  * @author kubota
32  */
33 public class UserAddServlet extends org.ultramonkey.l7.view.L7guiServletBase {
34         static final long serialVersionUID = 1L;
35
36         private Logger logger = Logger.getLogger(LogCategorySet.GUI_IO);
37
38         /*
39          * (non-Java-doc)
40          * 
41          * @see javax.servlet.http.HttpServlet#HttpServlet()
42          */
43         public UserAddServlet() {
44                 super();
45         // --- debug log (constructor) ---
46                 if (logger.isDebugEnabled()) {
47                         logger.debug("11321 class UserAddServlet created.");
48                 }
49                 // --- debug log (constructor) ---
50         }
51
52         /*
53          * (non-Java-doc)
54          * 
55          * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
56          *      HttpServletResponse response)
57          */
58         protected void doGet(HttpServletRequest request,
59                         HttpServletResponse response) throws ServletException, IOException {
60                 // --- debug log (in method) ---
61                 if (logger.isDebugEnabled()) {
62                         StringBuffer buf = new StringBuffer();
63             buf.append("UserAddServlet::doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException in ");
64             buf.append("request=(" + request + "), ");
65             buf.append("response=(" + response + ")");
66             logger.debug("11322 " + buf.toString());
67             request.setCharacterEncoding("UTF-8");
68                         logger.debug("11323 QueryString=\"" + request.getQueryString() + "\"");
69                 }
70                 // --- debug log (in method) ---
71
72                 response.sendRedirect(RedirectPages.LOGIN);
73
74                 // --- debug log (out method) ---
75                 if (logger.isDebugEnabled()) {
76             logger.debug("11324 UserAddServlet::doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
77                 }
78                 // --- debug log (out method) ---
79                 return;
80         }
81
82         /*
83          * (non-Java-doc)
84          * 
85          * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
86          *      HttpServletResponse response)
87          */
88         protected void doPost(HttpServletRequest request,
89                         HttpServletResponse response) throws ServletException, IOException {
90                 // --- debug log (in method) ---
91                 if (logger.isDebugEnabled()) {
92                         StringBuffer buf = new StringBuffer();
93             buf.append("UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException in ");
94             buf.append("request=(" + request + "), ");
95             buf.append("response=(" + response + ")");
96             logger.debug("11325 " + buf.toString());
97             request.setCharacterEncoding("UTF-8");
98                         Enumeration keys = request.getParameterNames();
99                         String post = "";
100                         while (keys.hasMoreElements()) {
101                                 if (post.length() != 0)
102                                         post += "&";
103                                 String key = (String) keys.nextElement();
104                                 post += key + "=" + request.getParameter(key);
105                         }
106                         logger.debug("11326 PostData=\"" + post + "\"");
107                 }
108                 // --- debug log (in method) ---
109                 
110                 // check login session
111                 super.doPost(request, response);
112
113                 HttpSession session = request.getSession(false);
114                 if (login == false || session == null) {
115                         if (session != null) {
116                                 MessageView error = new MessageView(41080, LogCategorySet.GUI_USER_AUTHENTICATION,
117                                                 Message.INVALID_SESSSION);
118                                 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
119                         }
120                         response.sendRedirect(RedirectPages.LOGIN);
121                         // --- debug log (out method) ---
122                         if (logger.isDebugEnabled()) {
123                     logger.debug("11327 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
124                         }
125                         // --- debug log (out method) ---
126                         return;
127                 }
128
129        request.setCharacterEncoding("UTF-8");
130                 String userId = request.getParameter("userId");
131                 String description = request.getParameter("description");
132                 String newPass1 = request.getParameter("new1_passwd");
133                 String newPass2 = request.getParameter("new2_passwd");
134                 String button_mode = request.getParameter("button");
135
136                 if ((userId == null) || (description == null) || (newPass1 == null)
137                                 || (newPass2 == null) || (button_mode == null)
138                                 || (button_mode.equals(ButtonMode.ADD) == false)) {
139                         MessageView error = new MessageView(41081, LogCategorySet.GUI_USER_MANAGE,
140                                         Message.UNEXPECTED_ERROR);
141                         session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
142                         response.sendRedirect(RedirectPages.LOGIN);
143                         // --- debug log (out method) ---
144                         if (logger.isDebugEnabled()) {
145                     logger.debug("11328 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
146                         }
147                         // --- debug log (out method) ---
148                         return;
149                 }
150
151                 boolean validationFlag = true;
152                 validationFlag = validationCheck(session, userId, description,
153                                 newPass1, newPass2);
154                 if (validationFlag == false) {
155                         UserData inputUser = new UserData();
156                         inputUser.userName = userId;
157                         inputUser.description = description;
158                         session.setAttribute(SessionKeys.INPUT_USERDATA, inputUser);
159                         response.sendRedirect(RedirectPages.USER_ADD);
160                         // --- debug log (out method) ---
161                         if (logger.isDebugEnabled()) {
162                     logger.debug("11329 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
163                         }
164                         // --- debug log (out method) ---
165                         return;
166                 }
167
168                 UserManager user = UserManager.getInstance();
169                 
170                 Vector<UserData> userList;
171                 boolean addUser = false;
172                 try {
173                         userList = user.getUserList();
174                         int userCount = userList.size();
175                         if (userCount >= 16){
176                                 MessageView error = new MessageView(41082, LogCategorySet.GUI_IO_FILE,
177                                                 Message.USER_MAX);
178                                 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
179                                 response.sendRedirect(RedirectPages.USER_ADD_FAIL);
180                                 // --- debug log (out method) ---
181                                 if (logger.isDebugEnabled()) {
182                             logger.debug("11330 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
183                                 }
184                                 // --- debug log (out method) ---
185                                 return;
186                         }
187                         
188                         addUser = user.addUser(userId, newPass1, 0, description);
189                 }
190                 catch (FileNotWriteException e) {
191                         MessageView error = new MessageView(41083, LogCategorySet.GUI_IO_FILE, Message.WRITE_ERROR);
192                         session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
193                         response.sendRedirect(RedirectPages.LOGIN);
194                         // --- debug log (out method) ---
195                         if (logger.isDebugEnabled()) {
196                     logger.debug("11331 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
197                         }
198                         // --- debug log (out method) ---
199                         return;
200                 } 
201                 catch(Exception e){
202                         MessageView error = new MessageView(41084, LogCategorySet.GUI_START_STOP,
203                         Message.UNEXPECTED_ERROR);
204                         session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
205                         response.sendRedirect(RedirectPages.LOGIN);
206                         // --- debug log (out method) ---
207                         if (logger.isDebugEnabled()) {
208                     logger.debug("11332 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
209                         }
210                         // --- debug log (out method) ---
211                         return;
212                 }
213                 
214                 if (addUser == true) {
215                         MessageView message = new MessageView(21041, LogCategorySet.GUI_USER_MANAGE,
216                                         Message.USER_ADD_SUCCESS);
217                         session.setAttribute(SessionKeys.RESULT_MESSAGE, message);
218                         session.setAttribute(SessionKeys.GUI_SYNC_STATE, SessionKeys.NO_SYNC);
219                         response.sendRedirect(RedirectPages.USER_MANAGE);
220                 } else {
221                         MessageView error = new MessageView(41085, LogCategorySet.GUI_USER_MANAGE,
222                                         Message.SAME_USER_EXISTS);
223                         session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
224                         response.sendRedirect(RedirectPages.USER_ADD_FAIL);
225                 }
226
227                 // --- debug log (out method) ---
228                 if (logger.isDebugEnabled()) {
229             logger.debug("11333 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
230                 }
231                 // --- debug log (out method) ---
232                 return;
233         }
234
235         /**
236          * 
237          * <p>
238          * validationCheck method
239          * </p>
240          * 
241          * @param session
242          * @param userId
243          * @param description
244          * @param curPass
245          * @param newPass1
246          * @param newPass2
247          * @return
248          */
249         protected boolean validationCheck(HttpSession session, String userId,
250                         String description, String newPass1, String newPass2) {
251                 // --- debug log (in method) ---
252                 if (logger.isDebugEnabled()) {
253                         StringBuffer buf = new StringBuffer();
254                         buf.append("UserAddServlet::validationCheck(HttpSession session, String userId, String description, String newPass1, String newPass2) in ");
255                         buf.append("session=(" + session + "), ");
256                         buf.append("userId=\"" + userId + "\", ");
257                         buf.append("description=\"" + description + "\", ");
258                         buf.append("newPass1=\"" + newPass1 + "\", ");
259                         buf.append("newPass2=\"" + newPass2);
260                         logger.debug("11334 " + buf.toString());
261                 }
262                 // --- debug log (in method) ---
263
264                 boolean validationFlag = true;
265                 final int MAX_USER_LENGTH = 16;
266                 final int MAX_DESCRIPTION_LENGTH = 64;
267                 final int MIN_PASS_LENGTH = 6;
268                 final int MAX_PASS_LENGTH = 16;
269
270                 Pattern pattern = Pattern.compile("[^\\x20-\\x7e]");
271
272                 if (session == null) {
273                         validationFlag = false;
274                 } else if (userId == null || description == null || newPass1 == null || newPass2 == null) {
275                         MessageView error = new MessageView(21042, LogCategorySet.GUI_USER_MANAGE, Message.INVALID_VALUE);
276                         session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
277                         validationFlag = false;
278                 } else if ((userId.length() == 0) && (description.length() == 0)
279                                 && (newPass1.length() == 0) && (newPass2.length() == 0)) {
280                         MessageView error = new MessageView(21043, LogCategorySet.GUI_USER_MANAGE, Message.NOT_EXIST);
281                         session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
282                         validationFlag = false;
283                 } else if ((userId.length() == 0) || (newPass1.length() == 0)
284                                 || (newPass2.length() == 0)) {
285                         MessageView error = new MessageView(21044, LogCategorySet.GUI_USER_MANAGE,
286                                         Message.NOT_INPUT_ITEM);
287                         session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
288                         validationFlag = false;
289                 }
290                 else {
291                         Matcher matcherUserId = pattern.matcher(userId);
292                         Matcher matcherNewPass1 = pattern.matcher(newPass1);
293                         Matcher matcherNewPass2 = pattern.matcher(newPass2);
294                         Matcher matcherDescription = pattern.matcher(description);
295
296                         if (matcherUserId.find() || matcherNewPass1.find()
297                                         || matcherNewPass2.find() || matcherDescription.find()) {
298                                 MessageView error = new MessageView(21045, LogCategorySet.GUI_USER_MANAGE, 
299                                                 "Input item : " + Message.INVALID_VALUE);
300                                 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
301                                 validationFlag = false;
302                         } else if (false == newPass1.equals(newPass2)) {
303                                 MessageView error = new MessageView(21046, LogCategorySet.GUI_USER_MANAGE,
304                                                 Message.NOT_EQUAL);
305                                 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
306                                 validationFlag = false;
307                         } else if ((userId.length() > MAX_USER_LENGTH)
308                                         || (newPass1.length() < MIN_PASS_LENGTH)
309                                         || (newPass1.length() > MAX_PASS_LENGTH)
310                                         || (description.length() > MAX_DESCRIPTION_LENGTH)) {
311                                 MessageView error = new MessageView(21047, LogCategorySet.GUI_USER_MANAGE,
312                                                 Message.INVALID_VALUE);
313                                 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
314                                 validationFlag = false;
315                         }
316                 }
317
318                 // --- debug log (out method) ---
319                 if (logger.isDebugEnabled()) {
320             logger.debug("11335 UserAddServlet::validationCheck(HttpSession session, String userId, String description, String newPass1, String newPass2) out return=" + validationFlag);
321                 }
322                 // --- debug log (out method) ---
323                 return validationFlag;
324         }
325 }