mirror of
https://github.com/hay-kot/mealie.git
synced 2025-08-22 22:43:34 -07:00
additional token routes
This commit is contained in:
parent
1f16d0cb39
commit
8c5bcb2a4c
1 changed files with 41 additions and 3 deletions
|
@ -6,15 +6,15 @@ from fastapi import APIRouter, Depends
|
||||||
from fastapi.security import OAuth2PasswordRequestForm
|
from fastapi.security import OAuth2PasswordRequestForm
|
||||||
from fastapi_login.exceptions import InvalidCredentialsException
|
from fastapi_login.exceptions import InvalidCredentialsException
|
||||||
from routes.deps import manager, query_user
|
from routes.deps import manager, query_user
|
||||||
|
from schema.snackbar import SnackResponse
|
||||||
from schema.user import UserInDB
|
from schema.user import UserInDB
|
||||||
from sqlalchemy.orm.session import Session
|
from sqlalchemy.orm.session import Session
|
||||||
from schema.snackbar import SnackResponse
|
|
||||||
|
|
||||||
router = APIRouter(prefix="/api/auth", tags=["Auth"])
|
router = APIRouter(prefix="/api/auth", tags=["Auth"])
|
||||||
|
|
||||||
|
|
||||||
@router.post("/token")
|
@router.post("/token")
|
||||||
def token(
|
def get_token(
|
||||||
data: OAuth2PasswordRequestForm = Depends(),
|
data: OAuth2PasswordRequestForm = Depends(),
|
||||||
session: Session = Depends(generate_session),
|
session: Session = Depends(generate_session),
|
||||||
):
|
):
|
||||||
|
@ -30,4 +30,42 @@ def token(
|
||||||
access_token = manager.create_access_token(
|
access_token = manager.create_access_token(
|
||||||
data=dict(sub=email), expires=timedelta(hours=2)
|
data=dict(sub=email), expires=timedelta(hours=2)
|
||||||
)
|
)
|
||||||
return SnackResponse.success("User Successfully Logged In", {"access_token": access_token, "token_type": "bearer"})
|
return SnackResponse.success(
|
||||||
|
"User Successfully Logged In",
|
||||||
|
{"access_token": access_token, "token_type": "bearer"},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/token/long")
|
||||||
|
def get_long_token(
|
||||||
|
data: OAuth2PasswordRequestForm = Depends(),
|
||||||
|
session: Session = Depends(generate_session),
|
||||||
|
):
|
||||||
|
"""Get an Access Token for 1 day"""
|
||||||
|
email = data.username
|
||||||
|
password = data.password
|
||||||
|
|
||||||
|
user: UserInDB = query_user(email, session)
|
||||||
|
if not user:
|
||||||
|
raise InvalidCredentialsException # you can also use your own HTTPException
|
||||||
|
elif not verify_password(password, user.password):
|
||||||
|
raise InvalidCredentialsException
|
||||||
|
|
||||||
|
access_token = manager.create_access_token(
|
||||||
|
data=dict(sub=email), expires=timedelta(days=1)
|
||||||
|
)
|
||||||
|
return SnackResponse.success(
|
||||||
|
"User Successfully Logged In",
|
||||||
|
{"access_token": access_token, "token_type": "bearer"},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/refresh")
|
||||||
|
async def refresh_token(
|
||||||
|
current_user: UserInDB = Depends(manager),
|
||||||
|
):
|
||||||
|
""" Use a valid token to get another token"""
|
||||||
|
access_token = manager.create_access_token(
|
||||||
|
data=dict(sub=current_user.email), expires=timedelta(hours=1)
|
||||||
|
)
|
||||||
|
return {"access_token": access_token, "token_type": "bearer"}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue