|
@@ -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)
|