Search in sources :

Example 1 with User

use of edu.harvard.iq.dataverse.authorization.users.User in project dataverse by IQSS.

the class DatasetServiceBean method removeDatasetLocks.

/**
 * Removes all {@link DatasetLock}s for the dataset whose id is passed and reason
 * is {@code aReason}.
 * @param datasetId Id of the dataset whose locks will b removed.
 * @param aReason The reason of the locks that will be removed.
 */
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void removeDatasetLocks(Long datasetId, DatasetLock.Reason aReason) {
    Dataset dataset = em.find(Dataset.class, datasetId);
    new HashSet<>(dataset.getLocks()).stream().filter(l -> l.getReason() == aReason).forEach(lock -> {
        dataset.removeLock(lock);
        AuthenticatedUser user = lock.getUser();
        user.getDatasetLocks().remove(lock);
        em.remove(lock);
    });
}
Also used : AuthenticatedUser(edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Date(java.util.Date) StoredProcedureQuery(javax.persistence.StoredProcedureQuery) SimpleDateFormat(java.text.SimpleDateFormat) HashMap(java.util.HashMap) WorkflowComment(edu.harvard.iq.dataverse.workflows.WorkflowComment) SettingsServiceBean(edu.harvard.iq.dataverse.settings.SettingsServiceBean) TypedQuery(javax.persistence.TypedQuery) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) HashSet(java.util.HashSet) User(edu.harvard.iq.dataverse.authorization.users.User) FileHandler(java.util.logging.FileHandler) TransactionAttributeType(javax.ejb.TransactionAttributeType) Permission(edu.harvard.iq.dataverse.authorization.Permission) DatasetUtil(edu.harvard.iq.dataverse.dataset.DatasetUtil) Asynchronous(javax.ejb.Asynchronous) TransactionAttribute(javax.ejb.TransactionAttribute) Map(java.util.Map) XMLStreamException(javax.xml.stream.XMLStreamException) XMLStreamWriter(javax.xml.stream.XMLStreamWriter) Named(javax.inject.Named) EJB(javax.ejb.EJB) RandomStringUtils(org.apache.commons.lang.RandomStringUtils) OutputStream(java.io.OutputStream) Stateless(javax.ejb.Stateless) IndexServiceBean(edu.harvard.iq.dataverse.search.IndexServiceBean) Set(java.util.Set) IOException(java.io.IOException) EntityManager(javax.persistence.EntityManager) PersistenceContext(javax.persistence.PersistenceContext) AuthenticationServiceBean(edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean) Logger(java.util.logging.Logger) File(java.io.File) EJBException(javax.ejb.EJBException) XMLOutputFactory(javax.xml.stream.XMLOutputFactory) ImageThumbConverter(edu.harvard.iq.dataverse.dataaccess.ImageThumbConverter) List(java.util.List) Query(javax.persistence.Query) Strings(org.ocpsoft.common.util.Strings) OAIRecordServiceBean(edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean) InputStream(java.io.InputStream) AuthenticatedUser(edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser) TransactionAttribute(javax.ejb.TransactionAttribute)

Example 2 with User

use of edu.harvard.iq.dataverse.authorization.users.User in project dataverse by IQSS.

the class ReturnDatasetToAuthorCommandTest method setUp.

