refactor: groups simplified to users + admins only

This commit is contained in:
Claus Lohmar 2026-07-11 21:39:45 +01:00
parent 1849c65c68
commit 03ae910b3f
6 changed files with 21 additions and 83 deletions

View file

@ -1,5 +1,14 @@
# Changelog
## 0.1.0.0037 — 2026-07-11
### Changed
- Simplified groups model: per-app groups (`drive`, `office`, `chat`, etc.) replaced with `users` + `admins` only
- `config/authelia/configuration.yml` — access_control rules reduced from 12 rules to 4
- `config/authelia/users_database.yml` — master user groups simplified to `admins`, `users`
- `config/nextworkspace/apps.yaml` — all user-facing apps use `groups: ["users"]`
- Admin panel user creation form — 9 checkboxes replaced with 2 (User + Admin)
## 0.1.0.0036 — 2026-07-11
### Fixed

View file

@ -1 +1 @@
0.1.0.0036
0.1.0.0037

View file

@ -33,64 +33,7 @@ access_control:
- "group:admins"
policy: one_factor
# App paths — group-restricted
- domain: "app.{DOMAIN}"
resources:
- "^/drive(/.*)?$"
subject:
- "group:admins"
- "group:drive"
policy: one_factor
- domain: "app.{DOMAIN}"
resources:
- "^/office(/.*)?$"
subject:
- "group:admins"
- "group:office"
policy: one_factor
- domain: "app.{DOMAIN}"
resources:
- "^/enterprise(/.*)?$"
subject:
- "group:admins"
- "group:erp"
policy: one_factor
- domain: "app.{DOMAIN}"
resources:
- "^/chat(/.*)?$"
subject:
- "group:admins"
- "group:chat"
policy: one_factor
- domain: "app.{DOMAIN}"
resources:
- "^/meet(/.*)?$"
subject:
- "group:admins"
- "group:meet"
policy: one_factor
- domain: "app.{DOMAIN}"
resources:
- "^/connect(/.*)?$"
subject:
- "group:admins"
- "group:mail"
policy: one_factor
- domain: "app.{DOMAIN}"
resources:
- "^/aida(/.*)?$"
subject:
- "group:admins"
- "group:ai"
policy: one_factor
# Home/launcher — any authenticated user
# Everything else — any authenticated user
- domain: "app.{DOMAIN}"
policy: one_factor

View file

@ -7,10 +7,3 @@ users:
groups:
- admins
- users
- drive
- office
- erp
- chat
- meet
- mail
- ai

View file

@ -9,43 +9,43 @@ apps:
path: "/drive"
upstream: "http://127.0.0.1:9100"
icon: "cloud"
groups: ["drive", "admins"]
groups: ["users"]
- name: "Euro Office"
subtitle: "Collaborative Suite"
path: "/office"
upstream: "http://127.0.0.1:9200"
icon: "office"
groups: ["office", "admins"]
groups: ["users"]
- name: "ERPNext"
subtitle: "Enterprise ERP"
path: "/enterprise"
upstream: "http://127.0.0.1:9300"
icon: "erp"
groups: ["erp", "admins"]
groups: ["users"]
- name: "Matrix Chat"
subtitle: "Team Communication"
path: "/chat"
upstream: "http://127.0.0.1:9400"
icon: "chat"
groups: ["chat", "admins"]
groups: ["users"]
- name: "Jitsi"
subtitle: "Video Conferencing"
path: "/meet"
upstream: "http://127.0.0.1:9500"
icon: "meet"
groups: ["meet", "admins"]
groups: ["users"]
- name: "Webmail"
subtitle: "Email Client"
path: "/connect"
upstream: "http://127.0.0.1:9600"
icon: "mail"
groups: ["mail", "admins"]
groups: ["users"]
- name: "AI Chat"
subtitle: "Open WebUI"
path: "/aida"
upstream: "http://127.0.0.1:9700"
icon: "ai"
groups: ["ai", "admins"]
groups: ["users"]
- name: "Portainer"
subtitle: "Container Management"
path: "/admin"

13
main.go
View file

@ -1445,16 +1445,9 @@ const adminHTML = `<!DOCTYPE html>
<div class="field"><label>Display Name</label><input type="text" name="display_name" required></div>
<div class="field"><label>Email</label><input type="email" name="email" required></div>
<div class="field"><label>Groups</label>
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:0.4rem;">
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="users" checked> Users</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="drive"> Drive</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="office"> Office</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="erp"> ERP</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="chat"> Chat</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="meet"> Meet</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="mail"> Mail</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="ai"> AI</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="admins"> Admin</label>
<div class="checkbox-group">
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="users" checked> User (access to all apps)</label>
<label style="font-size:0.9rem;display:flex;align-items:center;gap:0.3rem;"><input type="checkbox" name="groups" value="admins"> Admin (access to config panel)</label>
</div>
</div>
<div style="display:flex;gap:0.75rem;margin-top:1.5rem;">