Skip to content
Snippets Groups Projects
Commit c1a512a0 authored by Sivert Kronen Hatteberg's avatar Sivert Kronen Hatteberg
Browse files

Fix rest of linting

Issue: GREG-36
parent 2a111440
No related branches found
No related tags found
1 merge request!75Greg 36 feide
...@@ -77,12 +77,12 @@ SESSION_COOKIE_AGE = 1800 # lifetime of session in seconds ...@@ -77,12 +77,12 @@ SESSION_COOKIE_AGE = 1800 # lifetime of session in seconds
CSRF_COOKIE_SAMESITE = "Strict" CSRF_COOKIE_SAMESITE = "Strict"
SESSION_COOKIE_SAMESITE = "Strict" SESSION_COOKIE_SAMESITE = "Strict"
#CSRF_COOKIE_HTTPONLY = True # CSRF_COOKIE_HTTPONLY = True
#SESSION_COOKIE_HTTPONLY = True # SESSION_COOKIE_HTTPONLY = True
# Enable these in production # Enable these in production
#CSRF_COOKIE_SECURE = True # CSRF_COOKIE_SECURE = True
#SESSION_COOKIE_SECURE = True # SESSION_COOKIE_SECURE = True
REST_FRAMEWORK = { REST_FRAMEWORK = {
"DEFAULT_VERSIONING_CLASS": "rest_framework.versioning.NamespaceVersioning", "DEFAULT_VERSIONING_CLASS": "rest_framework.versioning.NamespaceVersioning",
......
...@@ -15,7 +15,7 @@ ORGREG_CLIENT = { ...@@ -15,7 +15,7 @@ ORGREG_CLIENT = {
} }
AUTHENTICATION_BACKENDS = [ AUTHENTICATION_BACKENDS = [
"gregui.authentication.auth_backends.DevBackend", # Fake dev backend "gregui.authentication.auth_backends.DevBackend", # Fake dev backend
"django.contrib.auth.backends.ModelBackend", # default "django.contrib.auth.backends.ModelBackend", # default
"gregui.authentication.auth_backends.GregOIDCBackend", "gregui.authentication.auth_backends.GregOIDCBackend",
"sesame.backends.ModelBackend", # link login "sesame.backends.ModelBackend", # link login
...@@ -26,5 +26,5 @@ LOGOUT_REDIRECT_URL = "http://localhost:3000/" ...@@ -26,5 +26,5 @@ LOGOUT_REDIRECT_URL = "http://localhost:3000/"
CSRF_COOKIE_SAMESITE = "Strict" CSRF_COOKIE_SAMESITE = "Strict"
SESSION_COOKIE_SAMESITE = "Lax" SESSION_COOKIE_SAMESITE = "Lax"
#CSRF_COOKIE_HTTPONLY = True # CSRF_COOKIE_HTTPONLY = True
#SESSION_COOKIE_HTTPONLY = True # SESSION_COOKIE_HTTPONLY = True
...@@ -3,6 +3,7 @@ from reversion.admin import VersionAdmin ...@@ -3,6 +3,7 @@ from reversion.admin import VersionAdmin
from gregui.models import GregUserProfile from gregui.models import GregUserProfile
class GregUserProfileAdmin(VersionAdmin): class GregUserProfileAdmin(VersionAdmin):
pass pass
......
...@@ -4,7 +4,8 @@ from rest_framework.generics import CreateAPIView ...@@ -4,7 +4,8 @@ from rest_framework.generics import CreateAPIView
from greg.models import Person from greg.models import Person
from gregui.api.serializers.guest import GuestRegisterSerializer from gregui.api.serializers.guest import GuestRegisterSerializer
class GuestRegisterView(CreateAPIView): class GuestRegisterView(CreateAPIView):
queryset = Person.objects.all() queryset = Person.objects.all()
permission_classes = [permissions.AllowAny] permission_classes = [permissions.AllowAny]
serializer_class = GuestRegisterSerializer serializer_class = GuestRegisterSerializer
\ No newline at end of file
...@@ -11,8 +11,9 @@ from rest_framework.response import Response ...@@ -11,8 +11,9 @@ from rest_framework.response import Response
from gregui.models import GregUserProfile from gregui.models import GregUserProfile
class UserInfoView(APIView): class UserInfoView(APIView):
""" """
User info view. User info view.
Return info about the logged inn user. Return info about the logged inn user.
...@@ -36,10 +37,10 @@ class UserInfoView(APIView): ...@@ -36,10 +37,10 @@ class UserInfoView(APIView):
person_id = user_profile.person.id person_id = user_profile.person.id
content = { content = {
'feide_id': user_profile.userid_feide, "feide_id": user_profile.userid_feide,
'name': f'{user.first_name} {user.last_name}', "name": f"{user.first_name} {user.last_name}",
'sponsor_id': sponsor_id, "sponsor_id": sponsor_id,
'person_id': person_id, "person_id": person_id,
} }
return Response(content) return Response(content)
\ No newline at end of file
...@@ -194,16 +194,19 @@ class GregOIDCBackend(ValidatingOIDCBackend): ...@@ -194,16 +194,19 @@ class GregOIDCBackend(ValidatingOIDCBackend):
user = super().get_or_create_user(access_token, id_token, payload) user = super().get_or_create_user(access_token, id_token, payload)
if user: if user:
# Update or create a user_profile # Update or create a user_profile
userinfo = extract_userinfo(self.get_userinfo(access_token, id_token, payload)) userinfo = extract_userinfo(
self.get_userinfo(access_token, id_token, payload)
)
self._get_or_create_greg_user_profile(userinfo, user) self._get_or_create_greg_user_profile(userinfo, user)
return user return user
def _get_or_create_person(self, userinfo): def _get_or_create_person(self, userinfo):
# Update any new person info # Update any new person info
person, _ = Person.objects.update_or_create( person, _ = Person.objects.update_or_create(
first_name=userinfo['first_name'], first_name=userinfo["first_name"],
last_name=userinfo['last_name'], last_name=userinfo["last_name"],
email=userinfo['email']) email=userinfo["email"],
)
person.save() person.save()
return person return person
...@@ -221,25 +224,29 @@ class GregOIDCBackend(ValidatingOIDCBackend): ...@@ -221,25 +224,29 @@ class GregOIDCBackend(ValidatingOIDCBackend):
# Check if user is a sponsor # Check if user is a sponsor
try: try:
sponsor = Sponsor.objects.get(feide_id=userinfo['userid_feide']) sponsor = Sponsor.objects.get(feide_id=userinfo["userid_feide"])
except Sponsor.DoesNotExist: except Sponsor.DoesNotExist:
sponsor = None sponsor = None
try: try:
# TODO, match against fnr if using id-porten. # TODO, match against fnr if using id-porten.
identity = Identity.objects.get(type='feide_id', value=userinfo['userid_feide']) identity = Identity.objects.get(
type="feide_id", value=userinfo["userid_feide"]
)
person = identity.person person = identity.person
except Identity.DoesNotExist: except Identity.DoesNotExist:
# Find or create person, and add identity # Find or create person, and add identity
person = self._get_or_create_person(userinfo) person = self._get_or_create_person(userinfo)
identity = Identity(type='feide_id', value=userinfo['userid_feide'], person=person) identity = Identity(
type="feide_id", value=userinfo["userid_feide"], person=person
)
identity.save() identity.save()
user_profile = GregUserProfile( user_profile = GregUserProfile(
user=user, user=user,
person=person, person=person,
sponsor=sponsor, sponsor=sponsor,
userid_feide=userinfo['userid_feide'] userid_feide=userinfo["userid_feide"],
) )
user_profile.save() user_profile.save()
...@@ -250,10 +257,10 @@ class GregOIDCBackend(ValidatingOIDCBackend): ...@@ -250,10 +257,10 @@ class GregOIDCBackend(ValidatingOIDCBackend):
username = self.get_username(claims["sub"]) username = self.get_username(claims["sub"])
user = self.UserModel( user = self.UserModel(
username=username, username=username,
first_name=userinfo['first_name'], first_name=userinfo["first_name"],
last_name=userinfo['last_name'], last_name=userinfo["last_name"],
email=userinfo['email'] email=userinfo["email"],
) )
user.save() user.save()
# Create a user_profile if missing # Create a user_profile if missing
......
...@@ -11,24 +11,59 @@ class Migration(migrations.Migration): ...@@ -11,24 +11,59 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
('greg', '0004_ou_deleted_active'), ("greg", "0004_ou_deleted_active"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL), migrations.swappable_dependency(settings.AUTH_USER_MODEL),
] ]
operations = [ operations = [
migrations.CreateModel( migrations.CreateModel(
name='GregUserProfile', name="GregUserProfile",
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), (
('created', models.DateTimeField(auto_now_add=True)), "id",
('updated', models.DateTimeField(auto_now=True)), models.BigAutoField(
('userid_feide', models.CharField(max_length=150, verbose_name='userid-feide')), auto_created=True,
('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='user_profiles', to='greg.person')), primary_key=True,
('sponsor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='user_profiles', to='greg.sponsor')), serialize=False,
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), verbose_name="ID",
),
),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
(
"userid_feide",
models.CharField(max_length=150, verbose_name="userid-feide"),
),
(
"person",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="user_profiles",
to="greg.person",
),
),
(
"sponsor",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="user_profiles",
to="greg.sponsor",
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
], ],
options={ options={
'abstract': False, "abstract": False,
}, },
bases=(dirtyfields.dirtyfields.DirtyFieldsMixin, models.Model), bases=(dirtyfields.dirtyfields.DirtyFieldsMixin, models.Model),
), ),
......
...@@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy ...@@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy
from greg.models import BaseModel, Person, Sponsor from greg.models import BaseModel, Person, Sponsor
class GregUserProfile(BaseModel): class GregUserProfile(BaseModel):
"""Link the django user to a Person or Sponsor.""" """Link the django user to a Person or Sponsor."""
...@@ -11,15 +12,15 @@ class GregUserProfile(BaseModel): ...@@ -11,15 +12,15 @@ class GregUserProfile(BaseModel):
person = models.ForeignKey( person = models.ForeignKey(
Person, Person,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name='user_profiles', related_name="user_profiles",
blank=True, blank=True,
null=True null=True,
) )
sponsor = models.ForeignKey( sponsor = models.ForeignKey(
Sponsor, Sponsor,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name='user_profiles', related_name="user_profiles",
blank=True, blank=True,
null=True null=True,
) )
userid_feide = models.CharField(gettext_lazy("userid-feide"), max_length=150) userid_feide = models.CharField(gettext_lazy("userid-feide"), max_length=150)
...@@ -16,6 +16,7 @@ from greg.models import ( ...@@ -16,6 +16,7 @@ from greg.models import (
ConsentType, ConsentType,
) )
@pytest.fixture @pytest.fixture
def client() -> APIClient: def client() -> APIClient:
client = APIClient() client = APIClient()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment