ed5679948b4ff53a7a2586589160c783c26439bb
refactor(auth): use group-only admin access and remove admin api-key flow from frontend/admin routes
refactor(auth): use group-only admin access and remove admin api-key flow from frontend/admin routes
memberapi.ose.tw backend
Quick start
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -e .
cp .env.example .env
./scripts/start_dev.sh
Required DB setup
- Initialize API client whitelist table with
docs/API_CLIENTS_SQL.sql. - Initialize core tables with
backend/scripts/init_schema.sql. - Generate
api_key_hashand updateapi_clientsrecords, e.g.:
python scripts/generate_api_key_hash.py 'YOUR_PLAIN_KEY'
Authentik JWT setup
- Configure at least one of:
AUTHENTIK_JWKS_URLAUTHENTIK_ISSUER(the service infers<issuer>/jwks/)
- Optional:
AUTHENTIK_AUDIENCE(enables audience claim validation)AUTHENTIK_CLIENT_ID(used by/auth/login, fallback toAUTHENTIK_AUDIENCE)AUTHENTIK_CLIENT_SECRET(required if your access/id token uses HS256 signing)AUTHENTIK_TOKEN_ENDPOINT(default:<AUTHENTIK_BASE_URL>/application/o/token/)AUTHENTIK_USERINFO_ENDPOINT(optional, default inferred from issuer/base URL; used to fill missing email/name claims)
Authentik Admin API setup
- Required for
/internal/authentik/users/ensure:AUTHENTIK_BASE_URLAUTHENTIK_ADMIN_TOKENAUTHENTIK_VERIFY_TLS
Main APIs
GET /healthzGET /auth/oidc/urlPOST /auth/oidc/exchangeGET /me(Bearer token required)GET /me/permissions/snapshot(Bearer token required)POST /internal/users/upsert-by-subGET /internal/permissions/{authentik_sub}/snapshotPOST /internal/authentik/users/ensurePOST /admin/permissions/grantPOST /admin/permissions/revokeGET|POST /admin/systemsGET|POST /admin/modulesGET|POST /admin/companiesGET|POST /admin/sitesGET /admin/membersGET|POST /admin/permission-groupsPOST|DELETE /admin/permission-groups/{group_key}/members/{authentik_sub}POST /admin/permission-groups/{group_key}/permissions/grant|revokeGET /internal/systemsGET /internal/modulesGET /internal/companiesGET /internal/sitesGET /internal/members
Description
Languages
Python
96.5%
PLpgSQL
3%
Dockerfile
0.3%
Shell
0.2%