[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action ...
Christian Bauer
christian at hibernate.org
Wed Apr 4 06:38:13 EDT 2007
User: cbauer
Date: 07/04/04 06:38:13
Modified: examples/wiki/src/main/org/jboss/seam/wiki/core/action
Authenticator.java PreferenceEditor.java
PluginPreferenceEditor.java DirectoryHome.java
NodeBrowser.java WikiIdentity.java NodeHome.java
UserHome.java
Added: examples/wiki/src/main/org/jboss/seam/wiki/core/action
AdminHome.java
Log:
Switched to AJAX forms
Revision Changes Path
1.4 +39 -29 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/Authenticator.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Authenticator.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/Authenticator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- Authenticator.java 22 Mar 2007 12:16:07 -0000 1.3
+++ Authenticator.java 4 Apr 2007 10:38:13 -0000 1.4
@@ -6,6 +6,7 @@
import org.jboss.seam.wiki.core.dao.UserRoleAccessFactory;
import org.jboss.seam.wiki.core.model.*;
import org.jboss.seam.wiki.core.model.Role;
+import org.jboss.seam.wiki.core.action.prefs.UserManagementPreferences;
import org.jboss.seam.wiki.util.WikiUtil;
import org.jboss.seam.wiki.util.Hash;
import org.jboss.seam.ScopeType;
@@ -20,9 +21,6 @@
private UserDAO userDAO;
@In
- private NodeDAO nodeDAO;
-
- @In
private Hash hashUtil;
@In
@@ -61,6 +59,25 @@
if (user != null) {
user.setActivated(true);
user.setActivationCode(null);
+ Contexts.getEventContext().set("activatedUser", user);
+
+ // Optionally, create home directory
+ UserManagementPreferences userMgmtPrefs =
+ (UserManagementPreferences)Component.getInstance("userManagementPreferences");
+ if ( userMgmtPrefs.isCreateHomeAfterUserActivation() ) {
+ createHomeDirectory(user);
+ }
+
+ return "activated";
+ } else {
+ return "notFound";
+ }
+ }
+
+ @Transactional
+ public void createHomeDirectory(User user) {
+
+ NodeDAO nodeDAO = (NodeDAO)Component.getInstance("nodeDAO");
// Create home directory
Directory memberArea = (Directory)Component.getInstance("memberArea");
@@ -86,13 +103,6 @@
homeDirectory.addChild(homePage);
homeDirectory.setDefaultDocument(homePage);
nodeDAO.makePersistent(homeDirectory);
-
- Contexts.getEventContext().set("activatedUser", user);
-
- return "activated";
- } else {
- return "notFound";
- }
}
public String logout() {
1.2 +43 -62 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/PreferenceEditor.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PreferenceEditor.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/PreferenceEditor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- PreferenceEditor.java 2 Apr 2007 18:25:06 -0000 1.1
+++ PreferenceEditor.java 4 Apr 2007 10:38:13 -0000 1.2
@@ -1,16 +1,11 @@
package org.jboss.seam.wiki.core.action;
import org.jboss.seam.annotations.*;
-import org.jboss.seam.annotations.datamodel.DataModel;
-import org.jboss.seam.annotations.datamodel.DataModelSelection;
import org.jboss.seam.ScopeType;
import org.jboss.seam.Component;
-import org.jboss.seam.security.Identity;
-import org.jboss.seam.security.AuthorizationException;
import org.jboss.seam.core.FacesMessages;
import org.jboss.seam.wiki.preferences.*;
import org.jboss.seam.wiki.preferences.PreferenceRegistry;
-import org.jboss.seam.wiki.core.dao.UserDAO;
import org.jboss.seam.wiki.core.model.User;
import org.hibernate.validator.InvalidValue;
@@ -25,80 +20,62 @@
@Scope(ScopeType.CONVERSATION)
public class PreferenceEditor implements Serializable {
- @RequestParameter String visibility;
- @RequestParameter Long userId;
-
@In
private FacesMessages facesMessages;
- @DataModel
- private List<PreferenceComponent> preferenceComponents;
-
- @DataModelSelection
- private PreferenceComponent selectedPreferenceComponent;
-
+ private User user;
private PreferenceVisibility preferenceVisibility;
- private Object user;
private PreferenceComponent preferenceComponent;
private List<PreferenceValue> preferenceValues;
+ boolean valuesAreValid = true;
- @Create
- public void create() {
- if (PreferenceVisibility.USER.name().equals(visibility)) {
- preferenceVisibility = PreferenceVisibility.USER;
- loadUser();
- } else {
- if (!Identity.instance().hasPermission("User", "isAdmin", (User)Component.getInstance("currentUser")) ) {
- throw new AuthorizationException("You don't have permission for this operation");
- }
- preferenceVisibility = PreferenceVisibility.SYSTEM;
- }
- }
-
- @Factory("preferenceComponents")
- public void load() {
- PreferenceRegistry registry = (PreferenceRegistry)Component.getInstance("preferenceRegistry");
- preferenceComponents =
- new ArrayList<PreferenceComponent>(registry.getPreferenceComponents(preferenceVisibility));
- }
-
- @Transactional
public String save() {
+ if (preferenceComponent == null) return null;
- boolean validationOk = true;
- Map<PreferenceProperty, InvalidValue[]> invalidProperties = preferenceComponent.validate(preferenceValues);
- for (Map.Entry<PreferenceProperty, InvalidValue[]> entry : invalidProperties.entrySet()) {
- for (InvalidValue validationError : entry.getValue()) {
- validationOk = false;
-
- facesMessages.addFromResourceBundleOrDefault(
- FacesMessage.SEVERITY_ERROR,
- "preferenceValueValidationFailed." + preferenceComponent.getName() + "." + entry.getKey().getName(),
- "'" + entry.getKey().getDescription() + "': " + validationError.getMessage());
- }
- }
-
- if (!validationOk) return null;
+ validate();
+ if (!valuesAreValid) return "failed";
PreferenceProvider provider = (PreferenceProvider)Component.getInstance("preferenceProvider");
if (preferenceVisibility.equals(PreferenceVisibility.USER)) {
// Store prefs for a user
- preferenceValues = new ArrayList<PreferenceValue>(provider.store(preferenceComponent, new HashSet<PreferenceValue>(preferenceValues), user, null));
+ preferenceValues = new ArrayList<PreferenceValue>(
+ provider.store(preferenceComponent, new HashSet<PreferenceValue>(preferenceValues), user, null)
+ );
} else {
// Store system prefs
- preferenceValues = new ArrayList<PreferenceValue>(provider.store(preferenceComponent, new HashSet<PreferenceValue>(preferenceValues), null, null));
+ preferenceValues = new ArrayList<PreferenceValue>(
+ provider.store(preferenceComponent, new HashSet<PreferenceValue>(preferenceValues), null, null)
+ );
}
provider.flush();
- facesMessages.addFromResourceBundleOrDefault(
+ facesMessages.addToControlFromResourceBundleOrDefault(
+ "preferenceValidationErrors",
FacesMessage.SEVERITY_INFO,
- "wikiPreferencesSaved",
+ "preferencesSaved." + preferenceComponent.getName(),
"Preferences have been saved, continue editing or exit.");
return null;
}
- public void selectPreferenceComponent() {
+ public void validate() {
+ if (preferenceComponent == null) return;
+ valuesAreValid = true;
+ Map<PreferenceProperty, InvalidValue[]> invalidProperties = preferenceComponent.validate(preferenceValues);
+ for (Map.Entry<PreferenceProperty, InvalidValue[]> entry : invalidProperties.entrySet()) {
+ for (InvalidValue validationError : entry.getValue()) {
+ valuesAreValid = false;
+
+ facesMessages.addToControlFromResourceBundleOrDefault(
+ "preferenceValidationErrors",
+ FacesMessage.SEVERITY_ERROR,
+ "preferenceValueValidationFailed." + preferenceComponent.getName() + "." + entry.getKey().getName(),
+ preferenceComponent.getDescription() + " - '" + entry.getKey().getDescription() + "': " + validationError.getMessage());
+ }
+ }
+ }
+
+ public void selectPreferenceComponent(PreferenceComponent selectedPreferenceComponent) {
preferenceComponent = selectedPreferenceComponent;
PreferenceProvider provider = (PreferenceProvider)Component.getInstance("preferenceProvider");
@@ -112,6 +89,11 @@
}
}
+ public List<PreferenceComponent> loadPreferenceComponents() {
+ PreferenceRegistry registry = (PreferenceRegistry)Component.getInstance("preferenceRegistry");
+ return new ArrayList<PreferenceComponent>(registry.getPreferenceComponents(preferenceVisibility));
+ }
+
public PreferenceComponent getPreferenceComponent() {
return preferenceComponent;
}
@@ -120,13 +102,12 @@
return preferenceValues;
}
- protected void loadUser() {
- if (userId != null) {
- UserDAO userDAO = (UserDAO)Component.getInstance("userDAO");
- user = userDAO.findUser(userId);
- } else {
- user = Component.getInstance("currentUser");
+ public void setUser(User user) {
+ this.user = user;
}
+
+ public void setPreferenceVisibility(PreferenceVisibility preferenceVisibility) {
+ this.preferenceVisibility = preferenceVisibility;
}
}
1.2 +0 -3 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/PluginPreferenceEditor.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PluginPreferenceEditor.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/PluginPreferenceEditor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- PluginPreferenceEditor.java 2 Apr 2007 18:25:06 -0000 1.1
+++ PluginPreferenceEditor.java 4 Apr 2007 10:38:13 -0000 1.2
@@ -22,8 +22,6 @@
private List<PreferenceValue> preferenceValues = new ArrayList<PreferenceValue>();
public PluginPreferenceEditor(String pluginPreferenceName) {
- System.out.println("#### NEW EDITOR FOR PLUGIN: " + pluginPreferenceName);
-
this.pluginPreferenceName = pluginPreferenceName;
// Load the preference component
@@ -43,7 +41,6 @@
}
public List<PreferenceValue> getPreferenceValues() {
- System.out.println("######### GET PREFERENCE VALUES FROM PLUGIN EDITOR");
return preferenceValues;
}
1.5 +1 -1 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/DirectoryHome.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DirectoryHome.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/DirectoryHome.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- DirectoryHome.java 20 Mar 2007 02:38:15 -0000 1.4
+++ DirectoryHome.java 4 Apr 2007 10:38:13 -0000 1.5
@@ -67,7 +67,7 @@
}
protected boolean prepareRemove() {
- return getInstance().getParent() == null; // Can not delete wiki root
+ return getInstance().getParent() != null; // Can not delete wiki root
}
/* -------------------------- Internal Methods ------------------------------ */
1.10 +41 -14 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/NodeBrowser.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: NodeBrowser.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/NodeBrowser.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- NodeBrowser.java 2 Apr 2007 18:25:06 -0000 1.9
+++ NodeBrowser.java 4 Apr 2007 10:38:13 -0000 1.10
@@ -3,11 +3,15 @@
import org.jboss.seam.annotations.*;
import org.jboss.seam.ScopeType;
import org.jboss.seam.Component;
+import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.Conversation;
import org.jboss.seam.core.Manager;
+import org.jboss.seam.core.ConversationEntries;
+import org.jboss.seam.core.ConversationEntry;
import org.jboss.seam.security.Identity;
import org.jboss.seam.wiki.core.dao.NodeDAO;
import org.jboss.seam.wiki.core.model.*;
+import org.jboss.seam.wiki.core.action.prefs.WikiPreferences;
import org.jboss.seam.wiki.util.WikiUtil;
import java.util.*;
@@ -45,6 +49,9 @@
@RequestParameter
protected String nodeName;
+ @RequestParameter
+ protected String lastConversationId;
+
protected Long nodeId;
public Long getNodeId() { return nodeId; }
public void setNodeId(Long nodeId) { this.nodeId = nodeId; }
@@ -90,6 +97,9 @@
// We also don't want to redirect the long-running conversation, the caller has ended it already
redirect.setConversationPropagationEnabled(false);
+ // This is not needed again
+ redirect.getParameters().remove("lastConversationId");
+
redirect.returnToCapturedView();
}
@@ -101,32 +111,41 @@
// If the last browsed page had a conversation identifier (we assume of a temporary conversation), remove it
redirect.getParameters().remove("cid");
- redirect.returnToCapturedView();
- }
+ // This is not needed again
+ redirect.getParameters().remove("lastConversationId");
- public void redirectToCurrentUserHome() {
- User currentUser = (User)Component.getInstance("currentUser");
- Map<String, Object> parameters = new HashMap<String, Object>();
- parameters.put("nodeId", currentUser.getMemberHome().getId());
- Manager.instance().redirect("/display.xhtml", parameters, true);
+ redirect.returnToCapturedView();
}
- // TODO: Typical exit method to get out of a root or nested conversation, JBSEAM-906
+ // TODO: Typical exit method to get out of a root, nested, or parallel root conversation, JBSEAM-906
public void exitConversation(Boolean endBeforeRedirect) {
Conversation currentConversation = Conversation.instance();
if (currentConversation.isNested()) {
// End this nested conversation and return to last rendered view-id of parent
currentConversation.endAndRedirect(endBeforeRedirect);
} else {
- // End this root conversation
+ // Always end this conversation
currentConversation.end();
- // Return to the view-id that was captured when this conversation started
+
+ ConversationEntry entryPoint =
+ (ConversationEntry)Contexts.getConversationContext().get("conversationEntryPoint");
+ if (entryPoint != null) {
+ // We came here from another conversation
+ if (entryPoint.isDisplayable()) {
+ entryPoint.switchConversation();
+ } else {
+ // The entry point is gone... What now? Go to start page...
+ Manager.instance().redirect("/display.xhtml", new HashMap<String,Object>(), true);
+ }
+ } else {
+ // We came here from a non-conversational page
if (endBeforeRedirect)
redirectToLastBrowsedPage();
else
redirectToLastBrowsedPageWithConversation();
}
}
+ }
// Just a convenience method for recursive calling
protected void addDirectoryToPath(List<Node> path, Node directory) {
@@ -138,6 +157,14 @@
addDirectoryToPath(path, directory.getParent());
}
+ public void captureConversationEntryPoint() {
+ if (lastConversationId != null) {
+ ConversationEntries allConversations = ConversationEntries.instance();
+ Contexts.getConversationContext()
+ .set("conversationEntryPoint", allConversations.getConversationEntry(lastConversationId));
+ }
+ }
+
@Transactional
public String prepare() {
1.3 +1 -1 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/WikiIdentity.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: WikiIdentity.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/WikiIdentity.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- WikiIdentity.java 2 Apr 2007 18:25:06 -0000 1.2
+++ WikiIdentity.java 4 Apr 2007 10:38:13 -0000 1.3
@@ -158,7 +158,7 @@
*/
private boolean checkEditUser(User user) {
if (currentAccessLevel == UserRoleAccessFactory.ADMINROLE_ACCESSLEVEL) return true;
- if (currentUser.getId() == user.getId()) return true;
+ if (currentUser.getId().equals(user.getId())) return true;
return false;
}
1.11 +0 -0 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/NodeHome.java
(In the diff below, changes in quantity of whitespace are not shown.)
1.5 +83 -31 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/UserHome.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UserHome.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/UserHome.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- UserHome.java 2 Apr 2007 18:25:06 -0000 1.4
+++ UserHome.java 4 Apr 2007 10:38:13 -0000 1.5
@@ -1,27 +1,29 @@
package org.jboss.seam.wiki.core.action;
-
+import org.jboss.seam.Component;
+import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.*;
+import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.FacesMessages;
import org.jboss.seam.core.Renderer;
-import org.jboss.seam.core.Conversation;
import org.jboss.seam.framework.EntityHome;
+import org.jboss.seam.security.AuthorizationException;
+import org.jboss.seam.security.Identity;
+import org.jboss.seam.wiki.core.action.prefs.UserManagementPreferences;
+import org.jboss.seam.wiki.core.action.prefs.WikiPreferences;
import org.jboss.seam.wiki.core.dao.UserDAO;
-import org.jboss.seam.wiki.core.model.*;
import org.jboss.seam.wiki.core.model.Role;
-import org.jboss.seam.wiki.core.action.prefs.UserManagementPreferences;
+import org.jboss.seam.wiki.core.model.User;
+import org.jboss.seam.wiki.preferences.PreferenceComponent;
+import org.jboss.seam.wiki.preferences.PreferenceVisibility;
import org.jboss.seam.wiki.util.Hash;
-import org.jboss.seam.Component;
-import org.jboss.seam.ScopeType;
-import org.jboss.seam.security.Identity;
-import org.jboss.seam.security.AuthorizationException;
-import org.jboss.seam.contexts.Contexts;
import javax.faces.application.FacesMessage;
+import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import java.util.List;
@Name("userHome")
@Scope(ScopeType.CONVERSATION)
@@ -37,23 +39,26 @@
private UserDAO userDAO;
@In
- private Hash hashUtil;
+ private UserManagementPreferences userManagementPreferences;
@In
- private UserManagementPreferences userManagementPreferences;
+ NodeBrowser browser;
@In
- private Renderer renderer;
+ private Hash hashUtil;
@In
- NodeBrowser browser;
+ private Renderer renderer;
- private org.jboss.seam.wiki.core.model.Role defaultRole;
+ @DataModel
+ private List<PreferenceComponent> userPreferenceComponents;
+ PreferenceEditor preferenceEditor;
private String oldUsername;
private String password;
private String passwordControl;
private List<Role> roles;
+ private org.jboss.seam.wiki.core.model.Role defaultRole;
@Override
public Object getId() {
@@ -69,13 +74,19 @@
public void create() {
super.create();
- defaultRole = (Role)Component.getInstance("newUserDefaultRole");
- oldUsername = getInstance().getUsername();
if (isManaged()) {
if (!Identity.instance().hasPermission("User", "edit", getInstance()) ) {
throw new AuthorizationException("You don't have permission for this operation");
}
roles = getInstance().getRoles();
+ oldUsername = getInstance().getUsername();
+
+ } else {
+ UserManagementPreferences userMgmtPrefs =
+ (UserManagementPreferences) Component.getInstance("userManagementPreferences");
+ if (!userMgmtPrefs.isEnableRegistration())
+ throw new RuntimeException("User registration has been disabled");
+ defaultRole = (Role)Component.getInstance("newUserDefaultRole");
}
}
@@ -110,7 +121,9 @@
try {
// Send confirmation email
-// renderer.render("/themes/" + wikiPreferences.getThemeName() + "/mailtemplates/confirmationRegistration.xhtml");
+ renderer.render("/themes/"
+ + ((WikiPreferences)Component.getInstance("wikiPreferences")).getThemeName()
+ + "/mailtemplates/confirmationRegistration.xhtml");
// Redirect to last viewed page with message
facesMessages.addFromResourceBundleOrDefault(
@@ -123,13 +136,12 @@
facesMessages.addFromResourceBundleOrDefault(
FacesMessage.SEVERITY_INFO,
getMessageKeyPrefix() + "confirmationEmailSent",
- "Activiate account: confirmRegistration.seam?activationCode=" + getInstance().getActivationCode());
+ "Activiate account: /confirmRegistration.seam?activationCode=" + getInstance().getActivationCode());
*/
browser.exitConversation(false);
} catch (Exception ex) {
- ex.printStackTrace(System.out);
facesMessages.add(FacesMessage.SEVERITY_ERROR, "Couldn't send confirmation email: " + ex.getMessage());
return "error";
}
@@ -149,6 +161,12 @@
getInstance().getRoles().clear();
getInstance().getRoles().addAll(roles);
+ // Preferences
+ if (preferenceEditor != null) {
+ String editorFailed = preferenceEditor.save();
+ if (editorFailed != null) return null;
+ }
+
boolean loginCredentialsModified = false;
// User wants to change his password
@@ -188,9 +206,9 @@
getMessageKeyPrefix() + "reloginRequired",
"Credentials updated, please logout and authenticate yourself with the new credentials."
);
+ browser.exitConversation(false);
}
}
- browser.exitConversation(false);
}
return outcome;
@@ -198,6 +216,8 @@
public String remove() {
+ // TODO: Not fully implemented
+
// Remove all role assignments
getInstance().getRoles().clear();
@@ -217,7 +237,7 @@
}
public String getUpdatedMessage() {
- return "The profile '" + getInstance().getUsername() + "' has been updated.";
+ return "The user '" + getInstance().getUsername() + "' has been updated.";
}
public String getPassword() { return password; }
@@ -230,13 +250,35 @@
@Restrict("#{s:hasPermission('User', 'editRoles', currentUser)}")
public void setRoles(List<Role> roles) { this.roles = roles; }
+ @Restrict("#{s:hasPermission('User', 'isAdmin', currentUser)}")
+ public void createHomeDirectory() {
+
+ Authenticator auth = (Authenticator)Component.getInstance("authenticator");
+ auth.createHomeDirectory(getInstance());
+
+ facesMessages.addFromResourceBundleOrDefault(
+ FacesMessage.SEVERITY_INFO,
+ getMessageKeyPrefix() + "homeDirectoryCreated",
+ "New home directory has been queued, update to commit the change"
+ );
+ }
+
+ @Factory("userPreferenceComponents")
+ public void loadUserPreferenceComponents() {
+ preferenceEditor = (PreferenceEditor)Component.getInstance("prefEditor");
+ preferenceEditor.setPreferenceVisibility(PreferenceVisibility.USER);
+ preferenceEditor.setUser(getInstance());
+ userPreferenceComponents = preferenceEditor.loadPreferenceComponents();
+ Contexts.getConversationContext().set("preferenceEditor", preferenceEditor);
+ }
+
// Validation rules for persist(), update(), and remove();
- private boolean passwordAndControlNotNull() {
+ public boolean passwordAndControlNotNull() {
if (getPassword() == null || getPassword().length() == 0 ||
getPasswordControl() == null || getPasswordControl().length() == 0) {
facesMessages.addToControlFromResourceBundleOrDefault(
- "password",
+ "passwordControl",
FacesMessage.SEVERITY_ERROR,
getMessageKeyPrefix() + "passwordOrPasswordControlEmpty",
"Please enter your password twice."
@@ -246,8 +288,7 @@
return true;
}
-
- private boolean passwordMatchesRegex() {
+ public boolean passwordMatchesRegex() {
Matcher matcher = Pattern.compile(userManagementPreferences.getPasswordRegex()).matcher(getPassword());
if (!matcher.find()) {
facesMessages.addToControlFromResourceBundleOrDefault(
@@ -261,10 +302,10 @@
return true;
}
- private boolean passwordMatchesControl() {
+ public boolean passwordMatchesControl() {
if (!password.equals(passwordControl) ) {
facesMessages.addToControlFromResourceBundleOrDefault(
- "password",
+ "passwordControl",
FacesMessage.SEVERITY_ERROR,
getMessageKeyPrefix() + "passwordControlNoMatch",
"The passwords don't match."
@@ -274,9 +315,7 @@
return true;
}
- @Transactional
- private boolean isUniqueUsername() {
- getEntityManager().joinTransaction();
+ public boolean isUniqueUsername() {
User foundUser = userDAO.findUser(getInstance().getUsername(), false, false);
if ( foundUser != null && foundUser != getInstance() ) {
facesMessages.addToControlFromResourceBundleOrDefault(
@@ -290,4 +329,17 @@
return true;
}
+ public void validateUsername() {
+ isUniqueUsername();
+ }
+
+ public void validatePassword() {
+ if (getPassword() != null && getPassword().length() > 0)
+ passwordMatchesRegex();
+ }
+
+ public void validatePasswordControl() {
+ passwordMatchesControl();
+ }
+
}
1.1 date: 2007/04/04 10:38:13; author: cbauer; state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/AdminHome.java
Index: AdminHome.java
===================================================================
package org.jboss.seam.wiki.core.action;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.*;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.security.Restrict;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.FacesMessages;
import org.jboss.seam.framework.EntityHome;
import org.jboss.seam.security.AuthorizationException;
import org.jboss.seam.security.Identity;
import org.jboss.seam.wiki.core.model.User;
import org.jboss.seam.wiki.preferences.PreferenceComponent;
import org.jboss.seam.wiki.preferences.PreferenceVisibility;
import javax.faces.application.FacesMessage;
import java.util.List;
@Name("adminHome")
@Scope(ScopeType.CONVERSATION)
public class AdminHome {
@In
private FacesMessages facesMessages;
PreferenceEditor preferenceEditor;
@Create
public void create() {
if (!Identity.instance().hasPermission("User", "isAdmin", (User)Component.getInstance("currentUser") ) ) {
throw new AuthorizationException("You don't have permission for this operation");
}
}
@Restrict("#{s:hasPermission('User', 'isAdmin', currentUser)}")
public String update() {
// Preferences
if (preferenceEditor != null) {
String editorFailed = preferenceEditor.save();
if (editorFailed != null) return null;
}
facesMessages.addFromResourceBundleOrDefault(
FacesMessage.SEVERITY_INFO,
"systemSettingsUpdated",
"System settings updated"
);
return null;
}
@DataModel
private List<PreferenceComponent> systemPreferenceComponents;
@Factory("systemPreferenceComponents")
public void loadUserPreferenceComponents() {
preferenceEditor = (PreferenceEditor)Component.getInstance("prefEditor");
preferenceEditor.setPreferenceVisibility(PreferenceVisibility.SYSTEM);
systemPreferenceComponents = preferenceEditor.loadPreferenceComponents();
Contexts.getConversationContext().set("preferenceEditor", preferenceEditor);
}
}
More information about the jboss-cvs-commits
mailing list