/** * Copyright 2012 Comcast Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.comcast.cmb.common.controller; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import com.comcast.cmb.common.model.User; import com.comcast.cmb.common.persistence.IUserPersistence; import com.comcast.cmb.common.persistence.PersistenceFactory; import com.comcast.cmb.common.util.PersistenceException; /** * Administrator application. * @author bwolf, aseem, baosen, tina, michael */ public class AdminServlet extends AdminServletBase { private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(AdminServlet.class); @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (redirectNonAdminUser(request, response)) { return; } CMBControllerServlet.valueAccumulator.initializeAllCounters(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); Map<?, ?> parameters = request.getParameterMap(); String userName = request.getParameter("user"); String passwd = request.getParameter("password"); String isAdminStr = request.getParameter("isAdmin"); String description = request.getParameter("description") + ""; IUserPersistence userHandler = PersistenceFactory.getUserPersistence(); if (parameters.containsKey("Create")) { try { if (userHandler.getUserByName(userName) != null) { out.println("<p><i>User already exists!</i></p>"); logger.debug("event=user_already_exists user_name=" + userName); } else { Boolean isAdmin = Boolean.parseBoolean(isAdminStr); userHandler.createUser(userName, passwd, isAdmin, description); logger.debug("event=create_user user_name=" + userName); } } catch (PersistenceException ex) { logger.error("event=create_user user_name=" + userName, ex); throw new ServletException(ex); } } else if (parameters.containsKey("Delete")) { try { userHandler.deleteUser(userName); logger.debug("event=delete_user user_name=" + userName); } catch (PersistenceException ex) { logger.error("event=delete_user user_name=" + userName, ex); throw new ServletException(ex); } } out.println("<html>"); header(request, out, "All Users"); out.println("<body>"); out.println("<h2>All Users</h2>"); out.print("<form action=\"/webui\" method=POST>"); out.print("<table><tr><td>Username:</td><td>Password:</td><td>Description:</td><td></td></tr>"); out.print("<tr>" + "<td><input type='text' name='user'/></td>" + "<td><input type='password' name='password'></td>" + "<td><input type='text' name='description'/></td>" + "<td><input type='checkbox' id='isAdmin' name='isAdmin' value='true'><label for='isAdmin'>Is Admin</label></td>" + "<td><input type='submit' value='Create' name='Create' /></td></tr>"); out.print("</table>"); out.print("</form>"); List<User> users = new ArrayList<User>(); try { users = userHandler.getAllUsers(); Collections.sort(users, new Comparator() { public int compare(Object o1, Object o2) { User u1 = (User) o1; User u2 = (User) o2; return u1.getUserName().compareToIgnoreCase(u2.getUserName()); } }); } catch (PersistenceException ex) { logger.error("event=get_all_users", ex); throw new ServletException(ex); } for (int i = 0; users != null && i < users.size(); i++) { if (i == 0) { out.println("<p><hr width='80%' align='left' /><p>"); out.println("<table class='alternatecolortable' border='1' width='80%' >"); out.println("<tr><th>User Name</th>"); out.println("<th>User ID</th>"); out.println("<th>Is Admin</th>"); out.println("<th>Access Key</th>"); out.println("<th>Access Secret</th><th> </th><th> </th><th> </th></tr>"); } User user = (User)users.get(i); out.println("<tr>"); out.println("<form action=\"/"+response.encodeURL("webui")+"\" method=POST>"); out.println("<td>"+user.getUserName() +"<input type='hidden' name='user' value="+user.getUserName()+">" + (user.getDescription().isEmpty()? "":"<br/><i>" + user.getDescription() + "</i>") + "</td>"); out.println("<td>"+user.getUserId()+"</td>"); out.println("<td>"+user.getIsAdmin()+"</td>"); out.println("<td>"+user.getAccessKey()+"</td>"); out.println("<td>"+user.getAccessSecret()+"</td>"); out.println("<td><a href='/webui/cnsuser?userId="+user.getUserId()+"'>CNS</a></td>"); out.println("<td><a href='/webui/cqsuser?userId="+user.getUserId()+"'>CQS</a></td>"); out.println("<td><input type='submit' value='Delete' name='Delete' onclick=\"return confirm('Are you sure you want to delete user "+user.getUserName()+"?')\" /></td></form></tr>"); } out.println("</table></body></html>"); CMBControllerServlet.valueAccumulator.deleteAllCounters(); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } }