From 8b78620c2c39c996007212616a586a8644ae7e33 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 7 Apr 2025 22:52:59 -0500 Subject: Gitlab enhancements (#2) * add various in-progress scripts for gitlab * Commit from GitHub Actions (Ruff) * add gitlab results for free-tier tools * Commit from GitHub Actions (Ruff) * add gitlab results for ultimate-tier tools * Commit from GitHub Actions (Ruff) --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- applications/gitlab/users.py | 53 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 applications/gitlab/users.py (limited to 'applications/gitlab/users.py') diff --git a/applications/gitlab/users.py b/applications/gitlab/users.py new file mode 100644 index 0000000..fab2646 --- /dev/null +++ b/applications/gitlab/users.py @@ -0,0 +1,53 @@ +""" +Gather all members of specified GitLab groups and projects and their access levels. + + Ref: https://docs.gitlab.com/api/members/ +""" + +import requests + +BASE_URL = "https://gitlab.com/api/v4" +PRIVATE_TOKEN = "your_access_token" +GROUP_IDS = ["group_id_1", "group_id_2"] # Add your group IDs here +PROJECT_IDS = ["project_id_1", "project_id_2"] # Add your project IDs here +TIMEOUT = 30 + +HEADERS = {"PRIVATE-TOKEN": PRIVATE_TOKEN} + + +def get_members(url, name): + response = requests.get(url, headers=HEADERS, timeout=TIMEOUT) + if response.status_code == 200: + members = response.json() + print(f"\n{name} Members:") + for member in members: + print( + f"Username: {member['username']}, Access Level: {member['access_level']}" + ) + else: + print( + f"Failed to fetch members for {name}: {response.status_code}, {response.text}" + ) + + +if __name__ == "__main__": + access_levels = """Access Level Roles: + 0 : No access + 5 : Minimal access + 10 : Guest + 15 : Planner + 20 : Reporter + 30 : Developer + 40 : Maintainer + 50 : Owner + 60 : Admin + """ + print(access_levels) + + for group_id in GROUP_IDS: + group_url = f"{BASE_URL}/groups/{group_id}/members" + get_members(group_url, f"Group {group_id}") + + for project_id in PROJECT_IDS: + project_url = f"{BASE_URL}/projects/{project_id}/members" + get_members(project_url, f"Project {project_id}") -- cgit v1.2.3-70-g09d2