diff --git a/Dockerfile b/Dockerfile index 6fffe4d..e3ec123 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.10.0-alpine3.15 +WORKDIR /usr/src/app + RUN apk add --update --no-cache\ build-base \ openldap-dev\ @@ -9,9 +11,6 @@ RUN apk add --update --no-cache\ # FIX https://github.com/python-ldap/python-ldap/issues/432 RUN echo 'INPUT ( libldap.so )' > /usr/lib/libldap_r.so -WORKDIR /usr/src/app COPY requirements.txt ./ - RUN pip install --no-cache-dir -r requirements.txt - -COPY . . +COPY ungleichuser/ . diff --git a/README.md b/README.md index c65178f..0a1cb2d 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,14 @@ This service runs on [account.ungleich.ch](https://account.ungleich.ch/) and allows customers manage their ungleich account (register, edit mail & password, ...). -## v2 +## Status v2 * See below ungleichuser/ +* register view created +* Not solved: + * email verification *before* user is created +* Solved + * Finding highest uid, increasing by 1 ## Todos for v2: diff --git a/dal/templates/base.html b/dal/templates/base.html index 4c8a6ed..030afb5 100644 --- a/dal/templates/base.html +++ b/dal/templates/base.html @@ -11,14 +11,13 @@ - Ungleich userservice + Ungleich User Service - @@ -34,19 +33,8 @@ - - - - - diff --git a/logs/.keep b/logs/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/requirements-os.txt b/requirements-os.txt deleted file mode 100644 index 13b2452..0000000 --- a/requirements-os.txt +++ /dev/null @@ -1,2 +0,0 @@ -# Debian/Devuanp -apt install libldap2-dev libsasl2-dev diff --git a/ungleichuser/requirements.txt b/ungleichuser/requirements.txt index ee32668..34c09c9 100644 --- a/ungleichuser/requirements.txt +++ b/ungleichuser/requirements.txt @@ -1,6 +1,9 @@ django==4.0 ldap3 +django-crispy-forms +bootstrap4 + #django-auth-ldap # To check diff --git a/ungleichuser/static/base.css b/ungleichuser/static/base.css new file mode 100644 index 0000000..02c0738 --- /dev/null +++ b/ungleichuser/static/base.css @@ -0,0 +1,19 @@ +body { + margin: 0; + padding: 0; + background-color: #17a2b8; + height: 100vh; +} +#login .container #login-row #login-column #login-box { + margin-top: 120px; + max-width: 600px; + height: 320px; + border: 1px solid #9C9C9C; + background-color: #EAEAEA; +} +#login .container #login-row #login-column #login-box #login-form { + padding: 20px; +} +#login .container #login-row #login-column #login-box #login-form #register-link { + margin-top: -85px; +} diff --git a/ungleichuser/templates/login.html b/ungleichuser/templates/login.html new file mode 100644 index 0000000..2175e77 --- /dev/null +++ b/ungleichuser/templates/login.html @@ -0,0 +1,36 @@ + + + + + + +
+

Login form

+
+
+
+
+
+

Login

+
+
+ +
+
+
+ +
+
+
+ +
+ +
+
+
+
+
+
+ diff --git a/ungleichuser/ungleichuser/settings.py b/ungleichuser/ungleichuser/settings.py index 400fe79..bbec33c 100644 --- a/ungleichuser/ungleichuser/settings.py +++ b/ungleichuser/ungleichuser/settings.py @@ -38,6 +38,8 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'crispy_forms', + 'ungleichuser' ] MIDDLEWARE = [ @@ -122,3 +124,5 @@ STATIC_URL = 'static/' # https://docs.djangoproject.com/en/dev/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +CRISPY_TEMPLATE_PACK = 'bootstrap4' diff --git a/ungleichuser/ungleichuser/templates/ungleichuser/header.html b/ungleichuser/ungleichuser/templates/ungleichuser/header.html new file mode 100644 index 0000000..c3c50b3 --- /dev/null +++ b/ungleichuser/ungleichuser/templates/ungleichuser/header.html @@ -0,0 +1,16 @@ + + + + + + + Title + + + + {% block content %} + + {% endblock %} + + + diff --git a/ungleichuser/ungleichuser/templates/ungleichuser/register.html b/ungleichuser/ungleichuser/templates/ungleichuser/register.html new file mode 100644 index 0000000..b011bc7 --- /dev/null +++ b/ungleichuser/ungleichuser/templates/ungleichuser/register.html @@ -0,0 +1,18 @@ +{% extends "ungleichuser/header.html" %} + +{% block content %} + +{% load crispy_forms_tags %} + + +
+

Register

+
+ {% csrf_token %} + {{ register_form|crispy }} + +
+

If you already have an account, login instead.

+
+ +{% endblock %} diff --git a/ungleichuser/ungleichuser/urls.py b/ungleichuser/ungleichuser/urls.py index 8d0fefe..06a615e 100644 --- a/ungleichuser/ungleichuser/urls.py +++ b/ungleichuser/ungleichuser/urls.py @@ -16,8 +16,11 @@ Including another URLconf from django.contrib import admin import django.contrib.auth from django.urls import path, include +from . import views urlpatterns = [ - path('admin/', admin.site.urls), +# path('admin/', admin.site.urls), +# path("", views.homepage, name="homepage"), + path("register", views.register_request, name="register"), path('accounts/', include('django.contrib.auth.urls')), ] diff --git a/ungleichuser/ungleichuser/views.py b/ungleichuser/ungleichuser/views.py new file mode 100644 index 0000000..a889063 --- /dev/null +++ b/ungleichuser/ungleichuser/views.py @@ -0,0 +1,21 @@ +from django.shortcuts import render, redirect +from .forms import NewUserForm +from django.contrib.auth import login +from django.contrib import messages + +def register_request(request): + if request.method == "POST": + form = NewUserForm(request.POST) + + if form.is_valid(): + user = form.save() + login(request, user) + messages.success(request, "Registration successful." ) + return redirect("main:homepage") + + messages.error(request, "Unsuccessful registration. Invalid information.") + + form = NewUserForm() + return render (request=request, + template_name="ungleichuser/register.html", + context={"register_form":form})