Search in sources :

Example 11 with UserId

use of edu.stanford.bmir.protege.web.shared.user.UserId in project webprotege by protegeproject.

the class PermissionManager method firePermissionsChanged.

/**
 * Fires a {@link PermissionsChangedEvent} for the
 * current project on the event bus.
 */
public void firePermissionsChanged() {
    GWT.log("[PermissionManager] Firing permissions changed");
    permittedActionCache.clear();
    final UserId userId = loggedInUserProvider.getCurrentUserId();
    final Optional<ProjectId> projectId = activeProjectManager.getActiveProjectId();
    if (!projectId.isPresent()) {
        return;
    }
    final ProjectId theProjectId = projectId.get();
    dispatchServiceManager.execute(new GetProjectPermissionsAction(projectId.get(), userId), result -> {
        UserIdProjectIdKey key = new UserIdProjectIdKey(userId, theProjectId);
        permittedActionCache.putAll(key, result.getAllowedActions());
        GWT.log("[PermissionManager] Firing permissions changed for project: " + projectId);
        eventBus.fireEventFromSource(new PermissionsChangedEvent(theProjectId).asGWTEvent(), theProjectId);
    });
}
Also used : PermissionsChangedEvent(edu.stanford.bmir.protege.web.shared.permissions.PermissionsChangedEvent) GetProjectPermissionsAction(edu.stanford.bmir.protege.web.shared.permissions.GetProjectPermissionsAction) UserId(edu.stanford.bmir.protege.web.shared.user.UserId) ProjectId(edu.stanford.bmir.protege.web.shared.project.ProjectId) UserIdProjectIdKey(edu.stanford.bmir.protege.web.shared.user.UserIdProjectIdKey)

Example 12 with UserId

use of edu.stanford.bmir.protege.web.shared.user.UserId in project webprotege by protegeproject.

the class PerspectivePresenter method retrieveAndSetPerspective.

private void retrieveAndSetPerspective(final PerspectiveId perspectiveId) {
    GWT.log("[PerspectivePresenter] Retrive and set perspective for " + perspectiveId);
    Perspective p = perspectiveCache.get(perspectiveId);
    if (p != null) {
        GWT.log("[PerspectivePresenter] Using cached perspective for " + perspectiveId);
        perspectiveView.setWidget(p);
        return;
    }
    perspectiveView.setWidget(new BusyViewImpl());
    GWT.log("[PerspectivePresenter] Loading perspective for project " + projectId);
    UserId userId = loggedInUserProvider.getCurrentUserId();
    dispatchServiceManager.execute(new GetPerspectiveLayoutAction(projectId, userId, perspectiveId), result -> {
        GWT.log("[PerspectivePresenter] Retrieved layout: " + result.getPerspectiveLayout());
        installPerspective(perspectiveId, result.getPerspectiveLayout());
    });
}
Also used : ResetPerspectiveLayoutAction.resetPerspective(edu.stanford.bmir.protege.web.shared.perspective.ResetPerspectiveLayoutAction.resetPerspective) UserId(edu.stanford.bmir.protege.web.shared.user.UserId) BusyViewImpl(edu.stanford.bmir.protege.web.client.progress.BusyViewImpl)

Example 13 with UserId

use of edu.stanford.bmir.protege.web.shared.user.UserId in project webprotege by protegeproject.

the class GetAvailableProjectsHandler method execute.

