forked from open-webui/open-webui
		
	backend support api key
This commit is contained in:
		
							parent
							
								
									ac294a74e7
								
							
						
					
					
						commit
						81e928030f
					
				
					 4 changed files with 100 additions and 8 deletions
				
			
		|  | @ -1,12 +1,8 @@ | |||
| from fastapi import Response, Request | ||||
| from fastapi import Depends, FastAPI, HTTPException, status | ||||
| from datetime import datetime, timedelta | ||||
| from typing import List, Union | ||||
| from fastapi import Request | ||||
| from fastapi import Depends, HTTPException, status | ||||
| 
 | ||||
| from fastapi import APIRouter, status | ||||
| from fastapi import APIRouter | ||||
| from pydantic import BaseModel | ||||
| import time | ||||
| import uuid | ||||
| import re | ||||
| 
 | ||||
| from apps.web.models.auths import ( | ||||
|  | @ -17,6 +13,7 @@ from apps.web.models.auths import ( | |||
|     UserResponse, | ||||
|     SigninResponse, | ||||
|     Auths, | ||||
|     ApiKey | ||||
| ) | ||||
| from apps.web.models.users import Users | ||||
| 
 | ||||
|  | @ -25,6 +22,7 @@ from utils.utils import ( | |||
|     get_current_user, | ||||
|     get_admin_user, | ||||
|     create_token, | ||||
|     create_api_key | ||||
| ) | ||||
| from utils.misc import parse_duration, validate_email_format | ||||
| from utils.webhook import post_webhook | ||||
|  | @ -249,3 +247,40 @@ async def update_token_expires_duration( | |||
|         return request.app.state.JWT_EXPIRES_IN | ||||
|     else: | ||||
|         return request.app.state.JWT_EXPIRES_IN | ||||
| 
 | ||||
| 
 | ||||
| ############################ | ||||
| # API Key | ||||
| ############################ | ||||
| 
 | ||||
| 
 | ||||
| # create api key | ||||
| @router.post("/api_key", response_model=ApiKey) | ||||
| async def create_api_key_(user=Depends(get_current_user)): | ||||
|     api_key = create_api_key() | ||||
|     success = Auths.update_api_key_by_id(user.id, api_key) | ||||
|     if success: | ||||
|         return { | ||||
|             "api_key": api_key, | ||||
|         } | ||||
|     else: | ||||
|         raise HTTPException(500, detail=ERROR_MESSAGES.CREATE_API_KEY_ERROR) | ||||
| 
 | ||||
| 
 | ||||
| # delete api key | ||||
| @router.delete("/api_key", response_model=bool) | ||||
| async def delete_api_key(user=Depends(get_current_user)): | ||||
|     success = Auths.update_api_key_by_id(user.id, None) | ||||
|     return success | ||||
| 
 | ||||
| 
 | ||||
| # get api key | ||||
| @router.get("/api_key", response_model=ApiKey) | ||||
| async def get_api_key(user=Depends(get_current_user)): | ||||
|     api_key = Auths.get_api_key_by_id(user.id, None) | ||||
|     if api_key: | ||||
|         return { | ||||
|             "api_key": api_key, | ||||
|         } | ||||
|     else: | ||||
|         raise HTTPException(404, detail=ERROR_MESSAGES.API_KEY_NOT_FOUND) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 liu.vaayne
						liu.vaayne