package dmg.cells.services.login ; import dmg.util.cdb.CdbContainable; import dmg.util.cdb.CdbElementable; import dmg.util.cdb.CdbFileRecordHandle; import dmg.util.cdb.CdbLockable; /** * <table border=1> * <tr><th>Key</th><th>Meaning</th></tr> * <tr><td>e-mail</td><td>preferred e-mail address</td></tr> * <tr><td>password</td><td>md5 encrypted password</td></tr> * <tr><td>allowed</td><td>list of allowed attributes</td></tr> * <tr><td>denied</td><td>list of denied attributes</td></tr> * </table> */ public class UserHandle extends CdbFileRecordHandle { private CdbContainable _container ; private String _name ; public UserHandle( String name , CdbContainable container , CdbElementable element ){ super( name , container , element ) ; _container = container ; _name = name ; } public void setEmail( String name ){ setAttribute( "e-mail" , name ) ; } public void setPassword( String password ){ setAttribute( "password" , password ) ; } public void setAllowed( String [] allowedList ){ setAttribute( "allowed" , allowedList ) ; } public void setDenied( String [] deniedList ){ setAttribute( "denied" , deniedList ) ; } public void addParent( String parent ){ addListItem( "parents" , parent , true ) ; } public String [] getParents(){ return (String[])getAttribute("parents") ; } public String [] getChilds(){ return (String[])getAttribute("childs") ; } public void removeParent( String parent ){ removeListItem( "parents" , parent ) ; } public void addChild( String child ){ addListItem( "childs" , child , true ) ; } public void removeChild( String child ){ removeListItem( "childs" , child ) ; } public UserPrivileges getUserPrivileges(){ return new UserPrivileges( _name , (String[])getAttribute("allowed") , (String[])getAttribute("denied" ) ) ; } public void addAllowed( String allowed ){ addListItem( "allowed" , allowed , true ) ; removeListItem( "denied" , allowed ) ; } public void removeAllowed( String allowed ){ removeListItem( "allowed" , allowed ) ; } public void addDenied( String denied ){ addListItem( "denied" , denied , true ) ; removeListItem( "allowed" , denied ) ; } public void removeDenied( String denied ){ removeListItem( "denied" , denied ) ; } public String getPassword(){ return (String)getAttribute("password") ; } public String getEmail(){ return (String)getAttribute("e-mail") ; } public String getMode(){ return (String)getAttribute("mode") ; } public boolean isGroup(){ return getMode().equals("group") ; } public String [] getAllowed(){ return (String[])getAttribute("allowed") ; } public String [] getDenied(){ return (String[])getAttribute("allowed") ; } public String toString(){ StringBuilder sb = new StringBuilder() ; try{ open( CdbLockable.READ ) ; if( isGroup() ){ sb.append("Group : ").append(getName()).append('\n'); String [] childs = getChilds() ; if( childs.length > 0 ){ sb.append( "Members : \n" ) ; for (String child : childs) { sb.append(" ").append(child).append('\n'); } } }else{ sb.append("User : ").append(getName()).append('\n'); } sb.append("e-mail : ").append(getEmail()).append('\n'); sb.append("passwd : ").append(getPassword()).append('\n'); String [] parents = getParents() ; if( parents.length > 0 ){ sb.append( "Parents : \n" ) ; for (String parent : parents) { sb.append(" ").append(parent).append('\n'); } } sb.append( "prives : \n" ) ; sb.append(getUserPrivileges()) ; close( CdbLockable.COMMIT ) ; }catch( Exception e ){ sb.append("PANIC : Exception ").append(e).append('\n'); } return sb.toString() ; } }