auth: treat configured super-admin users as admin at login (assign admin role)
This commit is contained in:
parent
61fb783f8f
commit
30787c0d2d
1 changed files with 27 additions and 2 deletions
|
|
@ -977,9 +977,34 @@ def create_app(args):
|
|||
if auth_handler.accounts.get(username) != form_data.password:
|
||||
raise HTTPException(status_code=401, detail="Incorrect credentials")
|
||||
|
||||
# Regular user login
|
||||
# Determine role for this user. If the user is configured as a super-admin
|
||||
# (via LIGHTRAG_SUPER_ADMIN_USERS or config.SUPER_ADMIN_USERS), grant the
|
||||
# `admin` role; otherwise default to `user`.
|
||||
role = "user"
|
||||
try:
|
||||
# Prefer config-level setting when available
|
||||
from lightrag.api.config import SUPER_ADMIN_USERS
|
||||
if SUPER_ADMIN_USERS:
|
||||
super_admins = [u.strip().lower() for u in SUPER_ADMIN_USERS.split(",") if u.strip()]
|
||||
else:
|
||||
super_admins = []
|
||||
except Exception:
|
||||
# Fallback to env var (None = default 'admin', empty string = no super-admins)
|
||||
import os
|
||||
env_super_admins = os.environ.get("LIGHTRAG_SUPER_ADMIN_USERS")
|
||||
if env_super_admins is None:
|
||||
super_admins = ["admin"]
|
||||
elif env_super_admins.strip():
|
||||
super_admins = [u.strip().lower() for u in env_super_admins.split(",") if u.strip()]
|
||||
else:
|
||||
super_admins = []
|
||||
|
||||
if username and username.lower() in super_admins:
|
||||
role = "admin"
|
||||
|
||||
# Regular user login (role may be 'admin' if configured)
|
||||
user_token = auth_handler.create_token(
|
||||
username=username, role="user", metadata={"auth_mode": "enabled"}
|
||||
username=username, role=role, metadata={"auth_mode": "enabled"}
|
||||
)
|
||||
return {
|
||||
"access_token": user_token,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue