package org.appfuse.webapp.server.services;
import java.util.List;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import org.appfuse.model.User;
import org.appfuse.service.UserExistsException;
import org.springframework.security.access.prepost.PreAuthorize;
@Path("/usersService")
public interface UserRequestService {
/**
*
* @return
*/
@GET
@Path("currentUser")
User getCurrentUser();
/**
*
* @return
*/
@GET
@Path("signUp")
User signUp();
/**
*
* @param user
* @return
* @throws Exception
*/
@POST
@Path("signUp")
User signUp(User user) throws Exception;
/**
*
* @return
*/
@GET
@Path("editProfile")
@PreAuthorize("isAuthenticated()")
User editProfile();
/**
*
* @param user
* @return
* @throws Exception
*/
@POST
@Path("editProfile")
@PreAuthorize("isAuthenticated()")
User editProfile(User user) throws Exception;
/**
*
* @param userId
* @return
*/
@GET
@Path("user/{id}")
@PreAuthorize("hasRole('ROLE_ADMIN')")
User getUser(@PathParam("id") Long userId);
/**
*
* @param user
* @return
* @throws Exception
*/
@POST
@Path("saveUser")
@PreAuthorize("hasRole('ROLE_ADMIN')")
User saveUser(User user) throws Exception;
/**
*
* @param searchCriteria
* @return
*/
@POST
@Path("countUsers")
@PreAuthorize("hasRole('ROLE_ADMIN')")
long countUsers(UsersSearchCriteria searchCriteria);
/**
*
* @param searchCriteria
* @param firstResult
* @param maxResults
* @return
*/
@POST
@Path("searchUsers")
@PreAuthorize("hasRole('ROLE_ADMIN')")
List<User> searchUsers(UsersSearchCriteria searchCriteria, int firstResult, int maxResults);
/**
*
* @param searchCriteria
* @param firstResult
* @param maxResults
* @param sortProperty
* @param ascending
* @return
*/
@POST
@Path("searchUsers")
@PreAuthorize("hasRole('ROLE_ADMIN')")
List<User> searchUsers(UsersSearchCriteria searchCriteria, int firstResult, int maxResults, String sortProperty, boolean ascending);
/**
*
* @param user
*/
@DELETE
@Path("removeUser/{id}")
@PreAuthorize("hasRole('ROLE_ADMIN')")
void removeUser(@PathParam("id") Long userId);
/**
*
* @param username
* @return
*/
@POST
@Path("passwordHint")
String sendPasswordHint(String username);
/**
*
* @param username
* @return
*/
@POST
@Path("/requestRecoveryToken")
String requestRecoveryToken(String username);
@POST
@Path("/updatePassword/{username}")
User updatePassword(@PathParam("username") String username, String token, String currentPassword, String password) throws UserExistsException;
/**
*
* @return
*/
@GET
@Path("activeUsers")
@PreAuthorize("hasRole('ROLE_ADMIN')")
List<User> getActiveUsers();
@GET
@Path("/logout")
boolean logout();
}