Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 

38 рядки
1.1 KiB

  1. from fastapi import APIRouter, Depends
  2. from fastapi.security import OAuth2PasswordRequestForm
  3. from fastapi_login.exceptions import InvalidCredentialsException
  4. # from db import get_session
  5. #from ..core.actions import get_user_by_name
  6. from core.actions import get_user_by_name
  7. from models.auth import Token
  8. from core.security import verify_password, manager
  9. router = APIRouter(
  10. prefix="/auth"
  11. )
  12. @router.post('/login', response_model=Token)
  13. def login(form_data: OAuth2PasswordRequestForm = Depends()) -> Token:
  14. """
  15. Logs in the user provided by form_data.username and form_data.password
  16. """
  17. print (form_data.password)
  18. user = get_user_by_name(form_data.username)
  19. print (user)
  20. if user is None:
  21. raise InvalidCredentialsException
  22. if not verify_password(form_data.password, user.password):
  23. raise InvalidCredentialsException
  24. if user.is_admin:
  25. token = manager.create_access_token(data={'sub': user.username},scopes=["required", "is_admin"])
  26. else:
  27. token = manager.create_access_token(data={'sub': user.username})
  28. return Token(access_token=token, token_type='bearer')