-
|
Hi everyone, |
Beta Was this translation helpful? Give feedback.
Answered by
jowilf
Mar 1, 2025
Replies: 1 comment 5 replies
-
|
You can do something like this: class MyAuthProvider(AuthProvider):
async def login(
self,
username: str,
password: str,
remember_me: bool,
request: Request,
response: Response,
) -> Response:
session = request.state.session
user_manager = UserManager(SQLAlchemyUserDatabase(session, YorUserModel))
token_manager = DatabaseStrategy(SQLAlchemyAccessTokenDatabase(session, YourAccessTokenModel), lifetime_seconds=3600)
# validation logic
user = await user_manager.authenticate(OAuth2PasswordRequestForm(username=username, password=password))
# validate user
request.session.update({"session": await token_manager.write_token(user)})
return response
async def is_authenticated(self, request) -> bool:
session: AsyncSession = request.state.session
user_manager = ...
token_manager = ...
token = request.session.get("session", None)
user: User = await token_manager.read_token(token, user_manager)
if user and user.is_active:
request.state.user = user
return True
return False
def get_admin_user(self, request: Request) -> AdminUser | None:
user: User = request.state.user # Retrieve current user
return AdminUser(...)
async def logout(self, request: Request, response: Response) -> Response:
request.session.clear()
return response |
Beta Was this translation helpful? Give feedback.
5 replies
Answer selected by
jowilf
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You can do something like this: