xml encoding problem...
[mir.git] / source / mircoders / module / ModuleUsers.java
1 /*
2  * Copyright (C) 2001, 2002 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with  any library licensed under the Apache Software License, 
22  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library 
23  * (or with modified versions of the above that use the same license as the above), 
24  * and distribute linked combinations including the two.  You must obey the 
25  * GNU General Public License in all respects for all of the code used other than 
26  * the above mentioned libraries.  If you modify this file, you may extend this 
27  * exception to your version of the file, but you are not obligated to do so.  
28  * If you do not wish to do so, delete this exception statement from your version.
29  */
30
31 package mircoders.module;
32
33 import java.util.HashMap;
34 import java.util.Map;
35
36 import mir.entity.EntityList;
37 import mir.log.LoggerWrapper;
38 import mir.module.AbstractModule;
39 import mir.module.ModuleExc;
40 import mir.module.ModuleFailure;
41 import mir.storage.StorageObject;
42 import mir.util.JDBCStringRoutines;
43 import mircoders.entity.EntityUsers;
44 import mircoders.global.MirGlobal;
45
46
47 /*
48  *  Users Module -
49  *
50  *
51  * @author RK
52  */
53
54 public class ModuleUsers extends AbstractModule
55 {
56   static LoggerWrapper logger = new LoggerWrapper("Module.Users");
57
58   public ModuleUsers(StorageObject theStorage)
59   {
60     if (theStorage == null)
61       logger.warn("ModuleUsers(): StorageObject was null!");
62
63     this.theStorage = theStorage;
64   }
65
66   /**
67    * Authenticate and lookup a user
68    *
69    * @param user              The user to lookup
70    * @param password          The password
71    * @return                  The authenticated user, or <code>null</code> if the user
72    *                          doesn't exist, or the supplied password is invalid.
73    * @throws ModuleException
74    */
75
76   public EntityUsers getUserForLogin(String user, String password) throws ModuleExc, ModuleFailure {
77     try {
78       String whereString =
79           "login='" + JDBCStringRoutines.escapeStringLiteral(user) + "' " +
80           "and password='" + JDBCStringRoutines.escapeStringLiteral(
81           MirGlobal.localizer().adminInterface().makePasswordDigest(password)) +
82           "' " +
83           "and is_admin='1'";
84
85       EntityList userList = getByWhereClause(whereString, -1);
86
87       if (userList != null && userList.getCount() == 1)
88         return (EntityUsers) userList.elementAt(0);
89       else
90         return null;
91     }
92     catch (Throwable t) {
93       throw new ModuleFailure(t);
94     }
95   }
96
97   private Map digestPassword(Map aValues) throws ModuleExc, ModuleFailure {
98     Map result = aValues;
99
100     try {
101       if (aValues.containsKey("password")) {
102         result = new HashMap();
103         result.putAll(aValues);
104         result.put("password",
105             MirGlobal.localizer().adminInterface().
106             makePasswordDigest( (String) aValues.get("password")));
107       }
108     }
109     catch (Throwable t) {
110       throw new ModuleFailure("ModuleUsers.add: " + t.getMessage(), t);
111     }
112
113     return result;
114   }
115
116   public String add (Map theValues) throws ModuleExc, ModuleFailure {
117     try {
118       return super.add(digestPassword(theValues));
119     }
120     catch (Throwable t) {
121       throw new ModuleFailure(t);
122     }
123   }
124
125   /**
126    * Standardfunktion, um einen Datensatz via StorageObject zu aktualisieren
127    * @param theValues Hash mit Spalte/Wert-Paaren
128    * @return Id des eingef?gten Objekts
129    * @exception ModuleException
130    */
131   public String set (Map theValues) throws ModuleExc, ModuleFailure {
132     try {
133       return super.set(digestPassword(theValues));
134     }
135     catch (Throwable t) {
136       throw new ModuleFailure(t);
137     }
138   }
139 }