@@ -0,0 +1,8 @@ | |||||
asgiref==3.5.2 | |||||
Django==4.0.6 | |||||
django-filter==22.1 | |||||
djangorestframework==3.13.1 | |||||
drfpasswordless==1.5.8 | |||||
Markdown==3.3.7 | |||||
pytz==2022.1 | |||||
sqlparse==0.4.2 |
@@ -37,8 +37,20 @@ INSTALLED_APPS = [ | |||||
'django.contrib.staticfiles', | 'django.contrib.staticfiles', | ||||
'rest_framework', | 'rest_framework', | ||||
'rest_framework.authtoken', | 'rest_framework.authtoken', | ||||
'drfpasswordless' | |||||
] | ] | ||||
PASSWORDLESS_AUTH = { | |||||
'PASSWORDLESS_AUTH_TYPES': ['EMAIL'] | |||||
} | |||||
PASSWORDLESS_AUTH = { | |||||
'PASSWORDLESS_AUTH_TYPES': ['EMAIL'], | |||||
'PASSWORDLESS_EMAIL_NOREPLY_ADDRESS': 'kj@webtrigon.com', | |||||
} | |||||
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' | |||||
MIDDLEWARE = [ | MIDDLEWARE = [ | ||||
'django.middleware.security.SecurityMiddleware', | 'django.middleware.security.SecurityMiddleware', | ||||
'django.contrib.sessions.middleware.SessionMiddleware', | 'django.contrib.sessions.middleware.SessionMiddleware', | ||||
@@ -52,13 +64,8 @@ MIDDLEWARE = [ | |||||
ROOT_URLCONF = 'workx_backend.urls' | ROOT_URLCONF = 'workx_backend.urls' | ||||
REST_FRAMEWORK = { | REST_FRAMEWORK = { | ||||
# Use Django's standard `django.contrib.auth` permissions, | |||||
# or allow read-only access for unauthenticated users. | |||||
'DEFAULT_PERMISSION_CLASSES': [ | |||||
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' | |||||
], | |||||
'DEFAULT_AUTHENTICATION_CLASSES': [ | 'DEFAULT_AUTHENTICATION_CLASSES': [ | ||||
'rest_framework.authentication.BasicAuthentication' | |||||
'rest_framework.authentication.TokenAuthentication' | |||||
] | ] | ||||
} | } | ||||
@@ -1,8 +1,7 @@ | |||||
from django.contrib import admin | from django.contrib import admin | ||||
from django.urls import path, include | from django.urls import path, include | ||||
from rest_framework import routers | from rest_framework import routers | ||||
from workx_backend.views import UserViewSet, CustomAuthToken | |||||
from rest_framework.authtoken import views | |||||
from workx_backend.views import UserViewSet | |||||
router = routers.DefaultRouter() | router = routers.DefaultRouter() | ||||
router.register(r'users', UserViewSet) | router.register(r'users', UserViewSet) | ||||
@@ -10,6 +9,6 @@ router.register(r'users', UserViewSet) | |||||
urlpatterns = [ | urlpatterns = [ | ||||
path('admin/', admin.site.urls), | path('admin/', admin.site.urls), | ||||
path('api/', include(router.urls)), | path('api/', include(router.urls)), | ||||
path('authenticate/', CustomAuthToken.as_view()) | |||||
path('', include('drfpasswordless.urls')), | |||||
] | ] | ||||
@@ -1,26 +1,8 @@ | |||||
from django.contrib.auth.models import User | from django.contrib.auth.models import User | ||||
from rest_framework import viewsets | from rest_framework import viewsets | ||||
from rest_framework.authtoken.models import Token | |||||
from rest_framework.authtoken.views import ObtainAuthToken | |||||
from workx_backend.serializers import UserSerializer | from workx_backend.serializers import UserSerializer | ||||
from rest_framework.response import Response | |||||
class UserViewSet(viewsets.ModelViewSet): | class UserViewSet(viewsets.ModelViewSet): | ||||
queryset = User.objects.all() | queryset = User.objects.all() | ||||
serializer_class = UserSerializer | serializer_class = UserSerializer | ||||
class CustomAuthToken(ObtainAuthToken): | |||||
def post(self, request, *args, **kwargs): | |||||
serializer = self.serializer_class(data=request.data, | |||||
context={'request': request}) | |||||
serializer.is_valid(raise_exception=True) | |||||
user = serializer.validated_data['user'] | |||||
# token, created = Token.objects.get_or_create(user=user) | |||||
return Response({ | |||||
# 'token': token.key, | |||||
# 'user_id': user.pk, | |||||
'email': user.email | |||||
}) |