Browse Source

FIX token payload error

ilya_shyian 1 year ago
parent
commit
be1c7ff04f
5 changed files with 45 additions and 12 deletions
  1. 13 1
      requirements.txt
  2. 6 0
      store_back/apps/authAPI/schema.py
  3. 1 2
      store_back/schema.py
  4. 1 1
      store_back/settings.py
  5. 24 8
      store_back/utils.py

+ 13 - 1
requirements.txt

@@ -1,9 +1,21 @@
+aniso8601==7.0.0
 asgiref==3.5.1
 Django==4.0.4
+django-graphql-jwt==0.3.4
 djangorestframework==3.13.1
 djangorestframework-simplejwt==5.1.0
+graphene==2.1.9
+graphene-django==2.15.0
+graphql-core==2.3.2
+graphql-relay==2.0.1
 Markdown==3.3.7
 Pillow==9.1.0
+promise==2.3
+psycopg2-binary==2.9.3
 PyJWT==2.4.0
 pytz==2022.1
-sqlparse==0.4.2
+Rx==1.6.1
+singledispatch==3.7.0
+six==1.16.0
+sqlparse==0.4.2
+text-unidecode==1.3

+ 6 - 0
store_back/apps/authAPI/schema.py

@@ -10,6 +10,8 @@ from django.contrib.auth import get_user_model
 import operator
 from django.db.models import Q
 
+import graphene
+import graphql_jwt
 
 User = get_user_model()
 
@@ -190,6 +192,10 @@ class UserUpsert(graphene.Mutation):
 
 
 class Mutations(graphene.ObjectType):
+    token_auth = graphql_jwt.ObtainJSONWebToken.Field()
+    verify_token = graphql_jwt.Verify.Field()
+    refresh_token = graphql_jwt.Refresh.Field()
+
 
     UserUpsert =  UserUpsert.Field()
     # GoodDelete = GoodDelete.Field()

+ 1 - 2
store_back/schema.py

@@ -12,8 +12,7 @@ import graphql_jwt
 
 
 class Mutation(good_mutations,category_mutations,order_mutations,auth_mutations):
-    token_auth = graphql_jwt.ObtainJSONWebToken.Field()
-    verify_token = graphql_jwt.Verify.Field()
+    pass
 
 
 class Query(good_query,category_query,order_query,auth_query):

+ 1 - 1
store_back/settings.py

@@ -56,7 +56,7 @@ MIDDLEWARE = [
     'django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
-    'django.middleware.csrf.CsrfViewMiddleware',
+    # 'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',

+ 24 - 8
store_back/utils.py

@@ -1,19 +1,35 @@
 from datetime import datetime
 from graphql_jwt.settings import jwt_settings
 from store_back.settings import GRAPHQL_JWT
+from calendar import timegm
 
 ## JWT payload for Hasura
 def jwt_payload(user, context=None):
-    token = {}
 
-    token['iat'] =str(datetime.timestamp(datetime.now()))
-    token["sub"] = {
+    username = user.get_username()
+
+
+
+    exp = datetime.utcnow() + jwt_settings.JWT_EXPIRATION_DELTA
+
+    payload = {
+        user.USERNAME_FIELD: username,
+        "exp": timegm(exp.utctimetuple()),
+    }
+
+
+
+    payload['iat'] =timegm(datetime.utcnow().utctimetuple())
+    payload["sub"] = {
         "acl":["anon"],
     }
+
     if user._id:
-        token["sub"]["acl"].append(str(user._id))
+        payload["sub"]["acl"].append(str(user._id))
         if  user.is_superuser:
-            token["sub"]["acl"].append("admin")
-        token["sub"]["login"] = user.username
-        token["sub"]["_id"] = str(user._id)
-    return token
+            payload["sub"]["acl"].append("admin")
+        payload["sub"]["login"] = user.username
+        payload["sub"]["_id"] = str(user._id)
+
+
+    return payload