[jboss-svn-commits] JBL Code SVN: r19378 - in labs/jbosslabs/labs-3.0-build: core/core-model/src/main/java/org/jboss/labs/core/model/auth and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Apr 2 10:50:01 EDT 2008


Author: szimano
Date: 2008-04-02 10:50:01 -0400 (Wed, 02 Apr 2008)
New Revision: 19378

Added:
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ProjectRole.java
Modified:
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java
   labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java
   labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/grant_superroles.xhtml
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_user.xhtml
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/review_privileges.xhtml
Log:
auth for user

Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java	2008-04-02 13:40:54 UTC (rev 19377)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java	2008-04-02 14:50:01 UTC (rev 19378)
@@ -33,6 +33,7 @@
 import org.jboss.labs.core.model.auth.Binding;
 import org.jboss.labs.core.model.auth.CustomID;
 import org.jboss.labs.core.model.auth.ProjectID;
+import org.jboss.labs.core.model.auth.ProjectRole;
 import org.jboss.labs.core.model.auth.Service;
 import org.jboss.labs.core.model.auth.ServiceRole;
 import org.jboss.labs.core.model.auth.UserRole;
@@ -427,4 +428,15 @@
 	 * @return Map of bindings AuthID -> Set of service roles
 	 */
 	public Map<AuthID, Set<ServiceRole>> getBindingsForUserRole(UserRole ur);
+
+	/**
+	 * Gets user role for a project and project role.
+	 * 
+	 * @param projectId
+	 *            Project id
+	 * @param projectRole
+	 *            Project role
+	 * @return UserRole
+	 */
+	public UserRole getProjectRole(String projectId, ProjectRole projectRole);
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java	2008-04-02 13:40:54 UTC (rev 19377)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java	2008-04-02 14:50:01 UTC (rev 19378)
@@ -247,4 +247,12 @@
 	 * @return All users
 	 */
 	public Set<User> getAllUsers();
+
+	/**
+	 * This will change user's details (merge it with database).
+	 * 
+	 * @param user User to modify
+	 * @throws NoSuchUserException If user doesn't exist
+	 */
+	public void updateUser(User user) throws NoSuchUserException;
 }

Added: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ProjectRole.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ProjectRole.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ProjectRole.java	2008-04-02 14:50:01 UTC (rev 19378)
@@ -0,0 +1,34 @@
+/*
+ * JBoss Labs. http://labs.jboss.com/jbosslabs
+ * 
+ * Copyright (C) 2008  Red Hat Middleware, LLC. All rights reserved.
+ * 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ * 
+ * Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik, 
+ * 	Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+ */
+package org.jboss.labs.core.model.auth;
+
+/**
+ * @author tomaszszymanski
+ *
+ */
+public enum ProjectRole {
+	ADMIN,
+	CONTRIBUTOR,
+	EDITOR,
+	TRANSLATOR;
+}

Modified: labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java	2008-04-02 13:40:54 UTC (rev 19377)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java	2008-04-02 14:50:01 UTC (rev 19378)
@@ -46,6 +46,7 @@
 import org.jboss.labs.core.model.auth.Binding;
 import org.jboss.labs.core.model.auth.CustomID;
 import org.jboss.labs.core.model.auth.ProjectID;
+import org.jboss.labs.core.model.auth.ProjectRole;
 import org.jboss.labs.core.model.auth.Service;
 import org.jboss.labs.core.model.auth.ServiceRole;
 import org.jboss.labs.core.model.auth.User;
@@ -56,6 +57,7 @@
 import org.jboss.labs.exception.auth.NoSuchSuperUserException;
 import org.jboss.labs.exception.auth.NoSuchUserException;
 import org.jboss.labs.exception.auth.NoSuchUserRoleException;
+import org.jboss.labs.exception.auth.RoleExistsException;
 import org.jboss.labs.injection.ejb3.LabsInjectionInterceptor;
 
 import com.google.inject.Inject;
@@ -561,4 +563,34 @@
 		return m;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.jboss.labs.auth.RoleBinderService#getProjectRole(java.lang.String,
