enh: user groups/permissions endpoint

This commit is contained in:
Timothy Jaeryang Baek 2025-03-19 08:47:31 -07:00
parent c69d1c86fe
commit 70550e41fc

View File

@ -2,6 +2,7 @@ import logging
from typing import Optional from typing import Optional
from open_webui.models.auths import Auths from open_webui.models.auths import Auths
from open_webui.models.groups import Groups
from open_webui.models.chats import Chats from open_webui.models.chats import Chats
from open_webui.models.users import ( from open_webui.models.users import (
UserModel, UserModel,
@ -17,7 +18,10 @@ from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS from open_webui.env import SRC_LOG_LEVELS
from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi import APIRouter, Depends, HTTPException, Request, status
from pydantic import BaseModel from pydantic import BaseModel
from open_webui.utils.auth import get_admin_user, get_password_hash, get_verified_user from open_webui.utils.auth import get_admin_user, get_password_hash, get_verified_user
from open_webui.utils.access_control import get_permissions
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MODELS"]) log.setLevel(SRC_LOG_LEVELS["MODELS"])
@ -45,7 +49,7 @@ async def get_users(
@router.get("/groups") @router.get("/groups")
async def get_user_groups(user=Depends(get_verified_user)): async def get_user_groups(user=Depends(get_verified_user)):
return Users.get_user_groups(user.id) return Groups.get_groups_by_member_id(user.id)
############################ ############################
@ -54,8 +58,12 @@ async def get_user_groups(user=Depends(get_verified_user)):
@router.get("/permissions") @router.get("/permissions")
async def get_user_permissisions(user=Depends(get_verified_user)): async def get_user_permissisions(request: Request, user=Depends(get_verified_user)):
return Users.get_user_groups(user.id) user_permissions = get_permissions(
user.id, request.app.state.config.USER_PERMISSIONS
)
return user_permissions
############################ ############################
@ -89,7 +97,7 @@ class UserPermissions(BaseModel):
@router.get("/default/permissions", response_model=UserPermissions) @router.get("/default/permissions", response_model=UserPermissions)
async def get_user_permissions(request: Request, user=Depends(get_admin_user)): async def get_default_user_permissions(request: Request, user=Depends(get_admin_user)):
return { return {
"workspace": WorkspacePermissions( "workspace": WorkspacePermissions(
**request.app.state.config.USER_PERMISSIONS.get("workspace", {}) **request.app.state.config.USER_PERMISSIONS.get("workspace", {})
@ -104,7 +112,7 @@ async def get_user_permissions(request: Request, user=Depends(get_admin_user)):
@router.post("/default/permissions") @router.post("/default/permissions")
async def update_user_permissions( async def update_default_user_permissions(
request: Request, form_data: UserPermissions, user=Depends(get_admin_user) request: Request, form_data: UserPermissions, user=Depends(get_admin_user)
): ):
request.app.state.config.USER_PERMISSIONS = form_data.model_dump() request.app.state.config.USER_PERMISSIONS = form_data.model_dump()