def logout(self, request: IRequest) -> KleinRenderable: """ Endpoint for logging out. """ session = request.getSession() session.expire() # Redirect back to application home return redirect(request, URLs.app)
def logout(self, request: IRequest) -> KleinRenderable: """ Endpoint for logging out. """ session = request.getSession() session.expire() # Redirect back to application home return redirect(request, URLs.app)
def if_authz_failed(self, request: IRequest, tag: Tag) -> KleinRenderable: """ Render conditionally if the user failed to authorize. """ if self.failed: # authn failed, not authz return "" session = request.getSession() user = getattr(session, "user", None) if user is None: return "" # We have a user but still got sent to login page return tag
def if_authz_failed(self, request: IRequest, tag: Tag) -> KleinRenderable: """ Render conditionally if the user failed to authorize. """ if self.failed: # authn failed, not authz return "" session = request.getSession() user = getattr(session, "user", None) if user is None: return "" # We have a user but still got sent to login page return tag
def authenticateRequest( self, request: IRequest, optional: bool = False ) -> None: """ Authenticate a request. @param request: The request to authenticate. @param optional: If true, do not raise NotAuthenticatedError() if no user is associated with the request. """ session = request.getSession() request.user = getattr(session, "user", None) if request.user is None and not optional: self._log.debug("Authentication failed") raise NotAuthenticatedError("No user logged in")
def authenticateRequest( self, request: IRequest, optional: bool = False ) -> None: """ Authenticate a request. @param request: The request to authenticate. @param optional: If true, do not raise NotAuthenticatedError() if no user is associated with the request. """ session = request.getSession() request.user = getattr(session, "user", None) if request.user is None and not optional: self._log.debug("Authentication failed") raise NotAuthenticatedError("No user logged in")
async def loginSubmit(self, request: IRequest) -> KleinRenderable: """ Endpoint for a login form submission. """ username = queryValue(request, "username") password = queryValue(request, "password", default="") if username is None: user = None else: user = await self.config.authProvider.lookupUserName(username) if user is None: self._log.debug( "Login failed: no such user: {username}", username=username ) else: if password is None: return invalidQueryResponse(request, "password") authenticated = await self.config.authProvider.verifyCredentials( user, password ) if authenticated: session = request.getSession() session.user = user url = queryValue(request, "o") if url is None: location = URLs.app # Default to application home else: location = URL.fromText(url) return redirect(request, location) else: self._log.debug( "Login failed: incorrect credentials for user: {user}", user=user ) return self.login(request, failed=True)
async def loginSubmit(self, request: IRequest) -> KleinRenderable: """ Endpoint for a login form submission. """ username = queryValue(request, "username") password = queryValue(request, "password", default="") if username is None: user = None else: user = await self.config.authProvider.lookupUserName(username) if user is None: self._log.debug( "Login failed: no such user: {username}", username=username ) else: if password is None: return invalidQueryResponse(request, "password") authenticated = await self.config.authProvider.verifyCredentials( user, password ) if authenticated: session = request.getSession() session.user = user url = queryValue(request, "o") if url is None: location = URLs.app # Default to application home else: location = URL.fromText(url) return redirect(request, location) else: self._log.debug( "Login failed: incorrect credentials for user: {user}", user=user ) return self.login(request, failed=True)