Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement allauth #387

Draft
wants to merge 20 commits into
base: master
Choose a base branch
from
Draft
1 change: 1 addition & 0 deletions back/Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ croniter = "*" # Needed for django-q scheduled tasks
slack-bolt = "*"
django-q2 = "*" # Background tasks
psycopg = {extras = ["binary"], version = "*"}
django-allauth = {extras = ["mfa"], version = "*"}

[dev-packages]
coverage = "*"
Expand Down
57 changes: 56 additions & 1 deletion back/Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion back/admin/admin_tasks/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect
Expand All @@ -7,7 +8,7 @@
from django.views.generic.edit import CreateView, UpdateView
from django.views.generic.list import ListView

from users.mixins import LoginRequiredMixin, ManagerPermMixin
from users.mixins import ManagerPermMixin

from .forms import AdminTaskCommentForm, AdminTaskCreateForm, AdminTaskUpdateForm
from .models import AdminTask, AdminTaskComment
Expand Down
3 changes: 2 additions & 1 deletion back/admin/appointments/views.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from django.views.generic.edit import CreateView, DeleteView, UpdateView
from django.views.generic.list import ListView

from users.mixins import LoginRequiredMixin, ManagerPermMixin
from users.mixins import ManagerPermMixin

from .forms import AppointmentForm
from .models import Appointment
Expand Down
3 changes: 2 additions & 1 deletion back/admin/badges/views.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from django.views.generic.edit import CreateView, DeleteView, UpdateView
from django.views.generic.list import ListView

from users.mixins import LoginRequiredMixin, ManagerPermMixin
from users.mixins import ManagerPermMixin

from .forms import BadgeForm
from .models import Badge
Expand Down
3 changes: 2 additions & 1 deletion back/admin/hardware/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
Expand All @@ -6,7 +7,7 @@

from admin.hardware.forms import HardwareForm
from admin.hardware.models import Hardware
from users.mixins import LoginRequiredMixin, ManagerPermMixin
from users.mixins import ManagerPermMixin


