forked from open-webui/open-webui
		
	feat: admin panel added
This commit is contained in:
		
							parent
							
								
									8547b7807d
								
							
						
					
					
						commit
						07d2c9871f
					
				
					 9 changed files with 326 additions and 1087 deletions
				
			
		|  | @ -8,15 +8,6 @@ from pydantic import BaseModel | |||
| import time | ||||
| import uuid | ||||
| 
 | ||||
| from constants import ERROR_MESSAGES | ||||
| from utils.utils import ( | ||||
|     get_password_hash, | ||||
|     bearer_scheme, | ||||
|     create_token, | ||||
| ) | ||||
| 
 | ||||
| from utils.misc import get_gravatar_url | ||||
| 
 | ||||
| from apps.web.models.auths import ( | ||||
|     SigninForm, | ||||
|     SignupForm, | ||||
|  | @ -25,13 +16,19 @@ from apps.web.models.auths import ( | |||
|     Auths, | ||||
| ) | ||||
| from apps.web.models.users import Users | ||||
| import config | ||||
| 
 | ||||
| 
 | ||||
| from utils.utils import ( | ||||
|     get_password_hash, | ||||
|     bearer_scheme, | ||||
|     create_token, | ||||
| ) | ||||
| from utils.misc import get_gravatar_url | ||||
| from constants import ERROR_MESSAGES | ||||
| 
 | ||||
| 
 | ||||
| router = APIRouter() | ||||
| 
 | ||||
| DB = config.DB | ||||
| 
 | ||||
| 
 | ||||
| ############################ | ||||
| # GetSessionUser | ||||
| ############################ | ||||
|  |  | |||
							
								
								
									
										75
									
								
								backend/apps/web/routers/users.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								backend/apps/web/routers/users.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | |||
| from fastapi import Response | ||||
| from fastapi import Depends, FastAPI, HTTPException, status | ||||
| from datetime import datetime, timedelta | ||||
| from typing import List, Union, Optional | ||||
| 
 | ||||
| from fastapi import APIRouter | ||||
| from pydantic import BaseModel | ||||
| import time | ||||
| import uuid | ||||
| 
 | ||||
| from apps.web.models.users import UserModel, UserRoleUpdateForm, Users | ||||
| 
 | ||||
| from utils.utils import ( | ||||
|     get_password_hash, | ||||
|     bearer_scheme, | ||||
|     create_token, | ||||
| ) | ||||
| from constants import ERROR_MESSAGES | ||||
| 
 | ||||
| router = APIRouter() | ||||
| 
 | ||||
| ############################ | ||||
| # GetUsers | ||||
| ############################ | ||||
| 
 | ||||
| 
 | ||||
| @router.get("/", response_model=List[UserModel]) | ||||
| async def get_users(skip: int = 0, limit: int = 50, cred=Depends(bearer_scheme)): | ||||
|     token = cred.credentials | ||||
|     user = Users.get_user_by_token(token) | ||||
| 
 | ||||
|     if user: | ||||
|         if user.role == "admin": | ||||
|             return Users.get_users(skip, limit) | ||||
|         else: | ||||
|             raise HTTPException( | ||||
|                 status_code=status.HTTP_403_FORBIDDEN, | ||||
|                 detail=ERROR_MESSAGES.ACCESS_PROHIBITED, | ||||
|             ) | ||||
|     else: | ||||
|         raise HTTPException( | ||||
|             status_code=status.HTTP_401_UNAUTHORIZED, | ||||
|             detail=ERROR_MESSAGES.INVALID_TOKEN, | ||||
|         ) | ||||
| 
 | ||||
| 
 | ||||
| ############################ | ||||
| # UpdateUserRole | ||||
| ############################ | ||||
| 
 | ||||
| 
 | ||||
| @router.post("/update/role", response_model=Optional[UserModel]) | ||||
| async def update_user_role(form_data: UserRoleUpdateForm, cred=Depends(bearer_scheme)): | ||||
|     token = cred.credentials | ||||
|     user = Users.get_user_by_token(token) | ||||
| 
 | ||||
|     if user: | ||||
|         if user.role == "admin": | ||||
|             if user.id != form_data.id: | ||||
|                 return Users.update_user_role_by_id(form_data.id, form_data.role) | ||||
|             else: | ||||
|                 raise HTTPException( | ||||
|                     status_code=status.HTTP_403_FORBIDDEN, | ||||
|                     detail=ERROR_MESSAGES.ACTION_PROHIBITED, | ||||
|                 ) | ||||
|         else: | ||||
|             raise HTTPException( | ||||
|                 status_code=status.HTTP_403_FORBIDDEN, | ||||
|                 detail=ERROR_MESSAGES.ACCESS_PROHIBITED, | ||||
|             ) | ||||
|     else: | ||||
|         raise HTTPException( | ||||
|             status_code=status.HTTP_401_UNAUTHORIZED, | ||||
|             detail=ERROR_MESSAGES.INVALID_TOKEN, | ||||
|         ) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek