[jboss-svn-commits] JBL Code SVN: r18741 - in labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth: impl and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Mar 6 15:01:18 EST 2008
Author: szimano
Date: 2008-03-06 15:01:18 -0500 (Thu, 06 Mar 2008)
New Revision: 18741
Modified:
labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/AuthHelper.java
labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java
Log:
ALLUSERS role for all users JBLAB-901
Modified: labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/AuthHelper.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/AuthHelper.java 2008-03-06 19:47:40 UTC (rev 18740)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/AuthHelper.java 2008-03-06 20:01:18 UTC (rev 18741)
@@ -25,66 +25,68 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import javax.persistence.EntityManager;
-
import org.apache.log4j.Logger;
-import org.jboss.labs.core.model.auth.ProjectID;
public class AuthHelper {
-
+
private final static Logger log = Logger.getLogger(AuthHelper.class);
-
+
public static final String GLOBAL_PROJECT = "Labs::Global::Superuser::Project";
-
+
public static final String COMMON_ROLE_SUFIX = "_USERS";
-
+
+ public static final String GLOBAL_ROLE = "ALLUSERS";
+
+ public static final String GLOBAL_ROLE_DESC = "Role for all users";
+
public static String countMD5(String password) {
try {
-
+
MessageDigest algorithm = MessageDigest.getInstance("MD5");
algorithm.reset();
algorithm.update(password.getBytes());
byte messageDigest[] = algorithm.digest();
-
+
return encodeBase16(messageDigest);
-
+
} catch (NoSuchAlgorithmException e) {
// shouldn't happen
throw new RuntimeException(e);
}
}
-
+
private static String encodeBase16(byte[] bytes) {
- StringBuffer sb = new StringBuffer(bytes.length * 2);
- for (int i = 0; i < bytes.length; i++) {
- byte b = bytes[i];
- // top 4 bits
- char c = (char) ((b >> 4) & 0xf);
- if (c > 9)
- c = (char) ((c - 10) + 'a');
- else
- c = (char) (c + '0');
- sb.append(c);
- // bottom 4 bits
- c = (char) (b & 0xf);
- if (c > 9)
- c = (char) ((c - 10) + 'a');
- else
- c = (char) (c + '0');
- sb.append(c);
- }
- return sb.toString();
- }
-
+ StringBuffer sb = new StringBuffer(bytes.length * 2);
+ for (int i = 0; i < bytes.length; i++) {
+ byte b = bytes[i];
+ // top 4 bits
+ char c = (char) ((b >> 4) & 0xf);
+ if (c > 9)
+ c = (char) ((c - 10) + 'a');
+ else
+ c = (char) (c + '0');
+ sb.append(c);
+ // bottom 4 bits
+ c = (char) (b & 0xf);
+ if (c > 9)
+ c = (char) ((c - 10) + 'a');
+ else
+ c = (char) (c + '0');
+ sb.append(c);
+ }
+ return sb.toString();
+ }
+
public static <E extends Enum<E>> String getServiceID(E serviceRole) {
return serviceRole.getDeclaringClass().getCanonicalName();
}
-
+
public static <E extends Enum<E>> String getServiceRoleID(E serviceRole) {
return getServiceID(serviceRole) + "." + serviceRole.toString();
}
-
+
public static String getCommonProjectId(String projectId) {
return projectId + COMMON_ROLE_SUFIX;
}
+
}
Modified: labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java 2008-03-06 19:47:40 UTC (rev 18740)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java 2008-03-06 20:01:18 UTC (rev 18741)
@@ -60,10 +60,13 @@
private final static Logger log = Logger.getLogger(UserServiceImpl.class);
+ private static UserRole globalUserRole;
+
@AroundInvoke
public Object init(InvocationContext ctx) throws Exception {
// if user db is empty add admin and a user with dummy roles
// Administrators and Users and make admin a super user
+
if (manager.createQuery("SELECT u FROM User u").setMaxResults(1)
.getResultList().size() == 0) {
User admin = new User("admin");
@@ -71,18 +74,18 @@
User user = new User("user");
user.setPassword(AuthHelper.countMD5("user"));
- add("bob");
- add("tomek");
- add("adam");
- add("przemek");
- add("rysiek");
- add("james");
- add("mark");
- add("cheyenne");
- add("pawel");
- add("sacha");
+ add("bob");
+ add("tomek");
+ add("adam");
+ add("przemek");
+ add("rysiek");
+ add("james");
+ add("mark");
+ add("cheyenne");
+ add("pawel");
+ add("sacha");
- try {
+ try {
addNewUser(user);
addNewUser(admin);
} catch (UserExistsException e2) {
@@ -135,18 +138,19 @@
return ctx.proceed();
}
- private void add(String u) {
- User user = new User(u);
+ private void add(String u) {
+ User user = new User(u);
user.setPassword(AuthHelper.countMD5(u));
- user.setEmail(u + "@jboss.org");
- try {
- addNewUser(user);
- } catch (UserExistsException e) {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- }
- }
+ user.setEmail(u + "@jboss.org");
+ try {
+ addNewUser(user);
+ } catch (UserExistsException e) {
+ e.printStackTrace(); // To change body of catch statement use
+ // File | Settings | File Templates.
+ }
+ }
- public void bindRoleToUser(Principal user, UserRole role)
+ public void bindRoleToUser(Principal user, UserRole role)
throws NoSuchUserException {
User userEn = getUser(user);
@@ -165,9 +169,9 @@
userEn.addRole(roleEn);
manager.merge(userEn);
-
+
roleEn.addUser(userEn);
-
+
manager.merge(roleEn);
}
@@ -180,7 +184,10 @@
throws NoSuchUserException {
User u = getUser(login);
- return new HashSet<UserRole>(u.getUserRoles());
+ Set<UserRole> roles = new HashSet<UserRole>(u.getUserRoles());
+ roles.add(getGlobalRole());
+
+ return roles;
}
public User getUserByLogin(String login) throws NoSuchUserException {
@@ -189,11 +196,13 @@
public void removeRoleFromUser(Principal user, UserRole role)
throws NoSuchRoleForUserException, NoSuchUserException {
- User u = getUser(user);
+ if (!role.equals(getGlobalRole())) {
+ User u = getUser(user);
- u.removeRole(role);
+ u.removeRole(role);
- manager.merge(u);
+ manager.merge(u);
+ }
}
/*
@@ -233,6 +242,11 @@
throw new NoSuchUserException("User " + login + " doesn't exist");
}
+ if (!userEn.getUserRoles().contains(getGlobalRole())) {
+ userEn.addRole(getGlobalRole());
+ manager.merge(userEn);
+ }
+
return userEn;
}
@@ -273,11 +287,13 @@
* @see org.jboss.labs.auth.UserService#removeUserRole(org.jboss.labs.core.model.auth.UserRole)
*/
public void removeUserRole(UserRole role) throws NoSuchUserRoleException {
- UserRole roleEn = getUserRole(role);
+ if (!role.equals(getGlobalRole())) {
+ UserRole roleEn = getUserRole(role);
- binderService.removeAllBindingsForUserRole(roleEn);
-
- manager.remove(roleEn);
+ binderService.removeAllBindingsForUserRole(roleEn);
+
+ manager.remove(roleEn);
+ }
}
/*
@@ -334,9 +350,11 @@
User userEn = getUser(user);
for (UserRole role : userRoles) {
- UserRole roleEn = getUserRole(role);
+ if (!role.equals(getGlobalRole())) {
+ UserRole roleEn = getUserRole(role);
- userEn.removeRole(roleEn);
+ userEn.removeRole(roleEn);
+ }
}
manager.persist(userEn);
@@ -349,7 +367,7 @@
*/
public void removeUser(Principal user) throws NoSuchUserException {
User userEn = getUser(user);
-
+
for (UserRole ur : userEn.getUserRoles()) {
ur.removeUser(userEn);
manager.merge(ur);
@@ -386,8 +404,24 @@
*
* @see org.jboss.labs.auth.UserService#getUsersFromUserRole(org.jboss.labs.core.model.auth.UserRole)
*/
- public Set<User> getUsersFromUserRole(UserRole role) throws NoSuchUserRoleException {
+ public Set<User> getUsersFromUserRole(UserRole role)
+ throws NoSuchUserRoleException {
return new TreeSet<User>(getUserRole(role.getId()).getUsers());
}
+ public UserRole getGlobalRole() {
+ if (globalUserRole == null) {
+ globalUserRole = manager.find(UserRole.class,
+ AuthHelper.GLOBAL_ROLE);
+
+ if (globalUserRole == null) {
+ globalUserRole = new UserRole(AuthHelper.GLOBAL_ROLE,
+ AuthHelper.GLOBAL_ROLE_DESC);
+
+ manager.persist(globalUserRole);
+ }
+ }
+
+ return globalUserRole;
+ }
}
More information about the jboss-svn-commits
mailing list