From c851c21a303403f24f19572ba09905473c55a8b9 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Fri, 2 Dec 2005 16:31:48 +0000 Subject: Added Authentication against database git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@84 09dcff7a-b715-0410-9601-b79a96267cd0 --- .../src/net/sf/oreka/services/UserServiceHbn.java | 102 +++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 orkweb/src/net/sf/oreka/services/UserServiceHbn.java (limited to 'orkweb/src/net/sf/oreka/services/UserServiceHbn.java') 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; + } +} -- cgit v1.2.3