package fi.otavanopisto.muikku.plugins.user.rest;
import javax.ejb.Stateful;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import fi.otavanopisto.muikku.plugin.PluginRESTService;
import fi.otavanopisto.muikku.rest.RESTPermitUnimplemented;
import fi.otavanopisto.muikku.schooldata.RestCatchSchoolDataExceptions;
import fi.otavanopisto.muikku.schooldata.SchoolDataBridgeUnauthorizedException;
import fi.otavanopisto.muikku.schooldata.UserSchoolDataController;
import fi.otavanopisto.muikku.schooldata.entity.User;
import fi.otavanopisto.muikku.session.SessionController;
@Path("/userplugin")
@RequestScoped
@Stateful
@Produces ("application/json")
@RestCatchSchoolDataExceptions
public class UserPluginRESTService extends PluginRESTService {
private static final long serialVersionUID = -3009238121067011985L;
@Inject
private SessionController sessionController;
@Inject
private UserSchoolDataController userSchoolDataController;
@Path("/credentials")
@GET
@RESTPermitUnimplemented
public Response getCredentials() {
User user = userSchoolDataController.findUser(sessionController.getLoggedUserSchoolDataSource(), sessionController.getLoggedUserIdentifier());
try {
String username = userSchoolDataController.findUsername(user);
if (username != null) {
UserCredentials credentials = new UserCredentials(null, username, null);
return Response.ok(credentials).build();
} else
return Response.noContent().build();
} catch (SchoolDataBridgeUnauthorizedException e) {
return Response.status(Status.FORBIDDEN).build();
}
}
@Path("/credentials")
@PUT
@RESTPermitUnimplemented
public Response updateCredentials(UserCredentials userCredentialChange) {
User user = userSchoolDataController.findUser(sessionController.getLoggedUserSchoolDataSource(), sessionController.getLoggedUserIdentifier());
try {
userSchoolDataController.updateUserCredentials(user, userCredentialChange.getOldPassword(),
userCredentialChange.getUsername(), userCredentialChange.getNewPassword());
return Response.noContent().build();
} catch (SchoolDataBridgeUnauthorizedException e) {
return Response.status(Status.FORBIDDEN).build();
}
}
}