1 package net.avcompris.examples.users3.core.api;
2
3 import static net.avcompris.examples.shared3.Permission.ANY;
4 import static net.avcompris.examples.shared3.Permission.CREATE_ANY_USER;
5 import static net.avcompris.examples.shared3.Permission.DELETE_ANY_USER;
6 import static net.avcompris.examples.shared3.Permission.GET_ANY_USER;
7 import static net.avcompris.examples.shared3.Permission.GET_USER_ME;
8 import static net.avcompris.examples.shared3.Permission.QUERY_ALL_USERS;
9 import static net.avcompris.examples.shared3.Permission.UPDATE_ANY_USER;
10 import static net.avcompris.examples.shared3.Permission.UPDATE_USER_ME;
11
12 import javax.annotation.Nullable;
13
14 import net.avcompris.commons3.api.User;
15 import net.avcompris.commons3.api.exception.ServiceException;
16 import net.avcompris.examples.shared3.core.api.Permissions;
17 import net.avcompris.examples.users3.api.UserCreate;
18 import net.avcompris.examples.users3.api.UserInfo;
19 import net.avcompris.examples.users3.api.UserUpdate;
20 import net.avcompris.examples.users3.api.UsersInfo;
21 import net.avcompris.examples.users3.api.UsersQuery;
22
23 public interface UsersService {
24
25 @Permissions(ANY)
26 @Nullable
27 UsersQuery validateUsersQuery(String correlationId, User user,
28 @Nullable String q,
29 @Nullable String sort,
30 @Nullable Integer start,
31 @Nullable Integer limit,
32 @Nullable String expand
33 ) throws ServiceException;
34
35 @Permissions(QUERY_ALL_USERS)
36 UsersInfo getUsers(String correlationId, User user,
37 @Nullable UsersQuery query
38 ) throws ServiceException;
39
40 @Permissions(GET_ANY_USER)
41 boolean hasUser(String correlationId, User user,
42 String username
43 ) throws ServiceException;
44
45 @Permissions(CREATE_ANY_USER)
46 UserInfo createUser(String correlationId, User user,
47 String username,
48 UserCreate create
49 ) throws ServiceException;
50
51 @Permissions(GET_ANY_USER)
52 UserInfo getUser(String correlationId, User user,
53 String username
54 ) throws ServiceException;
55
56 @Permissions(UPDATE_ANY_USER)
57 UserInfo updateUser(String correlationId, User user,
58 String username,
59 UserUpdate update
60 ) throws ServiceException;
61
62 @Permissions(DELETE_ANY_USER)
63 void deleteUser(String correlationId, User user,
64 String username
65 ) throws ServiceException;
66
67 @Permissions(GET_USER_ME)
68 UserInfo getUserMe(String correlationId, User user) throws ServiceException;
69
70 @Permissions(UPDATE_USER_ME)
71 UserInfo updateUserMe(String correlationId, User user,
72 UserUpdate update
73 ) throws ServiceException;
74 }