1 66 package com.ivata.groupware.admin.security.server; 67 68 import org.picocontainer.MutablePicoContainer; 69 import org.picocontainer.PicoContainer; 70 import org.picocontainer.defaults.DefaultPicoContainer; 71 72 import com.ivata.groupware.admin.security.user.UserDO; 73 import com.ivata.groupware.container.PicoContainerFactory; 74 import com.ivata.groupware.container.persistence.QueryPersistenceManager; 75 import com.ivata.mask.persistence.PersistenceSession; 76 import com.ivata.mask.util.SystemException; 77 78 93 public class PlainTextSecurityServer implements SecurityServer { 94 98 private QueryPersistenceManager persistenceManager; 99 100 106 public PlainTextSecurityServer(QueryPersistenceManager persistenceManager) { 107 this.persistenceManager = persistenceManager; 108 } 109 110 117 public void addUser(final SecuritySession securitySession, 118 final String userName, 119 final String fullName) throws SystemException { 120 } 122 130 public void checkPassword(final SecuritySession securitySession, 131 final String userName, 132 final String password) throws SystemException { 133 PersistenceSession persistenceSession = 134 persistenceManager.openSession(); 135 try { 136 137 UserDO user = (UserDO) persistenceManager.findInstance(persistenceSession, 138 "securityUserByName", 139 new Object [] { userName }); 140 141 String userPassword = user.getPassword(); 142 if (password == null) { 143 if (userPassword != null) { 144 throw new SystemException("Null password specified - " 145 + "not null in data store for user '" 146 + userName 147 + "'."); 148 } 149 } else if (!password.equals(userPassword)) { 150 throw new SystemException("Passwords do not match for " 151 + "user '" 152 + userName 153 + "'."); 154 } 155 } catch (Exception e) { 156 persistenceSession.cancel(); 157 throw new SystemException(e); 158 } finally { 159 persistenceSession.close(); 160 } 161 } 162 165 public final String getSystemUserName(final SecuritySession securitySession, 166 final String userName) { 167 return userName; 168 } 169 170 173 public final String getUserNameFromSystemUserName( 174 final SecuritySession securitySession, 175 final String systemUserName) { 176 return systemUserName; 177 } 178 179 186 public boolean isUser(final SecuritySession securitySession, 187 String userNameParam) { 188 return false; 189 } 190 199 public SecuritySession login(final UserDO user, 200 final String password) throws SystemException { 201 checkPassword(loginGuest(), user.getName(), password); 202 PicoContainer globalContainer = PicoContainerFactory.getInstance() 203 .getGlobalContainer(); 204 MutablePicoContainer sessionContainer = new DefaultPicoContainer(globalContainer); 205 PlainTextSecuritySession session = 206 new PlainTextSecuritySession(sessionContainer, user); 207 sessionContainer.registerComponentInstance(SecuritySession.class, session); 208 session.setPassword(password); 209 return session; 210 } 211 212 215 public SecuritySession loginGuest() throws SystemException { 216 PicoContainer globalContainer = PicoContainerFactory.getInstance() 217 .getGlobalContainer(); 218 UserDO guestUser = new UserDO(); 219 guestUser.setDeleted(false); 220 guestUser.setEnabled(true); 221 guestUser.setName("guest"); 222 MutablePicoContainer sessionContainer = new DefaultPicoContainer(globalContainer); 223 SecuritySession session = new PlainTextSecuritySession(sessionContainer, guestUser); 224 sessionContainer.registerComponentInstance(SecuritySession.class, session); 225 return session; 226 } 227 228 234 public void removeUser(final SecuritySession securitySession, 235 final String userName) throws SystemException { 236 } 238 239 247 public final void setPassword(final SecuritySession securitySession, 248 final String userName, 249 final String password) throws SystemException { 250 PersistenceSession persistenceSession; 251 persistenceSession = persistenceManager.openSession(); 252 try { 253 UserDO user = (UserDO) persistenceManager.findInstance(persistenceSession, 254 "securityUserByName", 255 new Object [] { userName }); 256 user.setPassword(password); 257 persistenceManager.amend(persistenceSession, user); 258 } catch (Exception e) { 259 persistenceSession.cancel(); 260 throw new SystemException(e); 261 } finally { 262 persistenceSession.close(); 263 } 264 }; 265 266 } 267 | Popular Tags |