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;
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;
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());
}
}
{
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", "");
return newPassword;
}
- else
- return null;
+ return null;
}
public void insert(HttpServletRequest aRequest, HttpServletResponse aResponse)
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);
}
{
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);
}
{
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);
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");
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);
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");
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));
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);
throw new ServletModuleFailure(e);
}
}
-
}