PedroBern / django-graphql-auth

Django registration and authentication with GraphQL.
https://django-graphql-auth.readthedocs.io/en/latest/
MIT License
326 stars 105 forks source link

Mutation register errors "Please, enter valid credentials" #126

Open louistwiice opened 2 years ago

louistwiice commented 2 years ago

Prerequisites

For more information, see the CONTRIBUTING guide.

Description

Hi,

I am using django-graphql-auth. I have followed quickstart guide on https://django-graphql-auth.readthedocs.io/en/latest/quickstart/. I have only imlemented the registration of a user. But it seems like I can't create one. I receive a message "Please, enter valid credentials"

Steps to Reproduce

If we need to reproduce and you don't provide steps for it, it will be closed. Alternatively, you can link a repo with the code to run your issue.

settings.py file

` INSTALLED_APPS = [

'graphene_django',
'graphql_auth',
'graphql_jwt.refresh_token.apps.RefreshTokenConfig',
'django_filters',

'core',
'user_management',

] AUTH_USER_MODEL = "core.Users" GRAPHENE = { "SCHEMA": "config.schema.schema", 'MIDDLEWARE': [ 'graphql_jwt.middleware.JSONWebTokenMiddleware', ], } AUTHENTICATION_BACKENDS = [ "graphql_jwt.backends.JSONWebTokenBackend", "graphql_auth.backends.GraphQLAuthBackend", ] GRAPHQL_JWT = { "JWT_VERIFY_EXPIRATION": True, 'JWT_LONG_RUNNING_REFRESH_TOKEN': True, "JWT_ALLOW_ANY_CLASSES": [ "graphql_auth.mutations.Register", ], } `

my usermanagement apps

mutations file ` import graphene from graphql_auth import mutations

class AuthMutation(graphene.ObjectType): register = mutations.Register.Field()

class Mutation(AuthMutation, graphene.ObjectType): pass `

queries file ` from graphql_auth.schema import UserQuery, MeQuery from .schema import * import graphene

class Query(UserQuery, MeQuery, graphene.ObjectType): pass `

schema file `

Nothing in

`

In my config project

my schema file `from core.models import * from graphene_django import DjangoObjectType import graphene from usermanagement.queries import Query as auth_query from usermanagement.mutations import Mutation as auth_mutation

class Query(auth_query, graphene.ObjectType): pass

class Mutation(auth_mutation,graphene.ObjectType): pass

schema = graphene.Schema(query= Query, mutation=Mutation)`

Expected behavior

The query mutation { register( email: "new_user@email.com", username: "new_user", password1: "supersecretpassword", password2: "supersecretpassword", ) { success, errors, token, refreshToken } } The Response { "data": { "register": { "success": true, "errors": null, "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6Im5ld191c2VyMjIiLCJleHAiOjE1ODAxMzUyMTQsIm9yaWdJYXQiOjE1ODAxMzQ5MTR9.lzMjYo_1LO-TMDotySi1VHoC5yLyKr5PWC2l-hdzQ20", "refreshToken": "8db1c55b8dbc1f4a24eabe6f5d44dc091a8ca0f7" } } }

Actual behavior

The query

mutation { register( email: "new_user@email.com", username: "new_user", password1: "supersecretpassword", password2: "supersecretpassword", ) { success, errors, token, refreshToken } }

The Response

{ "errors": [ { "message": "Please, enter valid credentials", "locations": [ { "line": 3, "column": 3 } ], "path": [ "register" ] } ], "data": { "register": null } }

Requirements

aniso8601==7.0.0 asgiref==3.4.1 certifi==2021.5.30 cffi==1.14.6 charset-normalizer==2.0.6 coreapi==2.3.3 coreschema==0.0.4 cryptography==3.4.8 defusedxml==0.7.1 Django==3.2.7 django-filter==21.1 django-graphql-auth==0.3.16 django-graphql-jwt==0.3.0 django-templated-mail==1.1.1 djangorestframework==3.12.4 djangorestframework-simplejwt==4.8.0 djoser==2.1.0 graphene==2.1.9 graphene-django==2.15.0 graphql-core==2.3.2 graphql-relay==2.0.1 idna==3.2 importlib-metadata==1.7.0 itypes==1.2.0 Jinja2==3.0.1 MarkupSafe==2.0.1 oauthlib==3.1.1 promise==2.3 psycopg2-binary==2.9.1 pycparser==2.20 PyJWT==1.7.1 python3-openid==3.2.0 pytz==2021.1 requests==2.26.0 requests-oauthlib==1.3.0 Rx==1.6.1 singledispatch==3.7.0 six==1.16.0 social-auth-app-django==4.0.0 social-auth-core==4.1.0 sqlparse==0.4.2 text-unidecode==1.3 typing-extensions==3.10.0.2 uritemplate==3.0.1 urllib3==1.26.7 zipp==3.5.0

creimers commented 2 years ago

I have the exact same problem.

OkayItsMikael commented 2 years ago

Same. Not sure what's going wrong here.

vladcalin commented 2 years ago

I have the exact issue. After digging through the code, it seems that the flow is:

I fixed it by setting in my settings.py file

AUTHENTICATION_BACKENDS = [
    'graphql_auth.backends.GraphQLAuthBackend',
    'django.contrib.auth.backends.ModelBackend',  # important to have this as well.
]
OkayItsMikael commented 2 years ago

Circling back, can confirm that the above missing config was the issue for me too.

olundberg commented 2 years ago

Circling back, can confirm that the above missing config was the issue for me too.

I can also confirm that this solved my issue which was the same.

gneyal commented 1 year ago

Thanks vladcalin - adding 'django.contrib.auth.backends.ModelBackend' worked.

n3cr0murl0c commented 10 months ago

Hi Working with django graphql auth following the tutorial encountered the same problem, but im working with Django4.0, from the start django-graphql-auth throws a coupple of errors, first:

but now when i try to use the class from graphql_auth import mutations.Register to extend another one to pass an argument to register by default using an identification number, it throws:

graphql_jwt\decorators.py", line 90, in wrapper raise exceptions.JSONWebTokenError( graphql.error.located_error.GraphQLLocatedError: Please, enter valid credentials

n3cr0murl0c commented 10 months ago

Hi Working with django graphql auth following the tutorial encountered the same problem, but im working with Django4.0, from the start django-graphql-auth throws a coupple of errors, first:

  • cannot import ugettext
  • cannot import ugettext_lazy these ones i've fixed using some answers from stackoverflows cuz django renamed the functions to: from django.utils.translation import gettext, gettext_lazy django.utils.translation.ugettext = gettext django.utils.translation.ugettext_lazy = gettext_lazy
  • the last error is about Signals requiring arguments, which no longer is supported in django4. patched graphql.signals using: user_registered = Signal() user_verified = Signal()

but now when i try to use the class from graphql_auth import mutations.Register to extend another one to pass an argument to register by default using an identification number, it throws:

graphql_jwt\decorators.py", line 90, in wrapper raise exceptions.JSONWebTokenError( graphql.error.located_error.GraphQLLocatedError: Please, enter valid credentials

manage to fix the issue adding to settings.py: `GRAPHQL_AUTH ={

....

"ALLOW_LOGIN_NOT_VERIFIED":False,

"REGISTER_MUTATION_FIELDS":{
    "email":"String",
    "username":"String",
    "first_name":"String",
    "last_name":"String",
    "custom_field_to_authenticate":"String"
    },

...

`