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