[jboss-cvs] jboss-seam/seam-gen/src ...

Shane Bryzak sbryzak at redhat.com
Wed Jan 9 22:33:52 EST 2008


  User: sbryzak2
  Date: 08/01/09 22:33:52

  Added:       seam-gen/src     UserAccount.java UserAction.java
                        UserSearch.java
  Removed:     seam-gen/src     Authenticator.java
  Log:
  added identity management to seam-gen
  
  Revision  Changes    Path
  1.1      date: 2008/01/10 03:33:52;  author: sbryzak2;  state: Exp;jboss-seam/seam-gen/src/UserAccount.java
  
  Index: UserAccount.java
  ===================================================================
  package @modelPackage@;
  
  import java.io.Serializable;
  import java.util.Set;
  
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.Id;
  import javax.persistence.JoinColumn;
  import javax.persistence.JoinTable;
  import javax.persistence.ManyToMany;
  import javax.persistence.OneToOne;
  import javax.persistence.Table;
  import javax.persistence.UniqueConstraint;
  
  import org.hibernate.validator.NotNull;
  
  @Entity
  @Table(uniqueConstraints = @UniqueConstraint(columnNames = "username"))
  public class UserAccount extends org.jboss.seam.security.management.UserAccount implements Serializable
  {
     private static final long serialVersionUID = 6368734442192368866L;
     
     private Integer accountId;
     private String username;
     private String passwordHash;
     private boolean enabled;   
     private AccountType accountType;
     private Set<org.jboss.seam.security.management.UserAccount> memberships;
     
     @Id @GeneratedValue
     public Integer getAccountId()
     {
        return accountId;
     }
     
     public void setAccountId(Integer accountId)
     {
        this.accountId = accountId;
     }
     
     @NotNull
     @Override
     public String getUsername()
     {
        return username;
     }
     
     @Override
     public void setUsername(String username)
     {
        this.username = username;
     }
     
     @Override   
     public String getPasswordHash()
     {
        return passwordHash;
     }
     
     @Override
     public void setPasswordHash(String passwordHash)
     {
        this.passwordHash = passwordHash;      
     }   
     
     @Override
     public AccountType getAccountType()
     {
        return accountType;
     }
     
     @Override
     public void setAccountType(AccountType accountType)
     {
        this.accountType = accountType;
     }
     
     @Override
     public boolean isEnabled()
     {
        return enabled;
     }
  
  
     @Override
     public void setEnabled(boolean enabled)
     {
        this.enabled = enabled;      
     }   
  
     @ManyToMany(targetEntity = UserAccount.class)
     @JoinTable(name = "AccountMembership", 
           joinColumns = @JoinColumn(name = "AccountId"),
           inverseJoinColumns = @JoinColumn(name = "MemberOf")
        )
     @Override
     public Set<org.jboss.seam.security.management.UserAccount> getMemberships()
     {
        return memberships;
     }
     
     @Override
     public void setMemberships(Set<org.jboss.seam.security.management.UserAccount> memberships)
     {
        this.memberships = memberships;
     }
  }
  
  
  
  1.1      date: 2008/01/10 03:33:52;  author: sbryzak2;  state: Exp;jboss-seam/seam-gen/src/UserAction.java
  
  Index: UserAction.java
  ===================================================================
  package @actionPackage@;
  
  import static org.jboss.seam.ScopeType.CONVERSATION;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import org.jboss.seam.annotations.Begin;
  import org.jboss.seam.annotations.In;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.core.Conversation;
  import org.jboss.seam.faces.FacesMessages;
  import org.jboss.seam.security.management.IdentityManager;
  
  @Name("userAction")
  @Scope(CONVERSATION)
  public class UserAction
  {
     private String username;
     private String password;
     private String confirm;
     private List<String> roles;
     private boolean enabled;
     
     @In IdentityManager identityManager;
     
     @Begin
     public void createUser()
     {
        roles = new ArrayList<String>();
     }
     
     @Begin
     public void editUser(String username)
     {
        this.username = username;
        roles = identityManager.getGrantedRoles(username);
        enabled = identityManager.isEnabled(username);
     }
        
     public String save()
     {
        if (identityManager.accountExists(username))
        {
           return saveExistingUser();
        }
        else
        {
           return saveNewUser();
        }
     }
     
     private String saveNewUser()
     {      
        if (!password.equals(confirm))
        {
           FacesMessages.instance().addToControl("password", "Passwords do not match");
           return "failure";
        }
        
        boolean success = identityManager.createAccount(username, password);
        
        if (success)
        {
           for (String role : roles)
           {
              identityManager.grantRole(username, role);
           }
           
           if (!enabled)
           {
              identityManager.disableAccount(username);   
           }
           
           Conversation.instance().end();
        }
        
        return "success";      
     }
     
     private String saveExistingUser()
     {
        // Check if a new password has been entered
        if (password != null && !"".equals(password))
        {
           if (!password.equals(confirm))
           {
              FacesMessages.instance().addToControl("password", "Passwords do not match");
              return "failure";
           }
           else
           {
              identityManager.changePassword(username, password);
           }
        }
        
        List<String> grantedRoles = identityManager.getGrantedRoles(username);
        
        for (String role : grantedRoles)
        {
           if (!roles.contains(role)) identityManager.revokeRole(username, role);
        }
        
        for (String role : roles)
        {
           if (!grantedRoles.contains(role)) identityManager.grantRole(username, role);
        }
        
        if (enabled)
        {
           identityManager.enableAccount(username);
        }
        else
        {
           identityManager.disableAccount(username);
        }
           
        Conversation.instance().end();
        return "success";
     }
     
     public String getUsername()
     {
        return username;
     }
     
     public void setUsername(String username)
     {
        this.username = username;
     }
     
     public String getPassword()
     {
        return password;
     }
     
     public void setPassword(String password)
     {
        this.password = password;
     }
     
     public String getConfirm()
     {
        return confirm;
     }
     
     public void setConfirm(String confirm)
     {
        this.confirm = confirm;
     }
     
     public List<String> getRoles()
     {
        return roles;
     }
     
     public void setRoles(List<String> roles)
     {
        this.roles = roles;
     }
     
     public boolean isEnabled()
     {
        return enabled;
     }
     
     public void setEnabled(boolean enabled)
     {
        this.enabled = enabled;
     }
  }
  
  
  
  1.1      date: 2008/01/10 03:33:52;  author: sbryzak2;  state: Exp;jboss-seam/seam-gen/src/UserSearch.java
  
  Index: UserSearch.java
  ===================================================================
  package @actionPackage@;
  
  import static org.jboss.seam.ScopeType.SESSION;
  
  import java.io.Serializable;
  import java.util.List;
  
  import org.jboss.seam.annotations.In;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.annotations.datamodel.DataModel;
  import org.jboss.seam.annotations.datamodel.DataModelSelection;
  import org.jboss.seam.security.management.IdentityManager;
  
  @Name("userSearch")
  @Scope(SESSION)
  public class UserSearch implements Serializable
  {
     private static final long serialVersionUID = 8592034786339372510L;
  
     @DataModel
     List<String> users;
     
     @DataModelSelection
     String selectedUser;
     
     @In IdentityManager identityManager;
     
     public void loadUsers()
     {
        users = identityManager.listUsers();     
     }
     
     public String getUserRoles(String username)
     {
        List<String> roles = identityManager.getGrantedRoles(username);
        StringBuilder sb = new StringBuilder();
        
        for (String role : roles)
        {
           sb.append((sb.length() > 0 ? ", " : "") + role); 
        }
        
        return sb.toString();      
     }
     
     public String getSelectedUser()
     {
        return selectedUser;
     }
  }
  
  



More information about the jboss-cvs-commits mailing list