Authentik adminusers, groups, Discord source, policies
Jellyfin dashboardlibraries, plugin, scheduled tasks
@@ -155,17 +155,15 @@ $('dockurl').textContent = location.origin + '/dock/'; $('gitssh').textContent =
$('pills').innerHTML = d.groups.map(g => `
${g}`).join('') || '
no groups yet — ask an admin for a role';
const has = g => d.groups.includes(g);
const show = (id, on) => $(id).classList.toggle('hidden', !on);
+ // sections appear only for what this account can actually do (the gates check these same groups)
const isAdmin = has('admins') || has('authentik Admins');
- show('s-streamers', has('streamers') || isAdmin);
- show('s-editors', has('editors') || has('media-admins') || isAdmin);
- show('s-mediaadmins', has('media-admins') || isAdmin);
- show('s-git', has('git-users') || has('git-admins') || isAdmin);
- show('s-bot', has('bot-users') || isAdmin);
+ show('s-streamers', has('streamers'));
+ show('s-editors', has('editors') || has('media-admins'));
+ show('s-mediaadmins', has('media-admins'));
+ show('s-git', has('git-users') || has('git-admins'));
+ show('s-bot', has('bot-users'));
show('s-admins', isAdmin);
- document.querySelectorAll('p.lead[data-group]').forEach(p => {
- const member = has(p.dataset.group) || (p.dataset.alt && has(p.dataset.alt));
- p.innerHTML = member ? p.dataset.yes : p.dataset.no;
- });
+ document.querySelectorAll('p.lead[data-group]').forEach(p => { p.innerHTML = p.dataset.yes; });
} catch (e) { $('who').textContent = 'unknown (' + e.message + ')'; }
})();