]> git.mxchange.org Git - jjobs-war.git/blob - src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionController.java
updated own name and resources
[jjobs-war.git] / src / java / org / mxchange / jjobs / beans / user / JobsUserWebSessionController.java
1 /*
2  * Copyright (C) 2016 Roland Häder
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Affero General Public License as
6  * published by the Free Software Foundation, either version 3 of the
7  * License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU Affero General Public License for more details.
13  *
14  * You should have received a copy of the GNU Affero General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 package org.mxchange.jjobs.beans.user;
18
19 import java.io.Serializable;
20 import java.util.List;
21 import org.mxchange.jcontacts.contact.Contact;
22 import org.mxchange.jusercore.events.confirmation.UserConfirmedAccountEvent;
23 import org.mxchange.jusercore.events.login.UserLoggedInEvent;
24 import org.mxchange.jusercore.events.registration.UserRegisteredEvent;
25 import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent;
26 import org.mxchange.jusercore.events.user.delete.AdminDeletedUserEvent;
27 import org.mxchange.jusercore.events.user.linked.AdminLinkedUserEvent;
28 import org.mxchange.jusercore.events.user.locked.AdminLockedUserEvent;
29 import org.mxchange.jusercore.events.user.password_change.UpdatedUserPasswordEvent;
30 import org.mxchange.jusercore.events.user.unlocked.AdminUnlockedUserEvent;
31 import org.mxchange.jusercore.events.user.update.AdminUpdatedUserDataEvent;
32 import org.mxchange.jusercore.events.user.update.UpdatedUserPersonalDataEvent;
33 import org.mxchange.jusercore.exceptions.UserEmailAddressNotFoundException;
34 import org.mxchange.jusercore.exceptions.UserNotFoundException;
35 import org.mxchange.jusercore.model.user.User;
36 import org.mxchange.jusercore.model.user.profilemodes.ProfileMode;
37
38 /**
39  * An interface for user beans
40  * <p>
41  * @author Roland Häder<roland@mxchange.org>
42  */
43 public interface JobsUserWebSessionController extends Serializable {
44
45         /**
46          * Minimum password length
47          */
48         public static final Integer MINIMUM_PASSWORD_LENGTH = 5;
49
50         /**
51          * Event observer for newly added users by adminstrator
52          * <p>
53          * @param event Event being fired
54          */
55         void afterAdminAddedUserEvent (final AdminAddedUserEvent event);
56
57         /**
58          * Event observer for deleted user accounts (by administrator)
59          * <p>
60          * @param event Event being fired
61          */
62         void afterAdminDeletedUserEvent (final AdminDeletedUserEvent event);
63
64         /**
65          * Event observer for linked users with existing contact data
66          * <p>
67          * @param event Event being fired
68          */
69         void afterAdminLinkedUserEvent (final AdminLinkedUserEvent event);
70
71         /**
72          * Event observer for locked users
73          * <p>
74          * @param event Event being fired
75          */
76         void afterAdminLockedUserEvent (final AdminLockedUserEvent event);
77
78         /**
79          * Event observer for unlocked users
80          * <p>
81          * @param event Event being fired
82          */
83         void afterAdminUnlockedUserEvent (final AdminUnlockedUserEvent event);
84
85         /**
86          * Event observer for updated user data by administrator
87          * <p>
88          * @param event Event being updated
89          */
90         void afterAdminUpdatedUserDataEvent (final AdminUpdatedUserDataEvent event);
91
92         /**
93          * Event observer when user confirmed account.
94          * <p>
95          * @param event Event being fired
96          */
97         void afterUserConfirmedAccountEvent (final UserConfirmedAccountEvent event);
98
99         /**
100          * Method being call after user's password has been updated (and history
101          * entry has been created).
102          * <p>
103          * @param event Event being observed
104          */
105         void afterUserUpdatedPasswordEvent (final UpdatedUserPasswordEvent event);
106
107         /**
108          * Listens to fired event when user updated personal data
109          * <p>
110          * @param event Event being fired
111          */
112         void afterUserUpdatedPersonalDataEvent (final UpdatedUserPersonalDataEvent event);
113
114         /**
115          * Event observer for new user registrations
116          * <p>
117          * @param event User registration event
118          */
119         void afterUserRegistrationEvent (final UserRegisteredEvent event);
120
121         /**
122          * Event observer for logged-in user
123          * <p>
124          * @param event Event instance
125          */
126         void afterUserLoginEvent (final UserLoggedInEvent event);
127
128         /**
129          * All users
130          * <p>
131          * @return A list of all public user profiles
132          */
133         List<User> allUsers ();
134
135         /**
136          * All public user profiles
137          * <p>
138          * @return A list of all public user profiles
139          */
140         List<User> allVisibleUsers ();
141
142         /**
143          * Checks whether the given contact is a user
144          * <p>
145          * @param contact Contact to check
146          * <p>
147          * @return Whether the contact is a user
148          */
149         boolean isContactFound (final Contact contact);
150
151         /**
152          * Checks whether a public user account is registered. This means that at
153          * least one user profile has its flag "public user profile" enabled.
154          * <p>
155          * @return Whether at least one user has a public profile
156          */
157         boolean isVisibleUserFound ();
158
159         /**
160          * Checks whether given user instance's name is used
161          * <p>
162          * @param user User instance's name to check
163          * <p>
164          * @return Whether it is already used
165          */
166         boolean isUserNameRegistered (final User user);
167
168         /**
169          * Tries to lookup user by given id number. If the user is not found or the
170          * account status is not CONFIRMED proper exceptions are thrown.
171          * <p>
172          * @param userId User id
173          * <p>
174          * @return User instance
175          * <p>
176          * @throws UserNotFoundException If the user is not found
177          */
178         User lookupUserById (final Long userId) throws UserNotFoundException;
179
180         /**
181          * Tries to lookup user by given email address. If the user is not found a
182          * proper exceptions is thrown.
183          * <p>
184          * @param emailAddress Email address
185          * <p>
186          * @return User instance
187          * <p>
188          * @throws UserEmailAddressNotFoundException If the user's email address is not found
189          */
190         User lookupUserByEmailAddress (final String emailAddress) throws UserEmailAddressNotFoundException;
191
192         /**
193          * Creates an instance from all properties
194          * <p>
195          * @param createContactData Whether contact data should be created
196          * <p>
197          * @return A user instance
198          */
199         User createUserInstance (final boolean createContactData);
200
201         /**
202          * Creates a user instance for login phase
203          * <p>
204          * @return User instance
205          */
206         User createUserLogin ();
207
208         /**
209          * Getter for user id
210          * <p>
211          * @return User id
212          */
213         Long getUserId ();
214
215         /**
216          * Setter for user id
217          * <p>
218          * @param userId User id
219          */
220         void setUserId (final Long userId);
221
222         /**
223          * Getter for user name
224          * <p>
225          * @return User name
226          */
227         String getUserName ();
228
229         /**
230          * Setter for user name
231          * <p>
232          * @param userName User name
233          */
234         void setUserName (final String userName);
235
236         /**
237          * Getter for unencrypted user password
238          * <p>
239          * @return Unencrypted user password
240          */
241         String getUserPassword ();
242
243         /**
244          * Setter for unencrypted user password
245          * <p>
246          * @param userPassword Unencrypted user password
247          */
248         void setUserPassword (final String userPassword);
249
250         /**
251          * Getter for unencrypted user password repeated
252          * <p>
253          * @return Unencrypted user password repeated
254          */
255         String getUserPasswordRepeat ();
256
257         /**
258          * Setter for unencrypted user password repeated
259          * <p>
260          * @param userPasswordRepeat Unencrypted user password repeated
261          */
262         void setUserPasswordRepeat (final String userPasswordRepeat);
263
264         /**
265          * Getter for user profile mode
266          * <p>
267          * @return User profile mode
268          */
269         ProfileMode getUserProfileMode ();
270
271         /**
272          * Setter for user profile mode
273          * <p>
274          * @param userProfileMode User profile mode
275          */
276         void setUserProfileMode (final ProfileMode userProfileMode);
277
278         /**
279          * Checks whether all required personal data is set
280          * <p>
281          * @return Whether the required personal data is set
282          */
283         boolean isRequiredPersonalDataSet ();
284
285         /**
286          * Checks whether all required personal data is set for changing them
287          * <p>
288          * @return Whether the required personal data is set
289          */
290         boolean isRequiredChangePersonalDataSet ();
291
292         /**
293          * Checks whether same passwords has been entered
294          * <p>
295          * @return Whether same passwords has been entered
296          */
297         boolean isSamePasswordEntered ();
298
299         /**
300          * Checks if the user id is empty
301          * <p>
302          * @return Whether the user id is empty
303          */
304         boolean isUserIdEmpty ();
305
306         /**
307          * Changes logged-in user's personal data if the current password matches
308          * and TAC + privacy statement has been accepted.
309          * <p>
310          * @return New target page
311          */
312         String doChangePersonalData ();
313
314         /**
315          * Checks whether this application requires a user name to be entered.
316          * Otherwise a random name like "userXXXXX" is generated
317          * <p>
318          * @return Whether this application requires a user name
319          */
320         boolean isUserNameRequired ();
321
322         /**
323          * Checks wether public user profiles are enabled. This requires that user
324          * names are also enabled.
325          * <p>
326          * @return Whether public user profiles are enabled
327          */
328         boolean isPublicUserProfileEnabled ();
329
330 }