]> source.dussan.org Git - archiva.git/blob
9c7cc06ac2a9a72391b489656d4a75b2982b1273
[archiva.git] /
1 package org.apache.archiva.redback.rest.api.services;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.archiva.redback.authorization.RedbackAuthorization;
23 import org.apache.archiva.redback.integration.security.role.RedbackRoleConstants;
24 import org.apache.archiva.redback.rest.api.model.Operation;
25 import org.apache.archiva.redback.rest.api.model.Permission;
26 import org.apache.archiva.redback.rest.api.model.RegistrationKey;
27 import org.apache.archiva.redback.rest.api.model.User;
28
29 import javax.ws.rs.Consumes;
30 import javax.ws.rs.GET;
31 import javax.ws.rs.POST;
32 import javax.ws.rs.Path;
33 import javax.ws.rs.PathParam;
34 import javax.ws.rs.Produces;
35 import javax.ws.rs.core.MediaType;
36 import java.util.Collection;
37 import java.util.List;
38
39 @Path( "/userService/" )
40 public interface UserService
41 {
42     @Path( "getUser/{userName}" )
43     @GET
44     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
45     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
46     User getUser( @PathParam( "userName" ) String username )
47         throws RedbackServiceException;
48
49
50     @Path( "getUsers" )
51     @GET
52     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
53     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_LIST_OPERATION )
54     List<User> getUsers()
55         throws RedbackServiceException;
56
57     @Path( "createUser" )
58     @POST
59     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
60     @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
61     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_CREATE_OPERATION )
62     Boolean createUser( User user )
63         throws RedbackServiceException;
64
65
66     /**
67      * will create admin user only if not exists !! if exists will return false
68      */
69     @Path( "createAdminUser" )
70     @POST
71     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
72     @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
73     @RedbackAuthorization( noRestriction = true )
74     Boolean createAdminUser( User user )
75         throws RedbackServiceException;
76
77     @Path( "isAdminUserExists" )
78     @GET
79     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
80     @RedbackAuthorization( noRestriction = true )
81     Boolean isAdminUserExists()
82         throws RedbackServiceException;
83
84
85     @Path( "deleteUser/{userName}" )
86     @GET
87     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
88     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_DELETE_OPERATION )
89     Boolean deleteUser( @PathParam( "userName" ) String username )
90         throws RedbackServiceException;
91
92     @Path( "updateUser" )
93     @POST
94     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
95     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
96     Boolean updateUser( User user )
97         throws RedbackServiceException;
98
99     @Path( "lockUser/{username}" )
100     @GET
101     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
102     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
103     /**
104      * @since 2.0
105      */
106     Boolean lockUser( @PathParam( "username" ) String username )
107         throws RedbackServiceException;
108
109     @Path( "unlockUser/{username}" )
110     @GET
111     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
112     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
113     /**
114      * @since 2.0
115      */
116     Boolean unlockUser( @PathParam( "username" ) String username )
117         throws RedbackServiceException;
118
119
120     @Path( "passwordChangeRequired/{username}" )
121     @GET
122     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
123     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
124     /**
125      * @since 2.0
126      */
127     Boolean passwordChangeRequired( @PathParam( "username" ) String username )
128         throws RedbackServiceException;
129
130     @Path( "passwordChangeNotRequired/{username}" )
131     @GET
132     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
133     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
134     /**
135      * @since 2.0
136      */
137     Boolean passwordChangeNotRequired( @PathParam( "username" ) String username )
138         throws RedbackServiceException;
139
140
141     @Path( "updateMe" )
142     @POST
143     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
144     @RedbackAuthorization( noRestriction = false, noPermission = true )
145     /**
146      * update only the current user and this fields: fullname, email, password.
147      * the service verify the curent logged user with the one passed in the method
148      * @since 1.4
149      */
150     Boolean updateMe( User user )
151         throws RedbackServiceException;
152
153     @Path( "ping" )
154     @GET
155     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
156     @RedbackAuthorization( noRestriction = true )
157     Boolean ping()
158         throws RedbackServiceException;
159
160     @Path( "removeFromCache/{userName}" )
161     @GET
162     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
163     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
164     int removeFromCache( @PathParam( "userName" ) String username )
165         throws RedbackServiceException;
166
167     @Path( "getGuestUser" )
168     @GET
169     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
170     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
171     User getGuestUser()
172         throws RedbackServiceException;
173
174     @Path( "createGuestUser" )
175     @GET
176     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
177     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
178     User createGuestUser()
179         throws RedbackServiceException;
180
181     @Path( "registerUser" )
182     @POST
183     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
184     @RedbackAuthorization( noRestriction = true, noPermission = true )
185     /**
186      * if redback is not configured for email validation is required, -1 is returned as key
187      * @since 1.4
188      */
189     RegistrationKey registerUser( User user )
190         throws RedbackServiceException;
191
192
193     @Path( "validateKey/{key}" )
194     @GET
195     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
196     @RedbackAuthorization( noRestriction = true, noPermission = true )
197     /**
198      * validate the key and the user with forcing a password change for next login.
199      * http session is created.
200      * @param key authentication key
201      * @since 1.4
202      */
203     Boolean validateUserFromKey( @PathParam( "key" ) String key )
204         throws RedbackServiceException;
205
206     @Path( "resetPassword/{user}" )
207     @GET
208     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
209     @RedbackAuthorization( noRestriction = true, noPermission = true )
210     /**
211      *
212      * @param user username for send a password reset email
213      * @since 1.4
214      */
215     Boolean resetPassword( @PathParam( "user" ) String user )
216         throws RedbackServiceException;
217
218     @Path( "getUserPermissions/{userName}" )
219     @GET
220     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
221     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_LIST_OPERATION )
222     /**
223      * @since 1.4
224      */
225     Collection<Permission> getUserPermissions( @PathParam( "userName" ) String userName )
226         throws RedbackServiceException;
227
228     @Path( "getUserOperations/{userName}" )
229     @GET
230     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
231     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_LIST_OPERATION )
232     /**
233      * @since 1.4
234      */
235     Collection<Operation> getUserOperations( @PathParam( "userName" ) String userName )
236         throws RedbackServiceException;
237
238     @Path( "getCurrentUserPermissions" )
239     @GET
240     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
241     @RedbackAuthorization( noRestriction = true, noPermission = true )
242     /**
243      * return the current logged user permissions, if no logged user guest permissions are returned
244      * @since 1.4
245      */
246     Collection<Permission> getCurrentUserPermissions()
247         throws RedbackServiceException;
248
249     @Path( "getCurrentUserOperations" )
250     @GET
251     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
252     @RedbackAuthorization( noRestriction = true, noPermission = true )
253     /**
254      * return the current logged user operations, if no logged user guest operations are returned
255      * @since 1.4
256      */
257     Collection<Operation> getCurrentUserOperations()
258         throws RedbackServiceException;
259
260 }