1 package org.musicontroller.security;
2
3
4 import java.util.Date;
5 import java.util.List;
6 import java.util.Set;
7
8 import org.acegisecurity.userdetails.UserDetails;
9
10 /**
11 * A User is a user of a certain program. A User can be assigned
12 * Role-objects, which contain Authorities to perform certain tasks.
13 * @author Arjan Verstoep
14 * @version $Id: IUser.java,v 1.1 2010/03/16 18:55:42 varienaja Exp $
15 */
16 public interface IUser extends UserDetails {
17
18 /**
19 * The unique identifier that can be used to distinguish different Users from eachother.
20 * @return The unique Id that is connected with this User, or -1 if the User has not been persisted yet.
21 */
22 public long getId();
23 /**
24 * Sets the identifier of the User.
25 * @param id an integer.
26 */
27 public void setId(long id);
28
29 /**
30 * @return The Date after which this User is no longer permitted to logon.
31 */
32 public Date getExpiryDate();
33 /**
34 * Sets the expirydate of this User. After this date, the User will no longer
35 * be able to logon.
36 * @param expiryDate
37 */
38 public void setExpiryDate(Date expiryDate);
39
40 /**
41 * @return The loginname of this User.
42 */
43 public String getLoginname();
44 /**
45 * Sets the loginname for this User.
46 * @param loginname The loginname. It is advisable to use only lowercase letters in the loginname.
47 */
48 public void setLoginname(String loginname);
49
50 /**
51 * @return The real name of this User.
52 */
53 public String getName();
54 /**
55 * Set the real name of this User.
56 * @param username The name.
57 */
58 public void setName(String username);
59
60 /**
61 * @return All Role-objects assigned to this User.
62 */
63 public Set<Role> getRoles();
64
65 /**
66 * Set the Roles which this User is assigned to.
67 * @param roles The Roles.
68 */
69 public void setRoles(Set<Role> roles);
70
71 /**
72 * Convenience method to get the roles in List form.
73 * @return All Role-objects assigned to this User.
74 */
75 public List<Role> getRolesList();
76
77 /**
78 * Convenience method to set the roles in List form.
79 * @param roles The Roles.
80 */
81 public void setRolesList(List<Role> roles);
82
83 /**
84 * Adds a Role to the set of Roles of this User.
85 * @param role The Role to add
86 */
87 public void addRole(Role role);
88
89 /**
90 * Sets the password for a User. This will encrypt
91 * the given password and fill the encrypted password with
92 * the encrypted version of the supplied password.
93 * @param unencryptedpass The unencryted password.
94 */
95 public void setUnencryptedPassword(String unencryptedpass);
96
97 /**
98 * Gets the encrypted version of this Users password.
99 */
100 public String getPassword();
101
102 /**
103 * Sets the encrypted version of this Users password.
104 * @param encryptedPassword The encrypted password.
105 */
106 public void setPassword(String encryptedPassword);
107
108 //TODO A User should have a property int getLoginCount()
109 // int getFailedLoginCount()
110 // Date getLastLogin()
111 // After 3 failed logins --> call sleep() to prevent dictionary attacks, or block the account.
112
113 }