summaryrefslogtreecommitdiff
path: root/orkweb/src/net/sf/oreka/services/UserServiceHbn.java
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2005-12-02 16:31:48 +0000
committerHenri Herscher <henri@oreka.org>2005-12-02 16:31:48 +0000
commitc851c21a303403f24f19572ba09905473c55a8b9 (patch)
tree1b6524c555665882d375ffe06f620ea78d538735 /orkweb/src/net/sf/oreka/services/UserServiceHbn.java
parent53bc868730fd5da3d7bba4014783cca1d13dbb21 (diff)
Added Authentication against database
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@84 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkweb/src/net/sf/oreka/services/UserServiceHbn.java')
-rw-r--r--orkweb/src/net/sf/oreka/services/UserServiceHbn.java102
1 files changed, 102 insertions, 0 deletions
diff --git a/orkweb/src/net/sf/oreka/services/UserServiceHbn.java b/orkweb/src/net/sf/oreka/services/UserServiceHbn.java
new file mode 100644
index 0000000..f78947d
--- /dev/null
+++ b/orkweb/src/net/sf/oreka/services/UserServiceHbn.java
@@ -0,0 +1,102 @@
+package net.sf.oreka.services;
+
+import java.util.ArrayList;
+
+import net.sf.oreka.HibernateManager;
+import net.sf.oreka.orkweb.ContextListener;
+import net.sf.oreka.orkweb.OrkWeb;
+import net.sf.oreka.persistent.User;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.hibernate.HibernateException;
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+
+public class UserServiceHbn implements UserService {
+
+ static Logger logger = Logger.getLogger(UserServiceHbn.class);
+
+ public User login(String username, String password) {
+
+ Session hbnSession = null;
+ User user = null;
+
+ logger.debug("Trying to login user:" + username + " with passwd:" + password);
+
+ try
+ {
+ hbnSession = OrkWeb.hibernateManager.getSession();
+
+ String queryString = new String("from LoginString as ls left join ls.user as user where ls.loginString=:ls");
+ if (ContextListener.debugSwitch == false) {
+ queryString = queryString + " and user.password=:password";
+ }
+ Query query = hbnSession.createQuery(queryString);
+ query.setString("ls", username);
+ if (ContextListener.debugSwitch == false) {
+ query.setString("password", password);
+ }
+ ArrayList results = (ArrayList)query.list();
+ Object[] row = (Object[])query.uniqueResult();
+ if (row != null) {
+ user = (User)row[1];
+ logger.debug("Found userid:" + user.getId() + " for login string:" + username);
+ }
+ }
+ catch ( HibernateException he ) {
+ logger.error("login: exception:" + he.getClass().getName());
+ }
+ catch (Exception e)
+ {
+ logger.error("login: exception:", e);
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ return user;
+ }
+
+ public boolean changePassword(int userId, String oldPassword, String newPassword) {
+
+ Session hbnSession = null;
+ Transaction tx = null;
+ User user = null;
+ boolean success = false;
+
+ logger.debug("Trying to change password for userid:" + userId);
+
+ try
+ {
+ hbnSession = OrkWeb.hibernateManager.getSession();
+
+
+ user = (User)hbnSession.get(User.class, userId);
+ if(user == null) {
+ logger.warn("Userid:" + userId + " does not exist");
+ }
+ else {
+ if(user.getPassword().equals(oldPassword)) {
+ tx = hbnSession.beginTransaction();
+ user.setPassword(newPassword);
+ hbnSession.save(user);
+ tx.commit();
+ success = true;
+ logger.debug("Changed password for userid:" + userId);
+ }
+ }
+ }
+ catch ( HibernateException he ) {
+ logger.error("changePassword: exception:" + he.getClass().getName());
+ }
+ catch (Exception e)
+ {
+ logger.error("changePassword: exception:", e);
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ return success;
+ }
+}