]> source.dussan.org Git - archiva.git/blob
331f8d8d80863a618e88518bf5f11af95581c2be
[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 import org.apache.archiva.redback.rest.api.model.UserRegistrationRequest;
29
30 import javax.ws.rs.Consumes;
31 import javax.ws.rs.GET;
32 import javax.ws.rs.POST;
33 import javax.ws.rs.Path;
34 import javax.ws.rs.PathParam;
35 import javax.ws.rs.Produces;
36 import javax.ws.rs.core.MediaType;
37 import java.util.Collection;
38 import java.util.List;
39
40 @Path( "/userService/" )
41 public interface UserService
42 {
43     @Path( "getUser/{userName}" )
44     @GET
45     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
46     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
47     User getUser( @PathParam( "userName" ) String username )
48         throws RedbackServiceException;
49
50
51     @Path( "getUsers" )
52     @GET
53     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
54     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_LIST_OPERATION )
55     List<User> getUsers()
56         throws RedbackServiceException;
57
58     @Path( "createUser" )
59     @POST
60     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
61     @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
62     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_CREATE_OPERATION )
63     Boolean createUser( User user )
64         throws RedbackServiceException;
65
66
67     /**
68      * will create admin user only if not exists !! if exists will return false
69      */
70     @Path( "createAdminUser" )
71     @POST
72     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
73     @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
74     @RedbackAuthorization( noRestriction = true )
75     Boolean createAdminUser( User user )
76         throws RedbackServiceException;
77
78     @Path( "isAdminUserExists" )
79     @GET
80     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
81     @RedbackAuthorization( noRestriction = true )
82     Boolean isAdminUserExists()
83         throws RedbackServiceException;
84
85
86     @Path( "deleteUser/{userName}" )
87     @GET
88     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
89     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_DELETE_OPERATION )
90     Boolean deleteUser( @PathParam( "userName" ) String username )
91         throws RedbackServiceException;
92
93     @Path( "updateUser" )
94     @POST
95     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
96     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
97     Boolean updateUser( User user )
98         throws RedbackServiceException;
99
100     @Path( "lockUser/{username}" )
101     @GET
102     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
103     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
104     /**
105      * @since 2.0
106      */
107     Boolean lockUser( @PathParam( "username" ) String username )
108         throws RedbackServiceException;
109
110     @Path( "unlockUser/{username}" )
111     @GET
112     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
113     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
114     /**
115      * @since 2.0
116      */
117     Boolean unlockUser( @PathParam( "username" ) String username )
118         throws RedbackServiceException;
119
120
121     @Path( "passwordChangeRequired/{username}" )
122     @GET
123     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
124     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
125     /**
126      * @since 2.0
127      */
128     Boolean passwordChangeRequired( @PathParam( "username" ) String username )
129         throws RedbackServiceException;
130
131     @Path( "passwordChangeNotRequired/{username}" )
132     @GET
133     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
134     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
135     /**
136      * @since 2.0
137      */
138     Boolean passwordChangeNotRequired( @PathParam( "username" ) String username )
139         throws RedbackServiceException;
140
141
142     @Path( "updateMe" )
143     @POST
144     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
145     @RedbackAuthorization( noRestriction = false, noPermission = true )
146     /**
147      * update only the current user and this fields: fullname, email, password.
148      * the service verify the curent logged user with the one passed in the method
149      * @since 1.4
150      */
151     Boolean updateMe( User user )
152         throws RedbackServiceException;
153
154     @Path( "ping" )
155     @GET
156     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
157     @RedbackAuthorization( noRestriction = true )
158     Boolean ping()
159         throws RedbackServiceException;
160
161     @Path( "removeFromCache/{userName}" )
162     @GET
163     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
164     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
165     int removeFromCache( @PathParam( "userName" ) String username )
166         throws RedbackServiceException;
167
168     @Path( "getGuestUser" )
169     @GET
170     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
171     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
172     User getGuestUser()
173         throws RedbackServiceException;
174
175     @Path( "createGuestUser" )
176     @GET
177     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
178     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_EDIT_OPERATION )
179     User createGuestUser()
180         throws RedbackServiceException;
181
182     @Path( "registerUser" )
183     @POST
184     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
185     @RedbackAuthorization( noRestriction = true, noPermission = true )
186     /**
187      * if redback is not configured for email validation is required, -1 is returned as key
188      * @since 1.4
189      */
190     RegistrationKey registerUser( UserRegistrationRequest userRegistrationRequest )
191         throws RedbackServiceException;
192
193
194     @Path( "validateKey/{key}" )
195     @GET
196     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
197     @RedbackAuthorization( noRestriction = true, noPermission = true )
198     /**
199      * validate the key and the user with forcing a password change for next login.
200      * http session is created.
201      * @param key authentication key
202      * @since 1.4
203      */
204     Boolean validateUserFromKey( @PathParam( "key" ) String key )
205         throws RedbackServiceException;
206
207     @Path( "resetPassword/{user}" )
208     @GET
209     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
210     @RedbackAuthorization( noRestriction = true, noPermission = true )
211     /**
212      *
213      * @param user username for send a password reset email
214      * @since 1.4
215      */
216     Boolean resetPassword( @PathParam( "user" ) String user )
217         throws RedbackServiceException;
218
219     @Path( "getUserPermissions/{userName}" )
220     @GET
221     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
222     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_LIST_OPERATION )
223     /**
224      * @since 1.4
225      */
226     Collection<Permission> getUserPermissions( @PathParam( "userName" ) String userName )
227         throws RedbackServiceException;
228
229     @Path( "getUserOperations/{userName}" )
230     @GET
231     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
232     @RedbackAuthorization( permissions = RedbackRoleConstants.USER_MANAGEMENT_USER_LIST_OPERATION )
233     /**
234      * @since 1.4
235      */
236     Collection<Operation> getUserOperations( @PathParam( "userName" ) String userName )
237         throws RedbackServiceException;
238
239     @Path( "getCurrentUserPermissions" )
240     @GET
241     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
242     @RedbackAuthorization( noRestriction = true, noPermission = true )
243     /**
244      * return the current logged user permissions, if no logged user guest permissions are returned
245      * @since 1.4
246      */
247     Collection<Permission> getCurrentUserPermissions()
248         throws RedbackServiceException;
249
250     @Path( "getCurrentUserOperations" )
251     @GET
252     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
253     @RedbackAuthorization( noRestriction = true, noPermission = true )
254     /**
255      * return the current logged user operations, if no logged user guest operations are returned
256      * @since 1.4
257      */
258     Collection<Operation> getCurrentUserOperations()
259         throws RedbackServiceException;
260
261 }