X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=source%2Fmircoders%2Fservlet%2FServletModuleUsers.java;h=4d29ed4f771ecb38bed49e64b523abce94793112;hb=22a2f276fcc3efb4ae0e2bda7621e607df315129;hp=d9320a80b99654851d0709282bb348ac82431b44;hpb=04633fe2077c48dd8e3c6bb2d6f4c14eb24ba129;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleUsers.java b/source/mircoders/servlet/ServletModuleUsers.java index d9320a80..4d29ed4f 100755 --- a/source/mircoders/servlet/ServletModuleUsers.java +++ b/source/mircoders/servlet/ServletModuleUsers.java @@ -30,23 +30,13 @@ package mircoders.servlet; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import mir.entity.adapter.EntityAdapterEngine; import mir.entity.adapter.EntityAdapterModel; -import mir.entity.adapter.EntityIteratorAdapter; import mir.log.LoggerWrapper; import mir.servlet.ServletModule; import mir.servlet.ServletModuleExc; import mir.servlet.ServletModuleFailure; import mir.servlet.ServletModuleUserExc; -import mir.storage.StorageObjectFailure; -import mir.util.CachingRewindableIterator; import mir.util.HTTPRequestParser; import mir.util.URLBuilder; import mircoders.entity.EntityUsers; @@ -54,19 +44,16 @@ import mircoders.global.MirGlobal; import mircoders.module.ModuleUsers; import mircoders.storage.DatabaseUsers; -/* - * ServletModuleUsers - - * liefert HTML fuer Users +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.*; + +/** * * - * @author RK */ - public class ServletModuleUsers extends ServletModule { - private String editTemplate; - private String listTemplate; - private static ServletModuleUsers instance = new ServletModuleUsers(); public static ServletModule getInstance() { return instance; } protected ModuleUsers usersModule; @@ -75,15 +62,12 @@ public class ServletModuleUsers extends ServletModule super(); logger = new LoggerWrapper("ServletModule.Users"); - listTemplate = configuration.getString("ServletModule.Users.ListTemplate"); - editTemplate = configuration.getString("ServletModule.Users.ObjektTemplate"); - templateConfirmString = configuration.getString("ServletModule.Users.ConfirmTemplate"); - try { - usersModule = new ModuleUsers(DatabaseUsers.getInstance()); + definition = "user"; + usersModule = new ModuleUsers(); mainModule = usersModule; } - catch (StorageObjectFailure e) { + catch (Throwable e) { logger.debug("initialization of ServletModuleUsers failed!: " + e.getMessage()); } } @@ -123,8 +107,8 @@ public class ServletModuleUsers extends ServletModule { if ( (aRequestParser.getParameter("newpassword") != null && aRequestParser.getParameter("newpassword").length() > 0) || - (aRequestParser.getParameter("newpassword2") != null && - aRequestParser.getParameter("newpassword2").length() > 0) + (aRequestParser.getParameter("newpassword2") != null && + aRequestParser.getParameter("newpassword2").length() > 0) ) { String newPassword = aRequestParser.getParameterWithDefault("newpassword", ""); String newPassword2 = aRequestParser.getParameterWithDefault("newpassword2", ""); @@ -150,8 +134,7 @@ public class ServletModuleUsers extends ServletModule return newPassword; } - else - return null; + return null; } public void insert(HttpServletRequest aRequest, HttpServletResponse aResponse) @@ -170,8 +153,11 @@ public class ServletModuleUsers extends ServletModule throw new ServletModuleUserExc("user.error.missingpassword", new String[] {}); String id = mainModule.add(withValues); + + logAdminUsage(aRequest, id, "object added"); + if (requestParser.hasParameter("returnurl")) - redirect(aResponse, requestParser.getParameter("returnurl")); + ServletHelper.redirect(aResponse, requestParser.getParameter("returnurl")); else list(aRequest, aResponse); } @@ -184,19 +170,26 @@ public class ServletModuleUsers extends ServletModule { try { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - EntityUsers user = (EntityUsers) mainModule.getById(requestParser.getParameter("id")); + String id = requestParser.getParameter("id"); + EntityUsers user = (EntityUsers) mainModule.getById(id); MirGlobal.accessControl().user().assertMayEditUser(ServletHelper.getUser(aRequest), user); Map withValues = getIntersectingValues(aRequest, mainModule.getStorageObject()); + if (!withValues.containsKey("is_admin")) + withValues.put("is_admin","0"); + if (!withValues.containsKey("is_disabled")) + withValues.put("is_disabled","0"); String newPassword=validatePassword(ServletHelper.getUser(aRequest), requestParser); if (newPassword!=null) - withValues.put("password", newPassword); + withValues.put("password", MirGlobal.localizer().adminInterface().makePasswordDigest(newPassword)); mainModule.set(withValues); + logAdminUsage(aRequest, id, "object modified"); + if (requestParser.hasParameter("returnurl")) - redirect(aResponse, requestParser.getParameter("returnurl")); + ServletHelper.redirect(aResponse, requestParser.getParameter("returnurl")); else list(aRequest, aResponse); } @@ -209,22 +202,25 @@ public class ServletModuleUsers extends ServletModule { try { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - EntityUsers user = (EntityUsers) mainModule.getById(requestParser.getParameter("id")); + String id = requestParser.getParameter("id"); + EntityUsers user = (EntityUsers) mainModule.getById(id); MirGlobal.accessControl().user().assertMayChangeUserPassword(ServletHelper.getUser(aRequest), user); String newPassword=validatePassword(ServletHelper.getUser(aRequest), requestParser); if (newPassword!=null) { - user.setValueForProperty("password", newPassword); + user.setFieldValue("password", MirGlobal.localizer().adminInterface().makePasswordDigest(newPassword)); user.update(); + logAdminUsage(aRequest, id, "password changed"); + // hackish: to make sure the cached logged in user is up-to-date: ServletHelper.setUser(aRequest, (EntityUsers) mainModule.getById(ServletHelper.getUser(aRequest).getId())); } if (requestParser.hasParameter("returnurl")) - redirect(aResponse, requestParser.getParameter("returnurl")); + ServletHelper.redirect(aResponse, requestParser.getParameter("returnurl")); else - redirect(aResponse, ""); + ServletHelper.redirect(aResponse, ""); } catch (Throwable e) { throw new ServletModuleFailure(e); @@ -245,27 +241,17 @@ public class ServletModuleUsers extends ServletModule HttpServletResponse aResponse, int anOffset) throws ServletModuleExc { - HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); URLBuilder urlBuilder = new URLBuilder(); - EntityAdapterModel model; - int count; - int nrUsersPerPage = 20; try { Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}); - model = MirGlobal.localizer().dataModel().adapterModel(); - Object userList = - new CachingRewindableIterator( - new EntityIteratorAdapter( "", "login", nrUsersPerPage, - MirGlobal.localizer().dataModel().adapterModel(), "user", nrUsersPerPage, anOffset) - ); + List list = + EntityAdapterEngine.retrieveAdapterList(model, definition, "", "login", nrEntitiesPerListPage, anOffset); responseData.put("nexturl", null); responseData.put("prevurl", null); - count=mainModule.getSize(""); - urlBuilder.setValue("module", "Users"); urlBuilder.setValue("do", "list"); @@ -273,27 +259,26 @@ public class ServletModuleUsers extends ServletModule responseData.put("offset" , new Integer(anOffset).toString()); responseData.put("thisurl" , urlBuilder.getQuery()); - if (count>=anOffset+nrUsersPerPage) { - urlBuilder.setValue("offset", (anOffset + nrUsersPerPage)); + if (list.size()>=nrEntitiesPerListPage) { + urlBuilder.setValue("offset", (anOffset + nrEntitiesPerListPage)); responseData.put("nexturl" , urlBuilder.getQuery()); } if (anOffset>0) { - urlBuilder.setValue("offset", Math.max(anOffset - nrUsersPerPage, 0)); + urlBuilder.setValue("offset", Math.max(anOffset - nrEntitiesPerListPage, 0)); responseData.put("prevurl" , urlBuilder.getQuery()); } - responseData.put("users", userList); + responseData.put("users", list); responseData.put("mayDeleteUsers", new Boolean(MirGlobal.accessControl().user().mayDeleteUsers(ServletHelper.getUser(aRequest)))); responseData.put("mayAddUsers", new Boolean(MirGlobal.accessControl().user().mayAddUsers(ServletHelper.getUser(aRequest)))); responseData.put("mayEditUsers", new Boolean(MirGlobal.accessControl().user().mayEditUsers(ServletHelper.getUser(aRequest)))); responseData.put("from" , Integer.toString(anOffset+1)); - responseData.put("count", Integer.toString(count)); - responseData.put("to", Integer.toString(Math.min(anOffset+nrUsersPerPage, count))); + responseData.put("to", Integer.toString(anOffset+list.size())); responseData.put("offset" , Integer.toString(anOffset)); - ServletHelper.generateResponse(aResponse.getWriter(), responseData, listTemplate); + ServletHelper.generateResponse(aResponse.getWriter(), responseData, listGenerator); } catch (Throwable e) { throw new ServletModuleFailure(e); @@ -306,7 +291,7 @@ public class ServletModuleUsers extends ServletModule HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}); EntityAdapterModel model = MirGlobal.localizer().dataModel().adapterModel(); - Map user; + Object user; URLBuilder urlBuilder = new URLBuilder(); urlBuilder.setValue("module", "Users"); @@ -322,15 +307,15 @@ public class ServletModuleUsers extends ServletModule user = model.makeEntityAdapter("user", mainModule.getById(anId)); } else { - List fields = DatabaseUsers.getInstance().getFields(); + List fields = DatabaseUsers.getInstance().getFieldNames(); responseData.put("new", Boolean.TRUE); - user = new HashMap(); + Map emptyUser = new HashMap(); Iterator i = fields.iterator(); while (i.hasNext()) { - user.put(i.next(), null); + emptyUser.put(i.next(), null); } - MirGlobal.localizer().adminInterface().initializeArticle(user); + user = emptyUser; } responseData.put("user", user); responseData.put("passwordonly", new Boolean(anOnlyPassword)); @@ -338,7 +323,7 @@ public class ServletModuleUsers extends ServletModule responseData.put("returnurl", requestParser.getParameter("returnurl")); responseData.put("thisurl", urlBuilder.getQuery()); - ServletHelper.generateResponse(aResponse.getWriter(), responseData, editTemplate); + ServletHelper.generateResponse(aResponse.getWriter(), responseData, editGenerator); } catch (Throwable e) { throw new ServletModuleFailure(e); @@ -375,6 +360,5 @@ public class ServletModuleUsers extends ServletModule throw new ServletModuleFailure(e); } } - }