@Before
public void setUp() {
    dataset = new Dataset();
    HttpServletRequest aHttpServletRequest = null;
    dataverseRequest = new DataverseRequest(MocksFactory.makeAuthenticatedUser("First", "Last"), aHttpServletRequest);
    testEngine = new TestDataverseEngine(new TestCommandContext() {

        @Override
        public AuthenticationServiceBean authentication() {
            return new AuthenticationServiceBean() {

                @Override
                public AuthenticatedUser getAuthenticatedUser(String id) {
                    return MocksFactory.makeAuthenticatedUser("First", "Last");
                }
            };
        }

        @Override
        public IndexServiceBean index() {
            return new IndexServiceBean() {

                @Override
                public Future<String> indexDataset(Dataset dataset, boolean doNormalSolrDocCleanUp) {
                    return null;
                }
            };
        }

        @Override
        public EntityManager em() {
            return new NoOpTestEntityManager();
        }

        @Override
        public DatasetServiceBean datasets() {
            return new DatasetServiceBean() {

                {
                    em = new NoOpTestEntityManager();
                }

                @Override
                public DatasetVersionUser getDatasetVersionUser(DatasetVersion version, User user) {
                    return null;
                }

                @Override
                public WorkflowComment addWorkflowComment(WorkflowComment comment) {
                    return comment;
                }

                @Override
                public void removeDatasetLocks(Long datasetId, DatasetLock.Reason aReason) {
                }
            };
        }

        @Override
        public DataverseRoleServiceBean roles() {
            return new DataverseRoleServiceBean() {

                @Override
                public DataverseRole findBuiltinRoleByAlias(String alias) {
                    return new DataverseRole();
                }

                @Override
                public RoleAssignment save(RoleAssignment assignment) {
                    // no-op
                    return assignment;
                }
            };
        }

        @Override
        public PermissionServiceBean permissions() {
            return new PermissionServiceBean() {

                @Override
                public List<AuthenticatedUser> getUsersWithPermissionOn(Permission permission, DvObject dvo) {
                    // We only need permissions for notifications, which we are testing in InReviewWorkflowIT.
                    return Collections.emptyList();
                }
            };
        }
    });
}
Also used : DataverseRoleServiceBean(edu.harvard.iq.dataverse.DataverseRoleServiceBean) TestCommandContext(edu.harvard.iq.dataverse.engine.TestCommandContext) AuthenticatedUser(edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser) User(edu.harvard.iq.dataverse.authorization.users.User) DatasetVersionUser(edu.harvard.iq.dataverse.DatasetVersionUser) PermissionServiceBean(edu.harvard.iq.dataverse.PermissionServiceBean) DvObject(edu.harvard.iq.dataverse.DvObject) Dataset(edu.harvard.iq.dataverse.Dataset) WorkflowComment(edu.harvard.iq.dataverse.workflows.WorkflowComment) RoleAssignment(edu.harvard.iq.dataverse.RoleAssignment) NoOpTestEntityManager(edu.harvard.iq.dataverse.engine.NoOpTestEntityManager) DatasetVersion(edu.harvard.iq.dataverse.DatasetVersion) AuthenticatedUser(edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser) AuthenticationServiceBean(edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean) TestDataverseEngine(edu.harvard.iq.dataverse.engine.TestDataverseEngine) DataverseRole(edu.harvard.iq.dataverse.authorization.DataverseRole) HttpServletRequest(javax.servlet.http.HttpServletRequest) DataverseRequest(edu.harvard.iq.dataverse.engine.command.DataverseRequest) DatasetServiceBean(edu.harvard.iq.dataverse.DatasetServiceBean) Permission(edu.harvard.iq.dataverse.authorization.Permission) IndexServiceBean(edu.harvard.iq.dataverse.search.IndexServiceBean) Before(org.junit.Before)

Example 3 with User

use of edu.harvard.iq.dataverse.authorization.users.User in project dataverse by IQSS.

the class ShibGroupProvider method groupsFor.

@Override
public Set<ShibGroup> groupsFor(RoleAssignee ra, DvObject o) {
    if (ra instanceof User) {
        User user = (User) ra;
        Set<ShibGroup> shibGroups = new HashSet<>();
        if (user instanceof AuthenticatedUser) {
            AuthenticatedUser authenticatedUser = (AuthenticatedUser) user;
            Set<ShibGroup> groupsFor = shibGroupService.findFor(authenticatedUser);
            for (ShibGroup shibGroup : groupsFor) {
                shibGroup.setShibGroupProvider(this);
            }
            return groupsFor;
        }
        return shibGroups;
    } else {
        return Collections.emptySet();
    }
}
Also used : AuthenticatedUser(edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser) User(edu.harvard.iq.dataverse.authorization.users.User) AuthenticatedUser(edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser) HashSet(java.util.HashSet)

