您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
what the name says
- // ==UserScript==
- // @name Show overlapping groups in Confluence's space permisisons
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description what the name says
- // @author Dennis Stengele
- // @match https://*.atlassian.net/wiki/spaces/spacepermissions.action*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=atlassian.net
- // @grant none
- // @run-at document-end
- // @license MIT
- // ==/UserScript==
- /* jshint esversion: 8 */
- (async function () {
- 'use strict';
- const baseUrl = location.origin;
- const permissionGroups = Array.from(document.querySelectorAll("table#gPermissionsTable tr.space-permission-row > th")).map((node) => node.innerText);
- const userRows = Array.from(document.querySelectorAll("table#uPermissionsTable tr.space-permission-row"));
- for (const userRow of userRows) {
- const userKey = userRow.dataset.key;
- const userGroups = await fetch(`${baseUrl}/wiki/rest/api/user/memberof?${new URLSearchParams({ accountId: userKey })}`).then(
- response => { return response.json(); }
- ).then(
- json => { return json.results.map((groupObject) => { return groupObject.name; }); }
- );
- const intersect = permissionGroups.filter((x) => { return userGroups.includes(x); });
- if (0 == intersect.length) { continue; }
- const usernameCell = userRow.querySelector("th");
- const userNameValue = usernameCell.innerText;
- console.log(`User ${userNameValue} (Key: ${userKey}) has groups [${userGroups.join(", ")}], intersected to [${intersect.join(", ")}]`);
- const newUsernameValue = `${userNameValue} (${intersect.join(", ")})`;
- usernameCell.innerText = newUsernameValue;
- }
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址