package io.lumify.newUserWorkspaceSharer;
import com.google.inject.Inject;
import io.lumify.core.config.Configuration;
import io.lumify.core.model.user.UserListener;
import io.lumify.core.model.user.UserRepository;
import io.lumify.core.model.workspace.Workspace;
import io.lumify.web.clientapi.model.WorkspaceAccess;
import io.lumify.core.model.workspace.WorkspaceRepository;
import io.lumify.core.user.User;
import io.lumify.core.util.LumifyLogger;
import io.lumify.core.util.LumifyLoggerFactory;
public class NewUserWorkspaceSharerUserListener implements UserListener {
private static final LumifyLogger LOGGER = LumifyLoggerFactory.getLogger(NewUserWorkspaceSharerUserListener.class);
public static final String SETTING_WORKSPACE_ID = "newUserWorkspaceSharer.workspaceId";
private Configuration configuration;
private WorkspaceRepository workspaceRepository;
private UserRepository userRepository;
@Override
public void newUserAdded(User user) {
try {
String workspaceId = this.configuration.get(SETTING_WORKSPACE_ID, null);
if (workspaceId == null) {
LOGGER.warn("cannot find configuration parameter: %s", SETTING_WORKSPACE_ID);
return;
}
Workspace workspace = this.workspaceRepository.findById(workspaceId, this.userRepository.getSystemUser());
if (workspace == null) {
LOGGER.warn("cannot find workspace: %s", workspaceId);
return;
}
this.workspaceRepository.updateUserOnWorkspace(workspace, user.getUserId(), WorkspaceAccess.READ, this.userRepository.getSystemUser());
this.userRepository.setCurrentWorkspace(user.getUserId(), workspace.getWorkspaceId());
} catch (Exception ex) {
LOGGER.error("Could not share workspace", ex);
}
}
@Inject
public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
}
@Inject
public void setWorkspaceRepository(WorkspaceRepository workspaceRepository) {
this.workspaceRepository = workspaceRepository;
}
@Inject
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
}