diff --git a/rc_hip/rc_hip/settings.py b/rc_hip/rc_hip/settings.py
index c602302..54412c7 100644
--- a/rc_hip/rc_hip/settings.py
+++ b/rc_hip/rc_hip/settings.py
@@ -155,3 +155,5 @@ EMAIL_USE_TLS = os.getenv("DJANGO_EMAIL_USE_TLS", 'true') in ('true', '1', 't')
AUTH_USER_MODEL = "repapp_users.CustomUser"
AUTHENTICATION_BACKENDS = [
"repapp_users.backends.EmailBackend", "django.contrib.auth.backends.ModelBackend"]
+
+LOGIN_REDIRECT_URL = '/guest/profile/'
diff --git a/rc_hip/rc_hip/urls.py b/rc_hip/rc_hip/urls.py
index e83b2f9..b0ce1c6 100644
--- a/rc_hip/rc_hip/urls.py
+++ b/rc_hip/rc_hip/urls.py
@@ -22,7 +22,6 @@ from django.conf.urls.static import static
urlpatterns = [
path("", include("repapp.urls")),
- path("", include("repapp_users.urls")),
- path('users/', include('django.contrib.auth.urls')),
+ path('accounts/', include('django.contrib.auth.urls')),
path('admin/', admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/rc_hip/repapp/templates/repapp/guest_profile.html b/rc_hip/repapp/templates/repapp/guest_profile.html
new file mode 100644
index 0000000..b4d4bbc
--- /dev/null
+++ b/rc_hip/repapp/templates/repapp/guest_profile.html
@@ -0,0 +1,28 @@
+{% extends "repapp/base.html" %}
+{% block title %}
+ - Gast Daten
+{% endblock title %}
+{% block content %}
+
Ihre Daten
+
+
+
+
+ | eMail Adresse |
+ {{ guest.mail }} |
+
+
+ | Name |
+ {{ guest.name }} |
+
+
+ | Wohnort |
+ {{ guest.residence }} |
+
+
+ | Telefonnummer |
+ {{ guest.phone }} |
+
+
+
+{% endblock content %}
diff --git a/rc_hip/repapp/urls.py b/rc_hip/repapp/urls.py
index f56ab76..5cddc8e 100644
--- a/rc_hip/repapp/urls.py
+++ b/rc_hip/repapp/urls.py
@@ -21,4 +21,6 @@ urlpatterns = [
views.register_device_final, name="register_device_final"),
path("device//",
views.device_view, name="view_device"),
+ path("guest/profile/",
+ views.profile, name="guest_profile"),
]
diff --git a/rc_hip/repapp/views.py b/rc_hip/repapp/views.py
index 1a4b75a..209e7fb 100644
--- a/rc_hip/repapp/views.py
+++ b/rc_hip/repapp/views.py
@@ -3,14 +3,19 @@ Views of RepApp.
"""
import datetime
import os
+import random
+import string
from hashlib import sha256
from django.views import generic
from django.urls import reverse_lazy
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
+from django.core.exceptions import PermissionDenied
from django.contrib import messages
from django.core.mail import send_mail
from django.template.loader import render_to_string
+from django.contrib.auth.decorators import login_required
+from repapp_users.models import CustomUser
from .models import Cafe, Device, Guest, Organisator
from .forms import RegisterDevice, RegisterGuest
@@ -156,6 +161,7 @@ class RegisterGuestFormView(generic.edit.FormView):
device = get_object_or_404(Device, identifier=device_identifier)
name = form.cleaned_data['name']
+ mail = self.kwargs['mail']
residence = form.cleaned_data['residence']
identifier = sha256(
f'{name}{residence}{datetime.datetime.now()}'.encode('utf-8')
@@ -165,13 +171,25 @@ class RegisterGuestFormView(generic.edit.FormView):
name=name,
phone=form.cleaned_data['phone'],
residence=residence,
- mail=self.kwargs['mail'],
+ mail=mail,
)
guest.save()
device.guest = guest
device.save()
+ if not CustomUser.objects.filter(email=mail).exists():
+ password = ''.join(random.choice(string.ascii_letters)
+ for i in range(10))
+ user = CustomUser.objects.create_user(
+ username=name,
+ email=mail,
+ password=password)
+ user.save()
+
+ print(f'{mail} {password}')
+ # TODO: send account creation email
+
send_confirmation_mails(device, guest, cafe, self.request)
return HttpResponseRedirect(
@@ -208,11 +226,38 @@ def register_device_final(request, cafe, device_identifier):
)
+@login_required
def device_view(request, device_identifier):
+ user = request.user
+ if not user:
+ raise PermissionDenied()
+
device = get_object_or_404(Device, identifier=device_identifier)
+ if not device.guest:
+ raise PermissionDenied()
+
+ # TODO: Guests can only view their devices, Reparateur and Orga can view all devices.
return render(
request,
"repapp/device_view.html",
{"device": device},
)
+
+
+@login_required
+def profile(request):
+ user = request.user
+ if not user:
+ raise PermissionDenied()
+
+ guest = get_object_or_404(Guest, mail=user.email)
+
+ return render(
+ request,
+ "repapp/guest_profile.html",
+ {
+ 'user': user,
+ 'guest': guest
+ }
+ )
diff --git a/rc_hip/repapp_users/forms.py b/rc_hip/repapp_users/forms.py
deleted file mode 100644
index e69de29..0000000
diff --git a/rc_hip/repapp_users/migrations/0002_alter_customuser_options_alter_customuser_email.py b/rc_hip/repapp_users/migrations/0002_alter_customuser_options_alter_customuser_email.py
new file mode 100644
index 0000000..bb1e189
--- /dev/null
+++ b/rc_hip/repapp_users/migrations/0002_alter_customuser_options_alter_customuser_email.py
@@ -0,0 +1,22 @@
+# Generated by Django 4.2 on 2023-04-23 11:56
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('repapp_users', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='customuser',
+ options={'verbose_name': 'Benutzer', 'verbose_name_plural': 'Benutzer'},
+ ),
+ migrations.AlterField(
+ model_name='customuser',
+ name='email',
+ field=models.EmailField(max_length=254, unique=True, verbose_name='eMail Adresse'),
+ ),
+ ]
diff --git a/rc_hip/repapp_users/templates/login.html b/rc_hip/repapp_users/templates/login.html
deleted file mode 100644
index f2307c7..0000000
--- a/rc_hip/repapp_users/templates/login.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% extends "repapp/base.html" %}
-{% block content %}
- {% if form.errors %}Your username and password didn't match. Please try again.
{% endif %}
- {% if next %}
- {% if user.is_authenticated %}
-
- Your account doesn't have access to this page. To proceed,
- please login with an account that has access.
-
- {% else %}
- Please login to see this page.
- {% endif %}
- {% endif %}
-
- {# Assumes you setup the password_reset view in your URLconf #}
-
- Lost password?
-
-{% endblock %}
diff --git a/rc_hip/repapp_users/templates/registration/login.html b/rc_hip/repapp_users/templates/registration/login.html
new file mode 100644
index 0000000..c292974
--- /dev/null
+++ b/rc_hip/repapp_users/templates/registration/login.html
@@ -0,0 +1,13 @@
+{% extends "repapp/base.html" %}
+{% load crispy_forms_tags %}
+{% block title %}
+ - Gast Login
+{% endblock title %}
+{% block content %}
+ Gast Login
+
+{% endblock content %}
diff --git a/rc_hip/repapp_users/urls.py b/rc_hip/repapp_users/urls.py
deleted file mode 100644
index ad783e1..0000000
--- a/rc_hip/repapp_users/urls.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from django.urls import path, include
-
-urlpatterns = [
-]
diff --git a/rc_hip/repapp_users/views.py b/rc_hip/repapp_users/views.py
deleted file mode 100644
index 91ea44a..0000000
--- a/rc_hip/repapp_users/views.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.shortcuts import render
-
-# Create your views here.