use of fi.otavanopisto.muikku.model.users.Flag in project muikku by otavanopisto.
the class UserRESTService method listFlags.
@GET
@Path("/flags/")
@RESTPermit(handling = Handling.INLINE, requireLoggedIn = true)
public Response listFlags(@QueryParam("ownerIdentifier") String ownerId) {
SchoolDataIdentifier ownerIdentifier = null;
if (StringUtils.isNotBlank(ownerId)) {
ownerIdentifier = SchoolDataIdentifier.fromId(ownerId);
if (ownerIdentifier == null) {
return Response.status(Status.BAD_REQUEST).entity("ownerIdentifier is malformed").build();
}
// TODO: Add permission to list flags owned by others
if (!ownerIdentifier.equals(sessionController.getLoggedUser())) {
return Response.status(Status.FORBIDDEN).build();
}
} else {
return Response.status(Status.FORBIDDEN).build();
}
List<Flag> flags = flagController.listByOwnedAndSharedFlags(ownerIdentifier);
return Response.ok(createRestModel(flags.toArray(new Flag[0]))).build();
}
use of fi.otavanopisto.muikku.model.users.Flag in project muikku by otavanopisto.
the class FlagDAO method listByOwnerIdentifier.
public List<Flag> listByOwnerIdentifier(UserSchoolDataIdentifier ownerIdentifier) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Flag> criteria = criteriaBuilder.createQuery(Flag.class);
Root<Flag> root = criteria.from(Flag.class);
criteria.select(root);
criteria.where(criteriaBuilder.equal(root.get(Flag_.ownerIdentifier), ownerIdentifier));
return entityManager.createQuery(criteria).getResultList();
}
use of fi.otavanopisto.muikku.model.users.Flag in project muikku by otavanopisto.
the class FlagDAO method create.
public Flag create(UserSchoolDataIdentifier ownerIdentifier, String name, String color, String description, Boolean archived) {
Flag flag = new Flag();
flag.setOwnerIdentifier(ownerIdentifier);
flag.setArchived(archived);
flag.setColor(color);
flag.setDescription(description);
flag.setName(name);
return persist(flag);
}
use of fi.otavanopisto.muikku.model.users.Flag in project muikku by otavanopisto.
the class FlagShareDAO method listFlagsByUserIdentifier.
public List<Flag> listFlagsByUserIdentifier(UserSchoolDataIdentifier userIdentifier) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Flag> criteria = criteriaBuilder.createQuery(Flag.class);
Root<FlagShare> root = criteria.from(FlagShare.class);
criteria.select(root.get(FlagShare_.flag));
criteria.where(criteriaBuilder.equal(root.get(FlagShare_.userIdentifier), userIdentifier));
return entityManager.createQuery(criteria).getResultList();
}
use of fi.otavanopisto.muikku.model.users.Flag in project muikku by otavanopisto.
the class UserRESTService method deleteFlag.
@DELETE
@Path("/flags/{ID}")
@RESTPermit(handling = Handling.INLINE, requireLoggedIn = true)
public Response deleteFlag(@PathParam("ID") long flagId) {
Flag flag = flagController.findFlagById(flagId);
if (flag == null) {
return Response.status(Status.NOT_FOUND).build();
}
boolean isOwner = false;
UserSchoolDataIdentifier ownerIdentifier = flag.getOwnerIdentifier();
SchoolDataIdentifier loggedIdentifier = sessionController.getLoggedUser();
if (loggedIdentifier == null) {
return Response.status(Status.BAD_REQUEST).entity("Must be logged in.").build();
}
UserSchoolDataIdentifier loggedUserIdentifier = userSchoolDataIdentifierController.findUserSchoolDataIdentifierBySchoolDataIdentifier(loggedIdentifier);
if (loggedUserIdentifier == null) {
return Response.status(Status.BAD_REQUEST).entity("No user school data identifier for logged user").build();
}
if (Objects.equals(ownerIdentifier.getIdentifier(), loggedUserIdentifier.getIdentifier()) && Objects.equals(ownerIdentifier.getDataSource().getIdentifier(), loggedUserIdentifier.getDataSource().getIdentifier())) {
isOwner = true;
}
if (!flagController.hasFlagPermission(flag, loggedIdentifier)) {
return Response.status(Status.FORBIDDEN).entity("You don't have the permission to delete this flag").build();
}
if (isOwner) {
flagController.deleteFlagCascade(flag);
return Response.noContent().build();
} else {
flagController.unshareFlag(flag, loggedUserIdentifier);
return Response.noContent().build();
}
}
Aggregations