add mailaccount endpoint

This commit is contained in:
2026-05-18 22:01:20 +02:00
parent fb289ab298
commit 7b374b1eeb
4 changed files with 34 additions and 5 deletions
+8 -3
View File
@@ -1,12 +1,16 @@
from datetime import timedelta from datetime import timedelta
from fastapi import APIRouter, Depends, HTTPException, status from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm, OAuth2PasswordBearer, SecurityScopes from fastapi.security import OAuth2PasswordRequestForm
from pydantic import BaseModel from pydantic import BaseModel
from typing import Annotated from typing import Annotated
from src.core.config import settings from src.core.config import settings
from src.core.log_conf import logger from src.core.log_conf import logger
from src.core.security import authenticate_user_by_email, authenticate_user_by_username, create_access_token from src.core.security import (
authenticate_user_by_email,
authenticate_user_by_username,
create_access_token,
)
from src.schema.admin import Token from src.schema.admin import Token
login_router = APIRouter() login_router = APIRouter()
@@ -25,7 +29,7 @@ class LoginRequest(BaseModel):
status_code=status.HTTP_200_OK, status_code=status.HTTP_200_OK,
) )
def login(request: LoginRequest) -> Token: def login(request: LoginRequest) -> Token:
logger.info(f"login with {request.email}") logger.info("login with %s", request.email)
user = authenticate_user_by_email(str(request.email), str(request.password)) user = authenticate_user_by_email(str(request.email), str(request.password))
scopes = ["admin", "read"] scopes = ["admin", "read"]
if not user: if not user:
@@ -41,6 +45,7 @@ def login(request: LoginRequest) -> Token:
) )
return Token(access_token=access_token, token_type="bearer") return Token(access_token=access_token, token_type="bearer")
@login_router.post("/token", tags=["login"], summary="Login for access token") @login_router.post("/token", tags=["login"], summary="Login for access token")
async def login_for_access_token( async def login_for_access_token(
form_data: Annotated[OAuth2PasswordRequestForm, Depends()], form_data: Annotated[OAuth2PasswordRequestForm, Depends()],
@@ -0,0 +1,23 @@
from typing import List
from fastapi import APIRouter
from src.db.models.admin import MailAccount
from src.db.session import SessionDep
from src.schema.admin import MailAccountResponse, to_response
router = APIRouter()
@router.get("/mailaccounts", response_model=List[MailAccountResponse])
def get_all_mailaccounts(db: SessionDep) -> List[MailAccountResponse]:
"""
return all MailAccounts as JSON.
"""
results: List[MailAccountResponse] = []
players = db.query(MailAccount).all()
for player in players:
response = to_response(player)
results.append(response)
return results
+2
View File
@@ -2,6 +2,8 @@ from typing import Optional
from pydantic import BaseModel from pydantic import BaseModel
from src.db.models.admin import MailAccount
class Token(BaseModel): class Token(BaseModel):
access_token: str access_token: str
+1 -2
View File
@@ -1,12 +1,11 @@
from pydantic import BaseModel from pydantic import BaseModel
from src.db.models.admin import Profile
class ProfileResponse(BaseModel): class ProfileResponse(BaseModel):
id: str id: str
user_name: str user_name: str
class ProfileModel(BaseModel): class ProfileModel(BaseModel):
user_name: str user_name: str
first_name: str first_name: str