поделал сайт, сделал orm-модели, requirements.txt
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
from fastapi import Form, Depends, responses, HTTPException
|
||||
from functions.admin.models import database, user, token
|
||||
import jwt
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
|
||||
async def logins(username: str = Form(...), password: str = Form(...), db=Depends(database.get_db)):
|
||||
# username = "Dmitrium12"
|
||||
response = db.query(user.User).filter(user.User.username == username).first()
|
||||
if not response or not response.check_password(password):
|
||||
raise HTTPException(status_code=400, detail="Неправильное имя пользователя или пароль")
|
||||
access_token_expires = datetime.utcnow() + timedelta(minutes=15)
|
||||
access_token_payload = {"sub": response.username, "exp": access_token_expires}
|
||||
access_token = jwt.encode(access_token_payload, "secret", algorithm="HS256")
|
||||
refresh_token_expires = datetime.utcnow() + timedelta(days=7)
|
||||
refresh_token_payload = {"sub": response.username, "exp": refresh_token_expires}
|
||||
refresh_token = jwt.encode(refresh_token_payload, "secret", algorithm="HS256")
|
||||
db_token = token.Token(access_token=access_token, refresh_token=refresh_token, user=response)
|
||||
db.add(db_token)
|
||||
db.commit()
|
||||
response = responses.RedirectResponse(url="/logs", status_code=303)
|
||||
response.set_cookie(key="access_token", value=access_token, expires=int(access_token_expires.timestamp()))
|
||||
response.set_cookie(key="refresh_token", value=refresh_token,
|
||||
expires=int(refresh_token_expires.timestamp()))
|
||||
return response
|
||||
Reference in New Issue
Block a user