Add API_KEY checking

This commit is contained in:
2021-11-14 10:58:52 +03:00
parent 6a7966ed92
commit 122eab7394
11 changed files with 37 additions and 6 deletions

View File

@@ -0,0 +1,9 @@
from fastapi import Security, HTTPException, status
from core.auth import default_security
from core.config import env_config
async def check_token(api_key: str = Security(default_security)):
if api_key != env_config.API_KEY:
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Wrong api key!")

View File

@@ -8,11 +8,13 @@ from app.models import Author as AuthorDB, AuthorAnnotation as AuthorAnnotationD
from app.serializers.author import Author, CreateAuthor, UpdateAuthor, AuthorBook, TranslatedBook
from app.serializers.author_annotation import AuthorAnnotation
from app.services.author import AuthorTGRMSearchService
from app.depends import check_token
author_router = APIRouter(
prefix="/api/v1/authors",
tags=["author"],
dependencies=[Depends(check_token)],
)
@@ -23,7 +25,7 @@ async def get_authors():
)
@author_router.post("/", response_model=Author)
@author_router.post("/", response_model=Author, dependencies=[Depends(Params)])
async def create_author(data: CreateAuthor):
author = await AuthorDB.objects.create(
**data.dict()

View File

@@ -5,11 +5,13 @@ from fastapi_pagination.ext.ormar import paginate
from app.models import AuthorAnnotation as AuthorAnnotationDB
from app.serializers.author_annotation import AuthorAnnotation, CreateAuthorAnnotation, UpdateAuthorAnnotation
from app.depends import check_token
author_annotation_router = APIRouter(
prefix="/api/v1/author_annotations",
tags=["author_annotation"]
tags=["author_annotation"],
dependencies=[Depends(check_token)],
)

View File

@@ -9,11 +9,13 @@ from app.utils.pagination import CustomPage
from app.models import Book as BookDB, Author as AuthorDB, AuthorAnnotation as AuthorAnnotationDB
from app.serializers.book import Book, CreateBook, UpdateBook, CreateRemoteBook
from app.services.book import BookTGRMSearchService, BookCreator
from app.depends import check_token
book_router = APIRouter(
prefix="/api/v1/books",
tags=["book"],
dependencies=[Depends(check_token)],
)

View File

@@ -5,11 +5,13 @@ from fastapi_pagination.ext.ormar import paginate
from app.models import BookAnnotation as BookAnnotationDB
from app.serializers.book_annotation import BookAnnotation, CreateBookAnnotation, UpdateBookAnnotation
from app.depends import check_token
book_annotation_router = APIRouter(
prefix="/api/v1/book_annotations",
tags=["book_annotation"]
tags=["book_annotation"],
dependencies=[Depends(check_token)]
)

View File

@@ -7,11 +7,13 @@ from app.utils.pagination import CustomPage
from app.models import Sequence as SequenceDB
from app.serializers.sequence import Sequence, CreateSequence
from app.services.sequence import SequenceTGRMSearchService
from app.depends import check_token
sequence_router = APIRouter(
prefix="/api/v1/sequences",
tags=["sequence"]
tags=["sequence"],
dependencies=[Depends(check_token)],
)

View File

@@ -9,11 +9,13 @@ from app.utils.pagination import CustomPage
from app.models import SequenceInfo as SequenceInfoDB
from app.serializers.sequence_info import SequenceInfo, CreateSequenceInfo, CreateRemoteSequenceInfo
from app.services.sequence_info import SequenceInfoCreator
from app.depends import check_token
sequence_info_router = APIRouter(
prefix="/api/v1/sequence_info",
tags=["sequence_info"]
tags=["sequence_info"],
dependencies=[Depends(check_token)],
)

View File

@@ -5,11 +5,13 @@ from fastapi_pagination.ext.ormar import paginate
from app.models import Source as SourceDB
from app.serializers.source import Source, CreateSource
from app.depends import check_token
source_router = APIRouter(
prefix="/api/v1/sources",
tags=["source"],
dependencies=[Depends(check_token)],
)

View File

@@ -9,11 +9,13 @@ from app.utils.pagination import CustomPage
from app.models import Translation as TranslationDB
from app.serializers.translation import Translation, CreateTranslation, CreateRemoteTranslation
from app.services.translation import TranslationCreator
from app.depends import check_token
translation_router = APIRouter(
prefix="/api/v1/translation",
tags=["translation"]
tags=["translation"],
dependencies=[Depends(check_token)],
)

View File

@@ -0,0 +1,4 @@
from fastapi.security import APIKeyHeader
default_security = APIKeyHeader(name="Authorization")

View File

@@ -2,6 +2,8 @@ from pydantic import BaseSettings
class EnvConfig(BaseSettings):
API_KEY: str
POSTGRES_USER: str
POSTGRES_PASSWORD: str
POSTGRES_HOST: str