from fastapi import APIRouter, Depends from fastapi.security import OAuth2PasswordRequestForm from fastapi_login.exceptions import InvalidCredentialsException # from db import get_session #from ..core.actions import get_user_by_name from core.actions import get_user_by_name from models.auth import Token from core.security import verify_password, manager router = APIRouter( prefix="/auth" ) @router.post('/login', response_model=Token) def login(form_data: OAuth2PasswordRequestForm = Depends()) -> Token: """ Logs in the user provided by form_data.username and form_data.password """ print (form_data.password) user = get_user_by_name(form_data.username) print (user) if user is None: raise InvalidCredentialsException if not verify_password(form_data.password, user.password): raise InvalidCredentialsException if user.is_admin: token = manager.create_access_token(data={'sub': user.username},scopes=["required", "is_admin"]) else: token = manager.create_access_token(data={'sub': user.username}) return Token(access_token=token, token_type='bearer')