refac
This commit is contained in:
@@ -22,6 +22,7 @@ from open_webui.models.users import (
|
|||||||
UserListResponse,
|
UserListResponse,
|
||||||
UserModelResponse,
|
UserModelResponse,
|
||||||
Users,
|
Users,
|
||||||
|
UserModel,
|
||||||
UserNameResponse,
|
UserNameResponse,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -80,13 +81,22 @@ router = APIRouter()
|
|||||||
############################
|
############################
|
||||||
|
|
||||||
|
|
||||||
def check_channels_access(request: Request):
|
def check_channels_access(request: Request, user=Optional[UserModel] = None):
|
||||||
"""Dependency to ensure channels are globally enabled."""
|
"""Dependency to ensure channels are globally enabled."""
|
||||||
if not request.app.state.config.ENABLE_CHANNELS:
|
if not request.app.state.config.ENABLE_CHANNELS:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_403_FORBIDDEN,
|
status_code=status.HTTP_403_FORBIDDEN,
|
||||||
detail="Channels are not enabled",
|
detail="Channels are not enabled",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if user:
|
||||||
|
if user.role != "admin" and not has_permission(
|
||||||
|
user.id, "features.channels", request.app.state.config.USER_PERMISSIONS
|
||||||
|
):
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||||
|
detail=ERROR_MESSAGES.UNAUTHORIZED,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
############################
|
############################
|
||||||
@@ -355,7 +365,7 @@ async def get_channel_by_id(
|
|||||||
user=Depends(get_verified_user),
|
user=Depends(get_verified_user),
|
||||||
db: Session = Depends(get_session),
|
db: Session = Depends(get_session),
|
||||||
):
|
):
|
||||||
check_channels_access(request)
|
check_channels_access(request, user)
|
||||||
channel = Channels.get_channel_by_id(id, db=db)
|
channel = Channels.get_channel_by_id(id, db=db)
|
||||||
if not channel:
|
if not channel:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
@@ -467,7 +477,7 @@ async def get_channel_members_by_id(
|
|||||||
user=Depends(get_verified_user),
|
user=Depends(get_verified_user),
|
||||||
db: Session = Depends(get_session),
|
db: Session = Depends(get_session),
|
||||||
):
|
):
|
||||||
check_channels_access(request)
|
check_channels_access(request, user)
|
||||||
|
|
||||||
channel = Channels.get_channel_by_id(id, db=db)
|
channel = Channels.get_channel_by_id(id, db=db)
|
||||||
if not channel:
|
if not channel:
|
||||||
@@ -788,7 +798,7 @@ async def get_channel_messages(
|
|||||||
user=Depends(get_verified_user),
|
user=Depends(get_verified_user),
|
||||||
db: Session = Depends(get_session),
|
db: Session = Depends(get_session),
|
||||||
):
|
):
|
||||||
check_channels_access(request)
|
check_channels_access(request, user)
|
||||||
channel = Channels.get_channel_by_id(id, db=db)
|
channel = Channels.get_channel_by_id(id, db=db)
|
||||||
if not channel:
|
if not channel:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
|
|||||||
Reference in New Issue
Block a user