package fi.otavanopisto.muikku.plugins.forum.rest; import java.util.logging.Logger; import javax.ejb.Stateful; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.Request; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import fi.otavanopisto.muikku.controller.ResourceRightsController; import fi.otavanopisto.muikku.model.security.ResourceRights; import fi.otavanopisto.muikku.plugin.PluginRESTService; import fi.otavanopisto.muikku.plugins.forum.ForumController; import fi.otavanopisto.muikku.plugins.forum.model.ForumArea; import fi.otavanopisto.muikku.security.MuikkuPermissions; import fi.otavanopisto.muikku.session.SessionController; import fi.otavanopisto.security.rest.RESTPermit; import fi.otavanopisto.security.rest.RESTPermit.Handling; @Path("/system/forum") @RequestScoped @Stateful @Produces ("application/json") public class SystemForumRESTService extends PluginRESTService { private static final long serialVersionUID = -5686464213259396234L; @Inject private Logger logger; @Inject private ForumController forumController; @Inject private ResourceRightsController resourceRightsController; @Inject private SessionController sessionController; @GET @Path("/resetForumAreaRights/{FORUMAREAID}") @RESTPermit (handling = Handling.INLINE, requireLoggedIn = true) public Response resetForumAreaRights(@PathParam("FORUMAREAID") Long forumAreaId, @Context Request request) { logger.info(String.format("Resetting rights of forum area %d", forumAreaId)); if (sessionController.hasPermission(MuikkuPermissions.ADMIN, null)) { ForumArea forumArea = forumController.findForumAreaById(forumAreaId); if (forumArea != null) { Long resourceRightsIds = forumArea.getRights(); if (resourceRightsIds != null) { ResourceRights resourceRights = resourceRightsController.findResourceRightsById(resourceRightsIds); resourceRightsController.deleteByResourceRights(resourceRights); } else { return Response.status(Status.NOT_FOUND).entity(String.format("Forum area %d has no rights", forumAreaId)).build(); } } else { return Response.status(Status.NOT_FOUND).entity(String.format("Forum area %d not found", forumAreaId)).build(); } } else { return Response.status(Status.FORBIDDEN).entity("Not admin").build(); } return Response.status(Status.OK).entity(String.format("Forum area %d rights reset", forumAreaId)).build(); } }