@Nonnull
@Override
public GetAvailableProjectsResult execute(@Nonnull GetAvailableProjectsAction action, @Nonnull ExecutionContext executionContext) {
    UserId userId = executionContext.getUserId();
    Optional<UserActivityRecord> userActivityRecord = userActivityManager.getUserActivityRecord(executionContext.getUserId());
    Map<ProjectId, Long> lastOpenedMap = new HashMap<>();
    userActivityRecord.ifPresent(record -> record.getRecentProjects().forEach(recent -> lastOpenedMap.put(recent.getProjectId(), recent.getTimestamp())));
    List<AvailableProject> availableProjects = projectPermissionsManager.getReadableProjects(userId).stream().map(details -> {
        Subject user = forUser(userId);
        ProjectResource projectResource = new ProjectResource(details.getProjectId());
        boolean downloadable = accessManager.hasPermission(user, projectResource, DOWNLOAD_PROJECT);
        boolean trashable = details.getOwner().equals(userId) || accessManager.hasPermission(user, projectResource, MOVE_ANY_PROJECT_TO_TRASH);
        long lastOpened = lastOpenedMap.getOrDefault(details.getProjectId(), 0L);
        return new AvailableProject(details, downloadable, trashable, lastOpened);
    }).collect(toList());
    return new GetAvailableProjectsResult(availableProjects);
}
Also used : AvailableProject(edu.stanford.bmir.protege.web.shared.project.AvailableProject) UserActivityManager(edu.stanford.bmir.protege.web.server.user.UserActivityManager) ApplicationActionHandler(edu.stanford.bmir.protege.web.server.dispatch.ApplicationActionHandler) UserActivityRecord(edu.stanford.bmir.protege.web.server.user.UserActivityRecord) HashMap(java.util.HashMap) Inject(javax.inject.Inject) UserId(edu.stanford.bmir.protege.web.shared.user.UserId) AccessManager(edu.stanford.bmir.protege.web.server.access.AccessManager) DOWNLOAD_PROJECT(edu.stanford.bmir.protege.web.shared.access.BuiltInAction.DOWNLOAD_PROJECT) Map(java.util.Map) ProjectResource(edu.stanford.bmir.protege.web.server.access.ProjectResource) Nonnull(javax.annotation.Nonnull) Subject(edu.stanford.bmir.protege.web.server.access.Subject) NullValidator(edu.stanford.bmir.protege.web.server.dispatch.validators.NullValidator) Subject.forUser(edu.stanford.bmir.protege.web.server.access.Subject.forUser) RequestValidator(edu.stanford.bmir.protege.web.server.dispatch.RequestValidator) MOVE_ANY_PROJECT_TO_TRASH(edu.stanford.bmir.protege.web.shared.access.BuiltInAction.MOVE_ANY_PROJECT_TO_TRASH) ProjectPermissionsManager(edu.stanford.bmir.protege.web.server.permissions.ProjectPermissionsManager) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) ExecutionContext(edu.stanford.bmir.protege.web.server.dispatch.ExecutionContext) Optional(java.util.Optional) GetAvailableProjectsResult(edu.stanford.bmir.protege.web.shared.project.GetAvailableProjectsResult) ProjectId(edu.stanford.bmir.protege.web.shared.project.ProjectId) RequestContext(edu.stanford.bmir.protege.web.server.dispatch.RequestContext) GetAvailableProjectsAction(edu.stanford.bmir.protege.web.shared.project.GetAvailableProjectsAction) HashMap(java.util.HashMap) ProjectId(edu.stanford.bmir.protege.web.shared.project.ProjectId) Subject(edu.stanford.bmir.protege.web.server.access.Subject) UserActivityRecord(edu.stanford.bmir.protege.web.server.user.UserActivityRecord) UserId(edu.stanford.bmir.protege.web.shared.user.UserId) GetAvailableProjectsResult(edu.stanford.bmir.protege.web.shared.project.GetAvailableProjectsResult) AvailableProject(edu.stanford.bmir.protege.web.shared.project.AvailableProject) ProjectResource(edu.stanford.bmir.protege.web.server.access.ProjectResource) Nonnull(javax.annotation.Nonnull)

Example 14 with UserId

use of edu.stanford.bmir.protege.web.shared.user.UserId in project webprotege by protegeproject.

the class CreateNewProjectActionHandler method execute.

