-
Or simply run this script in the browser console after loggin in to harbor (no manual copy of authorization/csrf headers neccesary):
await (async (user) => { let page = 0; let repos; do { page++; const reposResponse = await fetch(`https://harbor.akdb.de/api/v2.0/projects?page=${page}&page_size=100`); const csrfToken = reposResponse.headers.get('x-harbor-csrf-token'); repos = (await reposResponse.json()).map(repo => repo.name).filter((repo) => !['library'].includes(repo)); await Promise.all(repos.map((repo) => { return fetch(`https://harbor.akdb.de/api/v2.0/projects/${repo}/members`, { method: "POST", headers: { "Content-Type": "application/json", "accept": "application/json", "X-Harbor-CSRF-Token": csrfToken, }, body: JSON.stringify({ "role_id": 2, "member_user": { "username": user, }, }), }); })); } while (repos.length > 0); })('m.mustermann');
Edited by Josef Reichardt -
This snippet can be used to copy members (and their roles) from one project to another. Run this script in the browser console after logging in to harbor:
const projectSource = 'ozg-meldewesen'; const projectTarget = 'ozg-finanzwesen'; await (async (projectSource, projectTarget) => { let page = 0; let members; do { page++; const membersResponse = await fetch(`https://harbor.akdb.de/api/v2.0/projects/${projectSource}/members?page=${page}&page_size=50`); const csrfToken = membersResponse.headers.get('x-harbor-csrf-token'); members = (await membersResponse.json()); await Promise.all(members.map((entity) => { return fetch(`https://harbor.akdb.de/api/v2.0/projects/${projectTarget}/members`, { method: "POST", headers: { "Content-Type": "application/json", "accept": "application/json", "X-Harbor-CSRF-Token": csrfToken, }, body: JSON.stringify({ "role_id": entity.role_id, "member_user": { "user_id": entity.entity_id, } }) }); })); } while (members.length > 0); })(projectSource, projectTarget);
Edited by Gabriel Cordes -
The JavaScript snippets are now in confluence: https://digitale-verwaltung.atlassian.net/wiki/spaces/OZGDEV/pages/1876426930/Harbor+user+management
Please register or sign in to comment