Example 4 with User

use of edu.harvard.iq.dataverse.authorization.users.User in project dataverse by IQSS.

the class Index method searchDebug.

/**
 * This method is for integration tests of search.
 */
@GET
@Path("test")
public Response searchDebug(@QueryParam("key") String apiToken, @QueryParam("q") String query, @QueryParam("fq") final List<String> filterQueries) {
    User user = findUserByApiToken(apiToken);
    if (user == null) {
        return error(Response.Status.UNAUTHORIZED, "Invalid apikey '" + apiToken + "'");
    }
    Dataverse subtreeScope = dataverseService.findRootDataverse();
    String sortField = SearchFields.ID;
    String sortOrder = SortBy.ASCENDING;
    int paginationStart = 0;
    boolean dataRelatedToMe = false;
    int numResultsPerPage = Integer.MAX_VALUE;
    SolrQueryResponse solrQueryResponse;
    try {
        solrQueryResponse = searchService.search(createDataverseRequest(user), subtreeScope, query, filterQueries, sortField, sortOrder, paginationStart, dataRelatedToMe, numResultsPerPage);
    } catch (SearchException ex) {
        return error(Response.Status.INTERNAL_SERVER_ERROR, ex.getLocalizedMessage() + ": " + ex.getCause().getLocalizedMessage());
    }
    JsonArrayBuilder itemsArrayBuilder = Json.createArrayBuilder();
    List<SolrSearchResult> solrSearchResults = solrQueryResponse.getSolrSearchResults();
    for (SolrSearchResult solrSearchResult : solrSearchResults) {
        itemsArrayBuilder.add(solrSearchResult.getType() + ":" + solrSearchResult.getNameSort());
    }
    return ok(itemsArrayBuilder);
}
Also used : SolrSearchResult(edu.harvard.iq.dataverse.search.SolrSearchResult) SolrQueryResponse(edu.harvard.iq.dataverse.search.SolrQueryResponse) AuthenticatedUser(edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser) User(edu.harvard.iq.dataverse.authorization.users.User) GuestUser(edu.harvard.iq.dataverse.authorization.users.GuestUser) SearchException(edu.harvard.iq.dataverse.search.SearchException) JsonArrayBuilder(javax.json.JsonArrayBuilder) Dataverse(edu.harvard.iq.dataverse.Dataverse) Path(javax.ws.rs.Path) GET(javax.ws.rs.GET)

Example 5 with User

use of edu.harvard.iq.dataverse.authorization.users.User in project dataverse by IQSS.

the class Index method searchPermsDebug.

/**
 * This method is for integration tests of search.
 */