class HardwareListView(LoginRequiredMixin, ManagerPermMixin, ListView):
Expand Down
20 changes: 0 additions & 20 deletions back/admin/integrations/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,26 +162,6 @@ def test_update_integration(client, django_user_model, custom_integration_factor
assert integration.name in response.content.decode()


@pytest.mark.django_db
def test_create_google_login_integration(client, django_user_model):
client.force_login(
django_user_model.objects.create(role=get_user_model().Role.ADMIN)
)

url = reverse("integrations:create-google")
response = client.get(url)

assert "client_id" in response.content.decode()
assert "client_secret" in response.content.decode()

response = client.post(url, data={"client_id": "12", "client_secret": "233"})

assert (
Integration.objects.filter(integration=Integration.Type.GOOGLE_LOGIN).count()
== 1
)


@pytest.mark.django_db
def test_delete_integration(client, django_user_model, custom_integration_factory):
client.force_login(
Expand Down
5 changes: 0 additions & 5 deletions back/admin/integrations/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,6 @@
name="delete",
),
path("update/<int:pk>/", views.IntegrationUpdateView.as_view(), name="update"),
path(
"create/google_login/",
views.IntegrationCreateGoogleLoginView.as_view(),
name="create-google",
),
path("oauth/<int:pk>/", views.IntegrationOauthRedirectView.as_view(), name="oauth"),
path(
"oauth/<int:pk>/callback/",
Expand Down
24 changes: 2 additions & 22 deletions back/admin/integrations/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import requests
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse_lazy
Expand All @@ -13,7 +14,7 @@
from django.views.generic.base import RedirectView
from django.views.generic.edit import CreateView, DeleteView, UpdateView

from users.mixins import AdminPermMixin, LoginRequiredMixin
from users.mixins import AdminPermMixin

from .forms import IntegrationExtraArgsForm, IntegrationForm
from .models import Integration
Expand All @@ -39,27 +40,6 @@ def form_valid(self, form):
return super().form_valid(form)


class IntegrationCreateGoogleLoginView(
LoginRequiredMixin, AdminPermMixin, CreateView, SuccessMessageMixin
):
template_name = "token_create.html"
fields = ["client_id", "client_secret"]
queryset = Integration.objects.filter(integration=Integration.Type.GOOGLE_LOGIN)
success_message = _("Integration has been updated!")
success_url = reverse_lazy("settings:integrations")

def form_valid(self, form):
form.instance.integration = Integration.Type.GOOGLE_LOGIN
return super().form_valid(form)

def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["title"] = _("Change Google login credentials")
context["subtitle"] = _("settings")
context["button_text"] = _("Update")
return context


class IntegrationUpdateView(
LoginRequiredMixin, AdminPermMixin, UpdateView, SuccessMessageMixin
):
Expand Down
3 changes: 2 additions & 1 deletion back/admin/introductions/views.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, DeleteView, UpdateView
from django.views.generic.list import ListView

from users.mixins import LoginRequiredMixin, ManagerPermMixin
from users.mixins import ManagerPermMixin
from users.models import User

from .forms import IntroductionForm
Expand Down
6 changes: 2 additions & 4 deletions back/admin/people/access_views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse_lazy
Expand All @@ -10,10 +11,7 @@

from admin.integrations.forms import IntegrationExtraUserInfoForm
from admin.integrations.models import Integration
from users.mixins import (
IsAdminOrNewHireManagerMixin,
LoginRequiredMixin,
)
from users.mixins import IsAdminOrNewHireManagerMixin
from users.models import IntegrationUser


Expand Down
2 changes: 1 addition & 1 deletion back/admin/people/new_hire_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.conf import settings
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect, render
Expand Down Expand Up @@ -35,7 +36,6 @@
)
from users.mixins import (
IsAdminOrNewHireManagerMixin,
LoginRequiredMixin,
ManagerPermMixin,
)
from users.models import NewHireWelcomeMessage, PreboardingUser, ResourceUser, ToDoUser
Expand Down
6 changes: 3 additions & 3 deletions back/admin/people/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -2638,8 +2638,8 @@ def test_employee_can_only_login_with_access(
):
employee1 = employee_factory()

url = reverse("login")
data = {"username": employee1.email, "password": "test"}
url = reverse("account_login")
data = {"login": employee1.email, "password": "test"}
client.post(url, data=data, follow=True)

user = auth.get_user(client)
Expand All @@ -2662,7 +2662,7 @@ def test_employee_can_only_login_with_access(
assert not user.is_authenticated

# Try logging in again with employee account
url = reverse("login")
url = reverse("account_login")
client.post(url, data=data, follow=True)

user = auth.get_user(client)
Expand Down
2 changes: 1 addition & 1 deletion back/admin/people/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404, redirect, render
Expand Down Expand Up @@ -30,7 +31,6 @@
from users.mixins import (
AdminPermMixin,
IsAdminOrNewHireManagerMixin,
LoginRequiredMixin,
ManagerPermMixin,
)
from users.models import ToDoUser
Expand Down
3 changes: 2 additions & 1 deletion back/admin/preboarding/views.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from django.views.generic.edit import CreateView, DeleteView, UpdateView
from django.views.generic.list import ListView

from users.mixins import LoginRequiredMixin, ManagerPermMixin
from users.mixins import ManagerPermMixin

from .forms import PreboardingForm
from .models import Preboarding
Expand Down
3 changes: 2 additions & 1 deletion back/admin/resources/views.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from django.views.generic.edit import CreateView, DeleteView, UpdateView
from django.views.generic.list import ListView

from users.mixins import LoginRequiredMixin, ManagerPermMixin
from users.mixins import ManagerPermMixin

from .forms import ResourceForm
from .models import Resource
Expand Down
3 changes: 2 additions & 1 deletion back/admin/sequences/offboarding_views.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from django.views.generic.list import ListView

from admin.sequences.models import Sequence
from users.mixins import LoginRequiredMixin, ManagerPermMixin
from users.mixins import ManagerPermMixin


class OffboardingSequenceListView(LoginRequiredMixin, ManagerPermMixin, ListView):
Expand Down
Loading
Loading