Search in sources :

Example 1 with Folder

use of org.activityinfo.server.database.hibernate.entity.Folder in project activityinfo by bedatadriven.

the class GetUsersHandler method execute.

@Override
public CommandResult execute(GetUsers cmd, User currentUser) {
    Database db = em.getReference(Database.class, cmd.getDatabaseId());
    UserPermission currentUserPermission = PermissionOracle.using(em).getPermissionByUser(db, currentUser);
    assertAuthorized(currentUserPermission);
    String whereClause = "up.database.id = :dbId and " + "up.user.id <> :currentUserId and " + "up.allowView = true";
    if (!currentUserPermission.isAllowManageAllUsers()) {
        whereClause += " and up.partner.id = " + currentUserPermission.getPartner().getId();
    }
    TypedQuery<UserPermission> query = em.createQuery("select up from UserPermission up where " + whereClause + " " + composeOrderByClause(cmd), UserPermission.class).setParameter("dbId", cmd.getDatabaseId()).setParameter("currentUserId", currentUser.getId());
    List<Folder> folders = em.createQuery("select f from Folder f where f.database.id = :dbId", Folder.class).setParameter("dbId", cmd.getDatabaseId()).getResultList();
    Map<ResourceId, Folder> folderMap = new HashMap<>();
    for (Folder folder : folders) {
        folderMap.put(CuidAdapter.folderId(folder.getId()), folder);
    }
    if (cmd.getOffset() > 0) {
        query.setFirstResult(cmd.getOffset());
    }
    if (cmd.getLimit() > 0) {
        query.setMaxResults(cmd.getLimit());
    }
    List<UserPermissionDTO> models = new ArrayList<>();
    for (UserPermission perm : query.getResultList()) {
        UserPermissionDTO dto = new UserPermissionDTO();
        dto.setEmail(perm.getUser().getEmail());
        dto.setName(perm.getUser().getName());
        dto.setOrganization(perm.getUser().getOrganization());
        dto.setJobtitle(perm.getUser().getJobtitle());
        dto.setAllowDesign(perm.isAllowDesign());
        dto.setAllowView(perm.isAllowView());
        dto.setAllowViewAll(perm.isAllowViewAll());
        dto.setAllowEdit(perm.isAllowEdit());
        dto.setAllowEditAll(perm.isAllowEditAll());
        dto.setAllowManageUsers(perm.isAllowManageUsers());
        dto.setAllowManageAllUsers(perm.isAllowManageAllUsers());
        dto.setPartner(new PartnerDTO(perm.getPartner().getId(), perm.getPartner().getName()));
        dto.setFolderLimitation(!Strings.isNullOrEmpty(perm.getModel()));
        dto.setFolders(folderList(folderMap, perm));
        models.add(dto);
    }
    return new UserResult(models, cmd.getOffset(), queryTotalCount(cmd, currentUser, whereClause));
}
Also used : PartnerDTO(org.activityinfo.legacy.shared.model.PartnerDTO) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Folder(org.activityinfo.server.database.hibernate.entity.Folder) UserPermissionDTO(org.activityinfo.legacy.shared.model.UserPermissionDTO) ResourceId(org.activityinfo.model.resource.ResourceId) Database(org.activityinfo.server.database.hibernate.entity.Database) UserResult(org.activityinfo.legacy.shared.command.result.UserResult) UserPermission(org.activityinfo.server.database.hibernate.entity.UserPermission)

Example 2 with Folder

use of org.activityinfo.server.database.hibernate.entity.Folder in project activityinfo by bedatadriven.

the class GetUsersHandler method folderList.

private List<FolderDTO> folderList(Map<ResourceId, Folder> folderMap, UserPermission perm) {
    if (Strings.isNullOrEmpty(perm.getModel())) {
        // Include all folders, as user has access to all
        List<FolderDTO> folderList = new ArrayList<>(folderMap.size());
        folderMap.values().forEach(folder -> folderList.add(createFolderDTO(folder)));
        return folderList;
    }
    try {
        UserPermissionModel model = UserPermissionModel.fromJson(Json.parse(perm.getModel()));
        List<FolderDTO> folderList = new ArrayList<>();
        for (GrantModel grantModel : model.getGrants()) {
            Folder folder = folderMap.get(grantModel.getResourceId());
            if (folder != null) {
                folderList.add(createFolderDTO(folder));
            }
        }
        return folderList;
    } catch (Exception e) {
        LOGGER.log(Level.SEVERE, "Permissions model: " + perm.getModel());
        LOGGER.log(Level.SEVERE, "Failed to parse permissions model", e);
        return null;
    }
}
Also used : FolderDTO(org.activityinfo.legacy.shared.model.FolderDTO) GrantModel(org.activityinfo.model.database.GrantModel) ArrayList(java.util.ArrayList) Folder(org.activityinfo.server.database.hibernate.entity.Folder) IllegalAccessCommandException(org.activityinfo.legacy.shared.exception.IllegalAccessCommandException) UserPermissionModel(org.activityinfo.model.database.UserPermissionModel)

Aggregations

ArrayList (java.util.ArrayList)2 Folder (org.activityinfo.server.database.hibernate.entity.Folder)2 HashMap (java.util.HashMap)1 UserResult (org.activityinfo.legacy.shared.command.result.UserResult)1 IllegalAccessCommandException (org.activityinfo.legacy.shared.exception.IllegalAccessCommandException)1 FolderDTO (org.activityinfo.legacy.shared.model.FolderDTO)1 PartnerDTO (org.activityinfo.legacy.shared.model.PartnerDTO)1 UserPermissionDTO (org.activityinfo.legacy.shared.model.UserPermissionDTO)1 GrantModel (org.activityinfo.model.database.GrantModel)1 UserPermissionModel (org.activityinfo.model.database.UserPermissionModel)1 ResourceId (org.activityinfo.model.resource.ResourceId)1 Database (org.activityinfo.server.database.hibernate.entity.Database)1 UserPermission (org.activityinfo.server.database.hibernate.entity.UserPermission)1