@GET
@Path("permsDebug")
public Response searchPermsDebug(@QueryParam("key") String apiToken, @QueryParam("id") Long dvObjectId) {
    User user = findUserByApiToken(apiToken);
    if (user == null) {
        return error(Response.Status.UNAUTHORIZED, "Invalid apikey '" + apiToken + "'");
    }
    DvObject dvObjectToLookUp = dvObjectService.findDvObject(dvObjectId);
    if (dvObjectToLookUp == null) {
        return error(Status.BAD_REQUEST, "Could not find DvObject based on id " + dvObjectId);
    }
    List<DvObjectSolrDoc> solrDocs = SolrIndexService.determineSolrDocs(dvObjectToLookUp);
    JsonObjectBuilder data = Json.createObjectBuilder();
    JsonArrayBuilder permissionsData = Json.createArrayBuilder();
    for (DvObjectSolrDoc solrDoc : solrDocs) {
        JsonObjectBuilder dataDoc = Json.createObjectBuilder();
        dataDoc.add(SearchFields.ID, solrDoc.getSolrId());
        dataDoc.add(SearchFields.NAME_SORT, solrDoc.getNameOrTitle());
        JsonArrayBuilder perms = Json.createArrayBuilder();
        for (String perm : solrDoc.getPermissions()) {
            perms.add(perm);
        }
        dataDoc.add(SearchFields.DISCOVERABLE_BY, perms);
        permissionsData.add(dataDoc);
    }
    data.add("perms", permissionsData);
    DvObject dvObject = dvObjectService.findDvObject(dvObjectId);
    NullSafeJsonBuilder timestamps = jsonObjectBuilder();
    timestamps.add(contentChanged, SearchUtil.getTimestampOrNull(dvObject.getModificationTime()));
    timestamps.add(contentIndexed, SearchUtil.getTimestampOrNull(dvObject.getIndexTime()));
    timestamps.add(permsChanged, SearchUtil.getTimestampOrNull(dvObject.getPermissionModificationTime()));
    timestamps.add(permsIndexed, SearchUtil.getTimestampOrNull(dvObject.getPermissionIndexTime()));
    Set<RoleAssignment> roleAssignments = rolesSvc.rolesAssignments(dvObject);
    JsonArrayBuilder roleAssignmentsData = Json.createArrayBuilder();
    for (RoleAssignment roleAssignment : roleAssignments) {
        roleAssignmentsData.add(roleAssignment.getRole() + " has been granted to " + roleAssignment.getAssigneeIdentifier() + " on " + roleAssignment.getDefinitionPoint());
    }
    data.add("timestamps", timestamps);
    data.add("roleAssignments", roleAssignmentsData);
    return ok(data);
}
Also used : DvObjectSolrDoc(edu.harvard.iq.dataverse.search.DvObjectSolrDoc) AuthenticatedUser(edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser) User(edu.harvard.iq.dataverse.authorization.users.User) GuestUser(edu.harvard.iq.dataverse.authorization.users.GuestUser) DvObject(edu.harvard.iq.dataverse.DvObject) RoleAssignment(edu.harvard.iq.dataverse.RoleAssignment) JsonArrayBuilder(javax.json.JsonArrayBuilder) NullSafeJsonBuilder(edu.harvard.iq.dataverse.util.json.NullSafeJsonBuilder) JsonObjectBuilder(javax.json.JsonObjectBuilder) Path(javax.ws.rs.Path) GET(javax.ws.rs.GET)

Aggregations

User (edu.harvard.iq.dataverse.authorization.users.User)36 AuthenticatedUser (edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser)32 Path (javax.ws.rs.Path)18 GET (javax.ws.rs.GET)15 GuestUser (edu.harvard.iq.dataverse.authorization.users.GuestUser)11 Dataset (edu.harvard.iq.dataverse.Dataset)9 Dataverse (edu.harvard.iq.dataverse.Dataverse)9 JsonArrayBuilder (javax.json.JsonArrayBuilder)9 JsonObjectBuilder (javax.json.JsonObjectBuilder)8 DatasetVersion (edu.harvard.iq.dataverse.DatasetVersion)6 PrivateUrlUser (edu.harvard.iq.dataverse.authorization.users.PrivateUrlUser)6 DataverseRequest (edu.harvard.iq.dataverse.engine.command.DataverseRequest)6 DataverseRole (edu.harvard.iq.dataverse.authorization.DataverseRole)5 Permission (edu.harvard.iq.dataverse.authorization.Permission)5 POST (javax.ws.rs.POST)5 DataFile (edu.harvard.iq.dataverse.DataFile)4 DvObject (edu.harvard.iq.dataverse.DvObject)4 RoleAssignment (edu.harvard.iq.dataverse.RoleAssignment)4 AuthenticationServiceBean (edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean)4 DatasetServiceBean (edu.harvard.iq.dataverse.DatasetServiceBean)3