use of org.gitlab4j.api.models.Member in project catma by forTEXT.
the class GitlabManagerRestricted method leaveGroup.
@Override
public void leaveGroup(String path) throws IOException {
GroupApi groupApi = restrictedGitLabApi.getGroupApi();
try {
Group group = groupApi.getGroup(path);
Member member = groupApi.getMember(group.getId(), user.getUserId());
if (member != null && member.getAccessLevel().value >= AccessLevel.GUEST.value && member.getAccessLevel().value < AccessLevel.OWNER.value) {
groupApi.removeMember(group.getId(), user.getUserId());
}
} catch (GitLabApiException ge) {
throw new IOException("Couldn't leave group", ge);
}
}
use of org.gitlab4j.api.models.Member in project catma by forTEXT.
the class GitlabManagerRestricted method getResourceMembers.
@Override
public Set<de.catma.user.Member> getResourceMembers(String projectId, String resourceId) throws IOException {
try {
Project project = restrictedGitLabApi.getProjectApi().getProject(projectId, resourceId);
if (project != null) {
List<GitMember> allMembers = new ProjectApi(restrictedGitLabApi).getAllMembers(project.getId()).stream().map(member -> new GitMember(member)).collect(Collectors.toList());
Map<Integer, de.catma.user.Member> mergedList = new HashMap<>();
for (de.catma.user.Member m : allMembers) {
if (!mergedList.containsKey(m.getUserId()) || mergedList.get(m.getUserId()).getRole().getAccessLevel() < m.getRole().getAccessLevel()) {
mergedList.put(m.getUserId(), m);
}
}
return mergedList.values().stream().collect(Collectors.toSet());
} else {
throw new IOException("resource unknown");
}
} catch (GitLabApiException e) {
throw new IOException("resource unknown");
}
}
use of org.gitlab4j.api.models.Member in project catma by forTEXT.
the class GitlabManagerCommon method assignDefaultAccessToRootProject.
private RBACSubject assignDefaultAccessToRootProject(RBACSubject subject, Integer groupId) throws IOException {
try {
Group group = getGitLabApi().getGroupApi().getGroup(groupId);
Project rootProject = getGitLabApi().getProjectApi().getProject(group.getName(), GitProjectManager.getProjectRootRepositoryName(group.getName()));
try {
Member member = getGitLabApi().getProjectApi().getMember(rootProject.getId(), subject.getUserId());
if (member.getAccessLevel().value < RBACRole.ASSISTANT.getAccessLevel()) {
return new GitMember(getGitLabApi().getProjectApi().updateMember(rootProject.getId(), subject.getUserId(), AccessLevel.forValue(RBACRole.ASSISTANT.getAccessLevel())));
} else {
// In both cases we refuse to update the role, and simply do nothing.
return subject;
}
} catch (GitLabApiException e) {
return new GitMember(getGitLabApi().getProjectApi().addMember(rootProject.getId(), subject.getUserId(), AccessLevel.forValue(RBACRole.ASSISTANT.getAccessLevel())));
}
} catch (GitLabApiException e) {
throw new IOException("error assigning default access to root project in group #" + groupId, e);
}
}
use of org.gitlab4j.api.models.Member in project catma by forTEXT.
the class GitlabManagerCommon method getRoleOnProject.
@Override
public final RBACRole getRoleOnProject(RBACSubject subject, String projectId) throws IOException {
try {
Group group = getGitLabApi().getGroupApi().getGroup(projectId);
if (group == null) {
throw new IOException("Project unkown " + projectId);
}
Member member = getGitLabApi().getGroupApi().getMember(group.getId(), subject.getUserId());
if (member == null) {
throw new IOException("member not found " + subject);
}
return RBACRole.forValue(member.getAccessLevel().value);
} catch (GitLabApiException e) {
throw new IOException("error getting role on project #" + projectId, e);
}
}
use of org.gitlab4j.api.models.Member in project catma by forTEXT.
the class GitlabManagerCommon method getRoleOnResource.
@Override
public final RBACRole getRoleOnResource(RBACSubject subject, String projectId, String resourceId) throws IOException {
try {
Project project = getGitLabApi().getProjectApi().getProject(projectId, resourceId);
if (project == null) {
throw new IOException("resource or root-project unkown " + resourceId);
}
Member member = getGitLabApi().getProjectApi().getMember(project.getId(), subject.getUserId());
if (member == null) {
throw new IOException("member not found " + subject);
}
return RBACRole.forValue(member.getAccessLevel().value);
} catch (GitLabApiException e) {
throw new IOException("resource or root-project unkown " + resourceId, e);
}
}
Aggregations