+	 *      org.jboss.labs.core.model.auth.ProjectRole)
+	 */
+	public UserRole getProjectRole(String projectId, ProjectRole projectRole) {
+		String roleId = projectId
+				+ "-"
+				+ projectRole.toString().substring(
+						projectRole.toString().lastIndexOf('.') + 1);
+
+		UserRole uRole;
+
+		try {
+			uRole = userService.getUserRole(roleId);
+		} catch (NoSuchUserRoleException e) {
+			uRole = new UserRole(roleId, "Role for all "
+					+ projectRole.toString().substring(
+							projectRole.toString().lastIndexOf('.') + 1)
+					+ " in project " + projectId);
+			try {
+				userService.addUserRole(uRole);
+			} catch (RoleExistsException e1) {
+				// not going to happen
+			}
+		}
+
+		return uRole;
+	}
 }

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-04-02 13:40:54 UTC (rev 19377)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java	2008-04-02 14:50:01 UTC (rev 19378)
@@ -69,29 +69,20 @@
 
 		if (manager.createQuery("SELECT u FROM User u").setMaxResults(1)
 				.getResultList().size() == 0) {
-			User admin = new User("admin");
-			admin.setPassword(AuthHelper.countMD5("admin"));
-			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");
+			addDummyUser("bob", "Bob", "McWhirter");
+			addDummyUser("tomek", "Tomek", "Szymanski");
+			addDummyUser("adam", "Adam", "Warski");
+			addDummyUser("przemek", "Przemek", "Dej");
+			addDummyUser("rysiek", "Rysiek", "Kozmik");
+			addDummyUser("james", "James", "Cobb");
+			addDummyUser("mark", "Mark", "Newton");
+			addDummyUser("cheyenne", "Cheyenne", "Weaver");
+			addDummyUser("pawel", "Pawel", "Wrzeszcz");
+			addDummyUser("sacha", "Sasha", "Laborney");
 
-			try {
-				addNewUser(user);
-				addNewUser(admin);
-			} catch (UserExistsException e2) {
-				// won't happen
-				log.error(e2);
-			}
+			User admin = addDummyUser("admin", "Admin", "Admin");
+			User user = addDummyUser("user", "User", "User");
 
 			UserRole adminRole = new UserRole("Administrators",
 					"System administartors");
@@ -141,16 +132,20 @@
 		return ctx.proceed();
 	}
 
-	private void add(String u) {
+	private User addDummyUser(String u, String name, String lastName)
+			throws UserExistsException {
 		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.setFirstName(name);
+		user.setLastName(lastName);
+		user.setFakeEmail(u + "[AT]jboss.org");
+		user.setBio(name + " " + lastName + " is a good guy");
+		user.setWebsite("http://www." + u + ".org");
+
+		addNewUser(user);
+
+		return user;
 	}
 
 	public void bindRoleToUser(Principal user, UserRole role)
@@ -439,7 +434,9 @@
 				.getResultList());
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.jboss.labs.auth.UserService#getAllUsers()
 	 */
 	@SuppressWarnings("unchecked")
@@ -447,4 +444,15 @@
 		return new TreeSet(manager.createQuery("SELECT u from User u")
 				.getResultList());
 	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.jboss.labs.auth.UserService#changeUserDetails(org.jboss.labs.core.model.auth.User)
+	 */
+	public void updateUser(User user) throws NoSuchUserException {
+		getUser(user);
+
+		manager.merge(user);
+	}
 }

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java	2008-04-02 13:40:54 UTC (rev 19377)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java	2008-04-02 14:50:01 UTC (rev 19378)
@@ -36,6 +36,7 @@
 import org.jboss.labs.core.model.auth.ServiceRole;
 import org.jboss.labs.core.model.auth.User;
 import org.jboss.labs.core.model.auth.UserRole;
+import org.jboss.labs.exception.auth.NoSuchUserException;
 import org.jboss.labs.exception.auth.NoSuchUserRoleException;
 import org.jboss.labs.injection.seam.Guice;
 import org.jboss.seam.ScopeType;
@@ -78,8 +79,12 @@
 	@DataModel
 	private List<User> allUsers;
 
+	private List<User> allUsersNonFiltered;
+
 	private List<User> usersInRole;
 
+	private String searchString;
+
 	@In(required = false)
 	ServiceManager services;
 
@@ -93,7 +98,8 @@
 
 	@Factory("allUsers")
 	public void findUsers() {
-		allUsers = new Vector<User>(userService.getAllUsers());
+		allUsersNonFiltered = new Vector<User>(userService.getAllUsers());
+		allUsers = new Vector<User>(allUsersNonFiltered);
 	}
 
 	public void setRole() {
@@ -181,4 +187,65 @@
 		return c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":"
 				+ c.get(Calendar.SECOND);
 	}
+
+	public User getCurrentUser() {
+		return currentUser;
+	}
+
+	public void saveUser() {
+		if (currentUser != null) {
+			try {
+				userService.updateUser(currentUser);
+				ViewHelper.addMessage("User saved");
+			} catch (NoSuchUserException e) {
+				ViewHelper.addErrorMessage(e);
+			}
+		}
+	}
+
+	public String getSearchString() {
+		return searchString;
+	}
+
+	public void setSearchString(String searchString) {
+		this.searchString = searchString;
+
+		String[] tokens = searchString.split(" ");
+
+		if (searchString != null && searchString.length() > 2) {
+			allUsers = new Vector<User>();
+
+			for (User u : allUsersNonFiltered) {
+				if (userMatches(tokens, u)) {
+					allUsers.add(u);
+				}
+			}
+		} else {
+			allUsers = new Vector<User>(allUsersNonFiltered);
+		}
+	}
+
+	private boolean userMatches(String[] search, User u) {
+
+		for (String s : search) {
+			boolean isOkOne = false;
+			String sLow = s.toLowerCase();
+
+			if (u.getName().toLowerCase().contains(sLow)) {
+				isOkOne = true;
+			} else if (u.getFirstName().toLowerCase().contains(sLow)) {
+				isOkOne = true;
+			} else if (u.getLastName().toLowerCase().contains(sLow)) {
+				isOkOne = true;
+			} else if (u.getEmail().toLowerCase().contains(sLow)) {
+				isOkOne = true;
+			}
+
+			if (isOkOne == false) {
+				return false;
+			}
+		}
+
+		return true;
+	}
 }

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/grant_superroles.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/grant_superroles.xhtml	2008-04-02 13:40:54 UTC (rev 19377)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/grant_superroles.xhtml	2008-04-02 14:50:01 UTC (rev 19378)
@@ -12,18 +12,40 @@
 
 		<a4j:form>
 			<h:panelGroup>
