Implement oidc login
This commit is contained in:
@ -14,6 +14,7 @@ from sqlalchemy.orm import Session
|
||||
from sshecret_admin.services.admin_backend import AdminBackend
|
||||
from sshecret_admin.core.dependencies import BaseDependencies, AdminDependencies
|
||||
from sshecret_admin.auth import PasswordDB, User, decode_token
|
||||
from sshecret_admin.auth.constants import LOCAL_ISSUER
|
||||
|
||||
from .endpoints import auth, clients, secrets
|
||||
|
||||
@ -41,9 +42,17 @@ def create_router(dependencies: BaseDependencies) -> APIRouter:
|
||||
if not token_data:
|
||||
raise credentials_exception
|
||||
|
||||
user = session.scalars(
|
||||
select(User).where(User.username == token_data.username)
|
||||
).first()
|
||||
if token_data.provider == LOCAL_ISSUER:
|
||||
user = session.scalars(
|
||||
select(User).where(User.username == token_data.sub)
|
||||
).first()
|
||||
else:
|
||||
user = session.scalars(
|
||||
select(User)
|
||||
.where(User.oidc_issuer == token_data.provider)
|
||||
.where(User.oidc_sub == token_data.sub)
|
||||
).first()
|
||||
|
||||
if not user:
|
||||
raise credentials_exception
|
||||
return user
|
||||
@ -57,10 +66,12 @@ def create_router(dependencies: BaseDependencies) -> APIRouter:
|
||||
return current_user
|
||||
|
||||
async def get_admin_backend(
|
||||
session: Annotated[Session, Depends(dependencies.get_db_session)]
|
||||
session: Annotated[Session, Depends(dependencies.get_db_session)],
|
||||
):
|
||||
"""Get admin backend API."""
|
||||
password_db = session.scalars(select(PasswordDB).where(PasswordDB.id == 1)).first()
|
||||
password_db = session.scalars(
|
||||
select(PasswordDB).where(PasswordDB.id == 1)
|
||||
).first()
|
||||
if not password_db:
|
||||
raise HTTPException(
|
||||
500, detail="Error: The password manager has not yet been set up."
|
||||
|
||||
Reference in New Issue
Block a user