Search in sources :

Example 6 with Flag

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();
}
Also used : SchoolDataIdentifier(fi.otavanopisto.muikku.schooldata.SchoolDataIdentifier) UserSchoolDataIdentifier(fi.otavanopisto.muikku.model.users.UserSchoolDataIdentifier) Flag(fi.otavanopisto.muikku.model.users.Flag) Path(javax.ws.rs.Path) RESTPermit(fi.otavanopisto.security.rest.RESTPermit) GET(javax.ws.rs.GET)

Example 7 with Flag

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();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) Flag(fi.otavanopisto.muikku.model.users.Flag)

Example 8 with Flag

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);
}
Also used : Flag(fi.otavanopisto.muikku.model.users.Flag)

Example 9 with 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();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) FlagShare(fi.otavanopisto.muikku.model.users.FlagShare) Flag(fi.otavanopisto.muikku.model.users.Flag)

Example 10 with Flag

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();
    }
}
Also used : SchoolDataIdentifier(fi.otavanopisto.muikku.schooldata.SchoolDataIdentifier) UserSchoolDataIdentifier(fi.otavanopisto.muikku.model.users.UserSchoolDataIdentifier) UserSchoolDataIdentifier(fi.otavanopisto.muikku.model.users.UserSchoolDataIdentifier) Flag(fi.otavanopisto.muikku.model.users.Flag) Path(javax.ws.rs.Path) DELETE(javax.ws.rs.DELETE) RESTPermit(fi.otavanopisto.security.rest.RESTPermit)

Aggregations

Flag (fi.otavanopisto.muikku.model.users.Flag)14 RESTPermit (fi.otavanopisto.security.rest.RESTPermit)11 Path (javax.ws.rs.Path)11 UserSchoolDataIdentifier (fi.otavanopisto.muikku.model.users.UserSchoolDataIdentifier)8 SchoolDataIdentifier (fi.otavanopisto.muikku.schooldata.SchoolDataIdentifier)8 DELETE (javax.ws.rs.DELETE)4 POST (javax.ws.rs.POST)4 FlagShare (fi.otavanopisto.muikku.model.users.FlagShare)3 GET (javax.ws.rs.GET)3 UserEntity (fi.otavanopisto.muikku.model.users.UserEntity)2 WorkspaceEntity (fi.otavanopisto.muikku.model.workspace.WorkspaceEntity)2 WorkspaceUserEntity (fi.otavanopisto.muikku.model.workspace.WorkspaceUserEntity)2 SearchProvider (fi.otavanopisto.muikku.search.SearchProvider)2 SearchResult (fi.otavanopisto.muikku.search.SearchResult)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 EntityManager (javax.persistence.EntityManager)2 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)2 FlagStudent (fi.otavanopisto.muikku.model.users.FlagStudent)1