private boolean shouldRejectMessageToWorkspaces(JSONObject permissionsJson, HttpSession session) { JSONArray workspaces = permissionsJson.optJSONArray("workspaces"); if (workspaces != null) { String currentUserId = CurrentUser.getUserId(session); if (currentUserId == null) { return true; } String currentWorkspaceId = userRepository.getCurrentWorkspaceId(currentUserId); if (currentWorkspaceId == null) { return true; } if (!JSONUtil.isInArray(workspaces, currentWorkspaceId)) { return true; } } return false; }
private void switchWorkspace(String authUserId, String workspaceId) { if (!workspaceId.equals(userRepository.getCurrentWorkspaceId(authUserId))) { User authUser = userRepository.findById(authUserId); Workspace workspace = workspaceRepository.findById(workspaceId, authUser); userRepository.setCurrentWorkspace(authUserId, workspace.getWorkspaceId()); workQueueRepository.pushUserCurrentWorkspaceChange(authUser, workspace.getWorkspaceId()); LOGGER.debug("User %s switched current workspace to %s", authUserId, workspaceId); } }
@Handle public ClientApiWorkspaces handle( @ActiveWorkspaceId(required = false) String workspaceId, User user ) throws Exception { Authorizations authorizations; if (hasAccess(workspaceId, user)) { authorizations = authorizationRepository.getGraphAuthorizations(user, workspaceId); } else { authorizations = authorizationRepository.getGraphAuthorizations(user); } Iterable<Workspace> workspaces = workspaceRepository.findAllForUser(user); String activeWorkspaceId = userRepository.getCurrentWorkspaceId(user.getUserId()); activeWorkspaceId = activeWorkspaceId != null ? activeWorkspaceId : ""; ClientApiWorkspaces results = new ClientApiWorkspaces(); for (Workspace workspace : workspaces) { ClientApiWorkspace workspaceClientApi = workspaceRepository.toClientApi( workspace, user, authorizations ); if (workspaceClientApi != null) { results.addWorkspace(workspaceClientApi); } } return results; }
if (workspace.getWorkspaceId().equals(userRepository.getCurrentWorkspaceId(userWithAccess.getUserId()))) { userRepository.setCurrentWorkspace(userWithAccess.getUserId(), null);