Compare commits

...

16 Commits

Author SHA1 Message Date
03036b2d3b Merge pull request 'fix skip' (#60) from feature/pagination into master
Reviewed-on: #60
2025-03-16 19:52:03 +00:00
e07a74384f fix skip 2025-03-14 23:05:55 +01:00
32b6fdacb6 Merge pull request 'fix form' (#59) from feature/persist-token into master
Reviewed-on: #59
2025-03-06 22:32:19 +00:00
2baaf3c126 fix form 2025-03-06 23:31:37 +01:00
86a3d05f7e Merge pull request 'fix form remember_me' (#58) from feature/persist-token into master
Reviewed-on: #58
2025-03-06 22:23:42 +00:00
9fac430654 fix form remember_me 2025-03-06 23:22:38 +01:00
f56eb9db92 Merge pull request 'fix if' (#57) from feature/persist-token into master
Reviewed-on: #57
2025-03-06 22:13:04 +00:00
15062c029f fix if 2025-03-06 23:12:28 +01:00
6c51c7469b Merge pull request 'add persist token' (#56) from feature/persist-token into master
Reviewed-on: #56
2025-03-06 21:46:00 +00:00
952b0211ba add persist token 2025-03-06 22:42:26 +01:00
ece35338da Merge pull request 'rollback' (#55) from feature/oauth into master
Reviewed-on: #55
2025-03-06 21:01:56 +00:00
221bd1e244 rollback 2025-03-06 22:00:52 +01:00
de60dee3eb Merge pull request 'feature/oauth' (#54) from feature/oauth into master
Reviewed-on: #54
2025-03-01 20:49:13 +00:00
4669774cc3 add env facebook 2025-03-01 21:45:10 +01:00
a094b56d44 add google client id 2025-03-01 14:02:11 +01:00
3e514acb19 add oauth wip 2025-02-24 20:45:52 +01:00
3 changed files with 18 additions and 6 deletions

View File

@ -12,11 +12,20 @@ from ..dependencies import database, cookie
SECRET_KEY = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
oauth2_scheme = cookie.OAuth2PasswordBearerWithCookie(tokenUrl="token")
def create_access_token(data: dict, expires_delta: timedelta | None = None):
to_encode = data.copy()
expire = datetime.utcnow() + (expires_delta or timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES))
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)

View File

@ -84,8 +84,7 @@ async def read_events(
status_code=status.HTTP_400_BAD_REQUEST,
detail="`skip` should be >= 0 and `limit` should be > 0 and greater than `skip`.",
)
limit = limit + skip
skip = limit * skip
# Initialize filters
filters = []
@ -166,7 +165,7 @@ async def search_events(
status_code=status.HTTP_400_BAD_REQUEST,
detail="`skip` should be >= 0 and `limit` should be > 0 and greater than `skip`.",
)
limit = limit + skip
skip = limit * skip
# Initialize filters
filters = [{"status": {"$eq": status}}]

View File

@ -1,7 +1,7 @@
from datetime import datetime, timedelta
from typing import Annotated
from fastapi import Depends, FastAPI, HTTPException, status, APIRouter
from fastapi import Depends, FastAPI, HTTPException, status, APIRouter, Form
from fastapi.responses import JSONResponse
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from ..dependencies import users_token, permissions_checker
@ -13,15 +13,19 @@ ACCESS_TOKEN_EXPIRE_MINUTES = 30
@router.post("/token", tags=["token"])
async def login_for_access_token(
form_data: Annotated[OAuth2PasswordRequestForm, Depends()]):
form_data: Annotated[OAuth2PasswordRequestForm, Depends()],
remember_me: bool = Form(False)):
user = users_token.authenticate_user(form_data.username, form_data.password)
expires_access_token_time = ACCESS_TOKEN_EXPIRE_MINUTES
if remember_me:
expires_access_token_time=120
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
access_token_expires = timedelta(minutes=expires_access_token_time)
access_token = users_token.create_access_token(
data={"sub": user.username}, expires_delta=access_token_expires
)