**Commit Message:**
Enhance app with active pgroup handling and token updates Added active pgroup state management across the app for user-specific settings. Improved token handling with decoding, saving user data, and setting OpenAPI authorization. Updated components, API calls, and forms to support dynamic pgroup selection and user-specific features.
This commit is contained in:
@@ -14,8 +14,13 @@ mock_users_db = {
|
||||
"testuser": {
|
||||
"username": "testuser",
|
||||
"password": "testpass", # In a real scenario, store the hash of the password
|
||||
"pgroups": [20000, 20001, 20003],
|
||||
}
|
||||
"pgroups": ["p20000", "p20001", "p20002", "p20003"],
|
||||
},
|
||||
"testuser2": {
|
||||
"username": "testuser2",
|
||||
"password": "testpass2", # In a real scenario, store the hash of the password
|
||||
"pgroups": ["p20004", "p20005", "p20006"],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -39,30 +44,17 @@ def create_access_token(data: dict) -> str:
|
||||
|
||||
|
||||
async def get_current_user(token: str = Depends(oauth2_scheme)) -> loginData:
|
||||
credentials_exception = HTTPException(
|
||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||
detail="Could not validate credentials",
|
||||
headers={"WWW-Authenticate": "Bearer"},
|
||||
)
|
||||
token_expired_exception = HTTPException(
|
||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||
detail="Token expired",
|
||||
headers={"WWW-Authenticate": "Bearer"},
|
||||
)
|
||||
try:
|
||||
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
|
||||
username: str = payload.get("sub")
|
||||
pgroups = payload.get("pgroups")
|
||||
|
||||
if username is None:
|
||||
raise credentials_exception
|
||||
token_data = loginData(username=username, pgroups=pgroups)
|
||||
print(f"[DEBUG] Username decoded from token: {username}") # Add debug log here
|
||||
return loginData(username=username, pgroups=payload.get("pgroups"))
|
||||
except jwt.ExpiredSignatureError:
|
||||
raise token_expired_exception
|
||||
print("[DEBUG] Token expired")
|
||||
raise HTTPException(status_code=401, detail="Token expired")
|
||||
except jwt.InvalidTokenError:
|
||||
raise credentials_exception
|
||||
|
||||
return token_data
|
||||
print("[DEBUG] Invalid token")
|
||||
raise HTTPException(status_code=401, detail="Invalid token")
|
||||
|
||||
|
||||
@router.post("/token/login", response_model=loginToken)
|
||||
|
||||
Reference in New Issue
Block a user