@Nonnull
@Override
public CreateNewProjectResult execute(@Nonnull CreateNewProjectAction action, @Nonnull ExecutionContext executionContext) {
    try {
        UserId userId = executionContext.getUserId();
        if (!accessManager.hasPermission(forUser(userId), ApplicationResource.get(), CREATE_EMPTY_PROJECT)) {
            throw new PermissionDeniedException("You do not have permission to create new projects", userInSessionFactory.getUserInSession(userId));
        }
        NewProjectSettings newProjectSettings = action.getNewProjectSettings();
        if (newProjectSettings.hasSourceDocument()) {
            if (!accessManager.hasPermission(forUser(userId), ApplicationResource.get(), UPLOAD_PROJECT)) {
                throw new PermissionDeniedException("You do not have permission to upload projects", userInSessionFactory.getUserInSession(userId));
            }
        }
        ProjectId projectId = pm.createNewProject(newProjectSettings);
        if (!projectDetailsManager.isExistingProject(projectId)) {
            projectDetailsManager.registerProject(projectId, newProjectSettings);
            applyDefaultPermissions(projectId, userId);
        }
        return new CreateNewProjectResult(projectDetailsManager.getProjectDetails(projectId));
    } catch (OWLOntologyCreationException | OWLOntologyStorageException | IOException e) {
        throw new RuntimeException(e);
    }
}
Also used : OWLOntologyCreationException(org.semanticweb.owlapi.model.OWLOntologyCreationException) NewProjectSettings(edu.stanford.bmir.protege.web.shared.project.NewProjectSettings) UserId(edu.stanford.bmir.protege.web.shared.user.UserId) ProjectId(edu.stanford.bmir.protege.web.shared.project.ProjectId) PermissionDeniedException(edu.stanford.bmir.protege.web.shared.permissions.PermissionDeniedException) CreateNewProjectResult(edu.stanford.bmir.protege.web.shared.project.CreateNewProjectResult) IOException(java.io.IOException) OWLOntologyStorageException(org.semanticweb.owlapi.model.OWLOntologyStorageException) Nonnull(javax.annotation.Nonnull)

Example 15 with UserId

use of edu.stanford.bmir.protege.web.shared.user.UserId in project webprotege by protegeproject.

the class GetPerspectiveLayoutActionHandler method execute.

@Nonnull
@Override
public GetPerspectiveLayoutResult execute(@Nonnull GetPerspectiveLayoutAction action, @Nonnull ExecutionContext executionContext) {
    PerspectiveId perspectiveId = action.getPerspectiveId();
    ProjectId projectId = action.getProjectId();
    UserId userId = action.getUserId();
    PerspectiveLayout perspectiveLayout = perspectiveLayoutStore.getPerspectiveLayout(projectId, userId, perspectiveId);
    return new GetPerspectiveLayoutResult(perspectiveLayout);
}
Also used : UserId(edu.stanford.bmir.protege.web.shared.user.UserId) ProjectId(edu.stanford.bmir.protege.web.shared.project.ProjectId) PerspectiveId(edu.stanford.bmir.protege.web.shared.perspective.PerspectiveId) PerspectiveLayout(edu.stanford.bmir.protege.web.shared.perspective.PerspectiveLayout) GetPerspectiveLayoutResult(edu.stanford.bmir.protege.web.shared.perspective.GetPerspectiveLayoutResult) Nonnull(javax.annotation.Nonnull)

Aggregations

UserId (edu.stanford.bmir.protege.web.shared.user.UserId)64 Nonnull (javax.annotation.Nonnull)20 Test (org.junit.Test)14 ProjectId (edu.stanford.bmir.protege.web.shared.project.ProjectId)13 Inject (javax.inject.Inject)6 OWLEntity (org.semanticweb.owlapi.model.OWLEntity)6 List (java.util.List)5 ImmutableList (com.google.common.collect.ImmutableList)4 AccessManager (edu.stanford.bmir.protege.web.server.access.AccessManager)4 WebProtegeSession (edu.stanford.bmir.protege.web.server.session.WebProtegeSession)4 WebProtegeSessionImpl (edu.stanford.bmir.protege.web.server.session.WebProtegeSessionImpl)4 OWLEntityData (edu.stanford.bmir.protege.web.shared.entity.OWLEntityData)4 EventTag (edu.stanford.bmir.protege.web.shared.event.EventTag)4 ArrayList (java.util.ArrayList)4 DispatchServiceCallback (edu.stanford.bmir.protege.web.client.dispatch.DispatchServiceCallback)3 Subject.forUser (edu.stanford.bmir.protege.web.server.access.Subject.forUser)3 Optional (java.util.Optional)3 Stopwatch (com.google.common.base.Stopwatch)2 ImmutableSet (com.google.common.collect.ImmutableSet)2 ProjectResource (edu.stanford.bmir.protege.web.server.access.ProjectResource)2