-				<h:panelGroup id="buttons">
-					<h:outputText value="Privileges list:"></h:outputText>
-					<rich:dataList value="#{reviewPrivs.rolePrivList}" var="priv">
-						<h:outputText value="#{priv}" />
-					</rich:dataList>
-				</h:panelGroup>
+				<a4j:outputPanel id="userDetails">
+					<h:panelGrid columns="2" rendered="#{users.currentUser != null}">
+						<h:outputText value="User login" />
+						<h:inputText value="#{users.currentUser.name}" readonly="true"></h:inputText>
+						<h:outputText value="First name" />
+						<h:inputText value="#{users.currentUser.firstName}"></h:inputText>
+						<h:outputText value="Last name" />
+						<h:inputText value="#{users.currentUser.lastName}"></h:inputText>
+						<h:outputText value="Email" />
+						<h:inputText value="#{users.currentUser.email}"></h:inputText>
+						<h:outputText value="Fake email" />
+						<h:inputText value="#{users.currentUser.fakeEmail}"></h:inputText>
+						<h:outputText value="Picture URL" />
+						<h:inputText value="#{users.currentUser.pictureURL}"></h:inputText>
+						<h:outputText value="Website" />
+						<h:inputText value="#{users.currentUser.website}"></h:inputText>
+						<h:outputText value="New password" />
+						<h:inputSecret value=""></h:inputSecret>
+						<h:outputText value="New password again" />
+						<h:inputSecret value=""></h:inputSecret>
+						<h:outputText value="Bio"/>
+						<h:inputTextarea value="#{users.currentUser.bio}"/>
+						
+						<a4j:commandButton action="#{users.saveUser}" value="Save"/>
+					</h:panelGrid>
+					
+				</a4j:outputPanel>
 
 				<ui:include src="include/choose_user.xhtml" />
 
 				<!-- ui:include src="include/choose_project.xhtml" />
 				<ui:include src="include/show_userrole.xhtml" /> -->
 
+				
 			</h:panelGroup>
 		</a4j:form>
 

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_user.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_user.xhtml	2008-04-02 13:40:54 UTC (rev 19377)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_user.xhtml	2008-04-02 14:50:01 UTC (rev 19378)
@@ -6,8 +6,18 @@
 	xmlns:rich="http://richfaces.org/rich"
 	xmlns:a4j="http://richfaces.org/a4j">
 	
+	Search:
+	<h:inputText value="#{users.searchString}">
+		<a4j:support event="onkeyup" reRender="userList, listScroller"></a4j:support>
+	</h:inputText>
+
+
+	<rich:datascroller id="listScroller" align="left" for="userList"
+		maxPages="20" />
+	<rich:spacer height="30" />
+
 	<rich:dataTable width="483" id="userList" rows="10" columnClasses="col"
-		value="#{allUsers}" var="user" >
+		value="#{allUsers}" var="user">
 
 		<f:facet name="header">
 			<rich:columnGroup>
@@ -28,13 +38,13 @@
 		<h:column>
 			<h:outputText value="#{user.firstName} #{user.lastName}" />
 		</h:column>
-		
+
 		<h:column>
-			<a4j:commandButton value="Choose" reRender="buttons,privDesc,roleList" action="#{users.setRole}" />
+			<a4j:commandButton value="Choose"
+				reRender="buttons,privDesc,roleList,userDetails"
+				action="#{users.setRole}" />
 		</h:column>
 	</rich:dataTable>
-	
-	<rich:spacer height="30" />
-	<rich:datascroller id="listScroller" align="left" for="userList"
-		maxPages="20" />
+
+
 </h:panelGroup>
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/review_privileges.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/review_privileges.xhtml	2008-04-02 13:40:54 UTC (rev 19377)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/review_privileges.xhtml	2008-04-02 14:50:01 UTC (rev 19378)
@@ -22,7 +22,7 @@
 				<ui:include src="include/choose_user_role.xhtml" />
 
 				<ui:include src="include/show_userrole.xhtml" />
-
+			
 			</h:panelGroup>
 		</a4j:form>
 




More information about the jboss-svn-commits mailing list