new admin templates! with many thanks to init...
[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 the com.oreilly.servlet library, any library
22  * licensed under the Apache Software License, The Sun (tm) Java Advanced
23  * Imaging library (JAI), The Sun JIMI library (or with modified versions of
24  * the above that use the same license as the above), and distribute linked
25  * combinations including the two.  You must obey the GNU General Public
26  * License in all respects for all of the code used other than the above
27  * mentioned libraries.  If you modify this file, you may extend this exception
28  * to your version of the file, but you are not obligated to do so.  If you do
29  * not wish to do so, delete this exception statement from your version.
30  */
31
32 package mircoders.module;
33
34 import java.util.HashMap;
35 import java.util.Map;
36
37 import mir.entity.EntityList;
38 import mir.log.LoggerWrapper;
39 import mir.module.AbstractModule;
40 import mir.module.ModuleExc;
41 import mir.module.ModuleFailure;
42 import mir.storage.StorageObject;
43 import mir.util.JDBCStringRoutines;
44 import mircoders.entity.EntityUsers;
45 import mircoders.global.MirGlobal;
46
47
48 /*
49  *  Users Module -
50  *
51  *
52  * @author RK
53  */
54
55 public class ModuleUsers extends AbstractModule
56 {
57   static LoggerWrapper logger = new LoggerWrapper("Module.Users");
58
59   public ModuleUsers(StorageObject theStorage)
60   {
61     if (theStorage == null)
62       logger.warn("ModuleUsers(): StorageObject was null!");
63
64     this.theStorage = theStorage;
65   }
66
67   /**
68    * Authenticate and lookup a user
69    *
70    * @param user              The user to lookup
71    * @param password          The password
72    * @return                  The authenticated user, or <code>null</code> if the user
73    *                          doesn't exist, or the supplied password is invalid.
74    * @throws ModuleException
75    */
76
77   public EntityUsers getUserForLogin(String user, String password) throws ModuleExc, ModuleFailure {
78     try {
79       String whereString =
80           "login='" + JDBCStringRoutines.escapeStringLiteral(user) + "' " +
81           "and password='" + JDBCStringRoutines.escapeStringLiteral(
82           MirGlobal.localizer().adminInterface().makePasswordDigest(password)) +
83           "' " +
84           "and is_admin='1'";
85
86       EntityList userList = getByWhereClause(whereString, -1);
87
88       if (userList != null && userList.getCount() == 1)
89         return (EntityUsers) userList.elementAt(0);
90       else
91         return null;
92     }
93     catch (Throwable t) {
94       throw new ModuleFailure(t);
95     }
96   }
97
98   private Map digestPassword(Map aValues) throws ModuleExc, ModuleFailure {
99     Map result = aValues;
100
101     try {
102       if (aValues.containsKey("password")) {
103         result = new HashMap();
104         result.putAll(aValues);
105         result.put("password",
106             MirGlobal.localizer().adminInterface().
107             makePasswordDigest( (String) aValues.get("password")));
108       }
109     }
110     catch (Throwable t) {
111       throw new ModuleFailure("ModuleUsers.add: " + t.getMessage(), t);
112     }
113
114     return result;
115   }
116
117   public String add (Map theValues) throws ModuleExc, ModuleFailure {
118     try {
119       return super.add(digestPassword(theValues));
120     }
121     catch (Throwable t) {
122       throw new ModuleFailure(t);
123     }
124   }
125
126   /**
127    * Standardfunktion, um einen Datensatz via StorageObject zu aktualisieren
128    * @param theValues Hash mit Spalte/Wert-Paaren
129    * @return Id des eingef?gten Objekts
130    * @exception ModuleException
131    */
132   public String set (Map theValues) throws ModuleExc, ModuleFailure {
133     try {
134       return super.set(digestPassword(theValues));
135     }
136     catch (Throwable t) {
137       throw new ModuleFailure(t);
138     }
139   }
140 }