def wrapper(cls, root, info, password, **kwargs): context = info.context context._jwt_token_auth = True username = kwargs.get(get_user_model().USERNAME_FIELD) # user = jwt_settings.JWT_GET_USER_BY_NATURAL_KEY_HANDLER(username) # if user is None: # raise exceptions.JSONWebTokenError( # _('Please enter valid credentials'), # ) user = authenticate( request=context, username=username, password=password, ) if user is None: raise exceptions.JSONWebTokenError( _('Please enter valid credentials'), ) if hasattr(context, 'user'): context.user = user result = f(cls, root, info, **kwargs) signals.token_issued.send(sender=cls, request=context, user=user) return maybe_thenable((context, user, result), on_token_auth_resolve)
def refresh(cls, root, info, token, **kwargs): def on_resolve(values): payload, token = values payload.token = token return payload context = info.context payload = get_payload(token, context) user = get_user_by_payload(payload) orig_iat = payload.get('origIat') if not orig_iat: raise exceptions.JSONWebTokenError(_('origIat field is required')) if jwt_settings.JWT_REFRESH_EXPIRED_HANDLER(orig_iat, context): raise exceptions.JSONWebTokenError(_('Refresh has expired')) payload = jwt_settings.JWT_PAYLOAD_HANDLER(user, context) payload['origIat'] = orig_iat refresh_expires_in = orig_iat +\ jwt_settings.JWT_REFRESH_EXPIRATION_DELTA.total_seconds() token = jwt_settings.JWT_ENCODE_HANDLER(payload, context) signals.token_refreshed.send(sender=cls, request=context, user=user) result = cls(payload=payload, refresh_expires_in=refresh_expires_in) return maybe_thenable((result, token), on_resolve)
def connection_resolver(cls, resolver, connection_type, root, info, **args): resolved = resolver(root, info, **args) if isinstance(connection_type, NonNull): connection_type = connection_type.of_type on_resolve = partial(cls.resolve_connection, connection_type, args) return maybe_thenable(resolved, on_resolve)
def wrapper(cls, *args, **kwargs): def on_resolve(payload): payload.refresh_expires_in = ( timegm(datetime.utcnow().utctimetuple()) + jwt_settings.JWT_REFRESH_EXPIRATION_DELTA.total_seconds()) return payload result = f(cls, *args, **kwargs) return maybe_thenable(result, on_resolve)
def connection_resolver(cls, resolver, connection_type, root, info, **args): resolved = resolver(root, info, **args) if isinstance(connection_type, NonNull): connection_type = connection_type.of_type if not resolved and getattr(connection_type, 'resolve_objects', None): resolved = connection_type.resolve_objects(root, info, **args) on_resolve = partial(cls.resolve_connection, connection_type, args) return maybe_thenable(resolved, on_resolve)
def mutate(cls, root, info, input): def on_resolve(payload): try: payload.client_mutation_id = input.get("client_mutation_id") except Exception: raise Exception( ("Cannot set client_mutation_id in the payload object {}").format( repr(payload) ) ) return payload result = cls.mutate_and_get_payload(root, info, **input) return maybe_thenable(result, on_resolve)
def mutate(cls, root, info, input): def on_resolve(payload): try: payload.client_mutation_id = input.get("client_mutation_id") payload.hospital_code = input.get("coded_value") payload.generated_coded_value = cls.callSP( cls, input.get("coded_value")) except Exception as ex: raise Exception( (str(ex) + "Cannot set client_mutation_id in the payload object {}" ).format(repr(payload))) return payload from graphene.utils.thenables import maybe_thenable result = cls.mutate_and_get_payload(root, info, **input) return maybe_thenable(result, on_resolve)
def wrapper(cls, root, info, password, **kwargs): context = info.context context._jwt_token_auth = True username = kwargs.get(get_user_model().USERNAME_FIELD) user = authenticate( request=context, username=username, password=password, ) if user is None: raise exceptions.JSONWebTokenError( _("Please enter valid credentials"), ) if hasattr(context, "user"): context.user = user result = f(cls, root, info, **kwargs) signals.token_issued.send(sender=cls, request=context, user=user) return maybe_thenable((context, user, result), on_token_auth_resolve)
def refresh(cls, root, info, refresh_token, **kwargs): def on_resolve(values): payload, token, refresh_token = values payload.token = token payload.refresh_token = refresh_token return payload context = info.context old_refresh_token = get_refresh_token(refresh_token, context) if old_refresh_token.is_expired(context): raise exceptions.JSONWebTokenError(_("Refresh token is expired")) payload = jwt_settings.JWT_PAYLOAD_HANDLER( old_refresh_token.user, context, ) token = jwt_settings.JWT_ENCODE_HANDLER(payload, context) if getattr(context, "jwt_cookie", False): context.jwt_refresh_token = create_refresh_token( old_refresh_token.user, old_refresh_token, ) new_refresh_token = context.jwt_refresh_token.get_token() else: new_refresh_token = refresh_token_lazy( old_refresh_token.user, old_refresh_token, ) signals.refresh_token_rotated.send( sender=cls, request=context, refresh_token=old_refresh_token, refresh_token_issued=new_refresh_token, ) result = cls(payload=payload) return maybe_thenable((result, token, new_refresh_token), on_resolve)
def connection_resolver(cls, resolver, connection_type, root, info, **args): resolved = resolver(root, info, **args) on_resolve = partial(cls.resolve_connection, connection_type, root, args) return maybe_thenable(resolved, on_resolve)