def mutate(_root, info: ResolveInfo, username: str, password: str): request = get_request(info) gmp = get_gmp(info) try: response = gmp.authenticate(username, password) request.session['username'] = username request.session['password'] = password timezone = get_text_from_element(response, 'timezone') # get the timeout from now timeout = request.session.get_expiry_date() # actually store the timeout in the session request.session.set_expiry(timeout) setting_response = gmp.get_setting(USER_SETTING_LOCALE) setting_element = get_subelement(setting_response, 'setting') setting = get_text_from_element(setting_element, 'value') return LoginMutation( ok=True, timezone=timezone, session_timeout=timeout, locale=setting, ) except GvmResponseError as e: raise AuthenticationFailed(e.message) from None
def resolve_is_authenticated(_root, info: ResolveInfo): request = get_request(info) username = request.session.get('username') if username is not None: timeout = request.session.get_expiry_age() return timeout > 0 return False
def mutate(_root, info: ResolveInfo): request = get_request(info) modification = django_timezone.now() expiry = request.session.get_session_cookie_age() session_timeout = modification + timedelta(seconds=expiry) request.session.set_expiry(session_timeout) # return True for current_user to activate resolvers of CurrentUser return RenewSessionMutation(current_user=True)
def resolve_username(_root, info: ResolveInfo): request = get_request(info) return request.session.get('username')
def resolve_session_timeout(_root, info: ResolveInfo): request = get_request(info) username = request.session.get('username') if username is not None: return request.session.get_expiry_date()
def mutate(_root, info: ResolveInfo): request = get_request(info) request.session.flush() return LogoutMutation(ok=True)