From f09f7979127ce75233b60e9823476b746316fca6 Mon Sep 17 00:00:00 2001 From: IrinaKrivoruchko Date: Sat, 28 Jun 2025 11:55:06 +0300 Subject: [PATCH] configure oauth providers --- forum/forum/settings.py | 39 ++++++++++++++++++- forum/forum/urls.py | 1 + forum/requirements.txt | 3 +- forum/startups/views.py | 2 +- .../0002_remove_user_role_user_roles.py | 23 +++++++++++ forum/users/models.py | 2 +- 6 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 forum/users/migrations/0002_remove_user_role_user_roles.py diff --git a/forum/forum/settings.py b/forum/forum/settings.py index a06932e..21bb213 100644 --- a/forum/forum/settings.py +++ b/forum/forum/settings.py @@ -39,6 +39,12 @@ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + 'django.contrib.sites', + 'allauth', + 'allauth.account', + 'allauth.socialaccount', + 'allauth.socialaccount.providers.github', + 'allauth.socialaccount.providers.google', 'rest_framework', 'rest_framework_simplejwt', 'rest_framework_simplejwt.token_blacklist', @@ -58,6 +64,7 @@ "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", + "allauth.account.middleware.AccountMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", ] @@ -258,4 +265,34 @@ } } }, -} \ No newline at end of file +} + +SITE_ID = 1 + +AUTHENTICATION_BACKENDS = ( + 'django.contrib.auth.backends.ModelBackend', + 'allauth.account.auth_backends.AuthenticationBackend', +) + +SOCIALACCOUNT_PROVIDERS = { + 'github': { + 'APP': { + 'client_id': os.getenv('GITHUB_CLIENT_ID'), + 'secret': os.getenv('GITHUB_CLIENT_SECRET'), + 'key': '' + } + }, + 'google': { + 'APP': { + 'client_id': os.getenv('GOOGLE_CLIENT_ID'), + 'secret': os.getenv('GOOGLE_CLIENT_SECRET'), + 'key': '' + } + } +} + +ACCOUNT_LOGIN_METHODS = {'email'} +ACCOUNT_SIGNUP_FIELDS = ['email*', 'password1*', 'password2*'] +ACCOUNT_USER_MODEL_USERNAME_FIELD = None + +LOGIN_REDIRECT_URL = '/' \ No newline at end of file diff --git a/forum/forum/urls.py b/forum/forum/urls.py index 08a703c..dc73d72 100644 --- a/forum/forum/urls.py +++ b/forum/forum/urls.py @@ -29,4 +29,5 @@ path('api/users/', include('users.urls')), path("api/startups/", include('startups.urls')), path("api/investors/", include('investors.urls')), + path('accounts/', include('allauth.urls')), ] diff --git a/forum/requirements.txt b/forum/requirements.txt index 42a1bab..f09a5e6 100644 --- a/forum/requirements.txt +++ b/forum/requirements.txt @@ -12,4 +12,5 @@ djangorestframework-simplejwt==5.3.1 channels==4.0.0 daphne==4.0.0 drf-spectacular==0.28.0 - +django-allauth==65.9.0 +requests==2.32.4 diff --git a/forum/startups/views.py b/forum/startups/views.py index 730e5c8..9f35d75 100644 --- a/forum/startups/views.py +++ b/forum/startups/views.py @@ -96,7 +96,7 @@ def create(self, request, *args, **kwargs): - 401 Unauthorized: Authentication credentials were not provided. - 403 Forbidden: Access denied. """ - if request.user.role != 2: + if request.user.roles != 2: return Response( {"detail": "Only users with role=2 can create startup profiles."}, status=403 diff --git a/forum/users/migrations/0002_remove_user_role_user_roles.py b/forum/users/migrations/0002_remove_user_role_user_roles.py new file mode 100644 index 0000000..35db84a --- /dev/null +++ b/forum/users/migrations/0002_remove_user_role_user_roles.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.21 on 2025-06-27 09:53 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='user', + name='role', + ), + migrations.AddField( + model_name='user', + name='roles', + field=django.contrib.postgres.fields.ArrayField(base_field=models.PositiveSmallIntegerField(choices=[(1, 'Investor'), (2, 'Startup')]), blank=True, default=list, size=None), + ), + ] diff --git a/forum/users/models.py b/forum/users/models.py index d5ee5fb..8902cb0 100644 --- a/forum/users/models.py +++ b/forum/users/models.py @@ -11,7 +11,7 @@ class User(AbstractBaseUser, PermissionsMixin): USERNAME_FIELD = 'email' - REQUIRED_FIELDS = ['user_name'] + REQUIRED_FIELDS = [] user_id = models.AutoField(primary_key=True) email = models.EmailField(unique=True)