1 package fr.ifremer.quadrige3.core.service.administration.user;
2
3 /*-
4 * #%L
5 * Quadrige3 Core :: Quadrige3 Client Core
6 * $Id:$
7 * $HeadURL:$
8 * %%
9 * Copyright (C) 2017 Ifremer
10 * %%
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Affero General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU Affero General Public License
22 * along with this program. If not, see <http://www.gnu.org/licenses/>.
23 * #L%
24 */
25 import fr.ifremer.quadrige3.core.vo.administration.user.LightQuserVO;
26 import fr.ifremer.quadrige3.core.vo.administration.user.QuserVO;
27 import org.springframework.transaction.annotation.Transactional;
28
29 /**
30 * <p>
31 * UserService interface.
32 * </p>
33 */
34 @Transactional(readOnly = true)
35 public interface UserService {
36
37 /**
38 * Get full data on user (need for synchro server)
39 *
40 * @param userId a int.
41 * @return a {@link fr.ifremer.quadrige3.core.vo.administration.user.QuserVO} object.
42 */
43 QuserVO getUserById(int userId);
44
45 /**
46 * Get full data on user, and department
47 *
48 * @param userId a int.
49 * @return a {@link fr.ifremer.quadrige3.core.vo.administration.user.QuserVO} object.
50 */
51 QuserVO getUserWithDepartmentAndPrivilegesById(int userId);
52
53 /**
54 * Get minimal info on user (need for quadrige3 synchro server)
55 *
56 * @param quserId a int.
57 * @return a {@link fr.ifremer.quadrige3.core.vo.administration.user.LightQuserVO} object.
58 */
59 LightQuserVO getLightUserById(int quserId);
60
61 /**
62 * return if a use is a loca administrator or not
63 *
64 * @param quserId a int.
65 * @param privilegeCode a {@link java.lang.String} object.
66 * @return a boolean.
67 */
68 boolean hasPrivilege(int quserId, String privilegeCode);
69
70 /**
71 * Save into the local database
72 *
73 * @param user a {@link QuserVO} object.
74 * @param saveOtherLinkedEntities if true, will save linked entities (department and status)
75 */
76 @Transactional
77 void save(QuserVO user, boolean saveOtherLinkedEntities);
78
79 /**
80 * Is user a local user with an empty password ?
81 *
82 * @param login a {@link java.lang.String} object.
83 * @return a boolean.
84 */
85 boolean isLocalUserWithNoPassword(String login);
86
87 /**
88 * Is login an extranet login
89 *
90 * @param login the login
91 * @return true if login is extranet
92 */
93 Boolean isLoginExtranet(String login);
94
95 /**
96 * Is the login associated to a password
97 *
98 * @param login the login
99 * @return true if login has password
100 */
101 boolean hasPassword(String login);
102
103 /**
104 * Reset the password for the login
105 *
106 * @param login the login
107 */
108 @Transactional
109 void resetPassword(String login);
110
111 /**
112 * Update password for the login
113 *
114 * @param userId
115 * @param password
116 */
117 @Transactional
118 void updatePasswordByUserId(int userId, String password);
119
120 }