| @@ -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 | |||||
| }) | |||||