Skip to content
Snippets Groups Projects
Commit 2e9b1f43 authored by Christian Dresen's avatar Christian Dresen
Browse files

Register and Personal Data

parent b4cdb59a
No related branches found
No related tags found
No related merge requests found
from django.db import models
from ldapdb.models.fields import CharField, IntegerField, ListField
import ldapdb.models
from django.forms import ModelForm
class PasswordResetToken(models.Model):
......@@ -13,11 +14,15 @@ class PasswordResetToken(models.Model):
class LdapUser(ldapdb.models.Model):
base_dn = "ou=user,dc=warpzone,dc=ms"
object_classes = ['posixAccount', 'shadowAccount', 'uidObject', 'account']
base_dn = "ou=people,dc=warpzone,dc=ms"
object_classes = ['person', 'organizationalPerson', 'inetOrgPerson']
uid = CharField(db_column='uid', unique=True, primary_key=True)
first_name = CharField(db_column='givenName', max_length=200)
last_name = CharField(db_column='sn', max_length=200)
email = CharField(db_column='description', max_length=200)
cn = CharField(db_column='cn', max_length=200)
def __str__(self):
return self.uid
......@@ -26,6 +31,12 @@ class LdapUser(ldapdb.models.Model):
return self.uid
class LdapUserForm(ModelForm):
class Meta:
model = LdapUser
fields = ['first_name', 'last_name', 'email']
class LdapGroup(ldapdb.models.Model):
base_dn = "ou=groups,dc=nodomain,dc=org"
object_classes = ['posixGroup']
......
......@@ -2,22 +2,25 @@
{% load i18n %}
{% block content %}
<form class="form-signin" style="max-width: 330px; margin: 0 auto; padding: 40px">
{% csrf_token %}
<h2 class="form-signin-heading">{% trans "Please sign in" %}</h2>
<label for="inputUser">{% trans "Username" %}</label>
<input name="username" type="user" id="inputUser" class="form-control" placeholder="{% trans "Username" %}" required autofocus>
<label for="inputPassword" style="padding-top:10px;">{% trans "Password" %}</label>
<input name="password" type="password" id="inputPassword" class="form-control" placeholder="{% trans "Password" %}" required>
{% if fail == True %}
<div class="alert alert-warning alert-dismissible" role="alert">
<strong>{% trans "Invalid email or password." %}</strong>
</div>
{% else %}
<br>
{% endif %}
<button class="btn btn-lg btn-primary btn-block" type="submit" formmethod="post" class="btn btn-default">{% trans "Sign in" %}</button>
<a class="btn" href="/reset_password">{% trans "Forgot Password?" %}</a>
</form>
<form class="form-signin" style="max-width: 330px; margin: 0 auto; padding: 40px">
{% csrf_token %}
<h2 class="form-signin-heading">{% trans "Please sign in" %}</h2>
<label for="inputUser">{% trans "Username" %}</label>
<input name="username" type="user" id="inputUser" class="form-control" placeholder="{% trans "Username" %}" required autofocus>
<label for="inputPassword" style="padding-top:10px;">{% trans "Password" %}</label>
<input name="password" type="password" id="inputPassword" class="form-control" placeholder="{% trans "Password" %}" required>
{% if fail == True %}
<div class="alert alert-warning alert-dismissible" role="alert">
<strong>{% trans "Invalid email or password." %}</strong>
</div>
{% else %}
<br>
{% endif %}
<button class="btn btn-lg btn-primary btn-block" type="submit" formmethod="post" class="btn btn-default">{% trans "Sign in" %}</button>
<a class="btn" href="/reset_password">{% trans "Forgot Password?" %}</a><br>
<a class="btn" href="/register">{% trans "Register" %}</a>
</form>
{% endblock %}
{% load i18n %}
{% load bootstrap %}
<div>
<br/>
<p class="lead">{% trans "Groups" %}</p><p />
<div class="panel panel-default">
<div class="panel-body">
<form class="form-horizontal" action="/profile/change_information/" method="POST" role="form">
{{ ldap_user_form | bootstrap_horizontal }}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
{% csrf_token %}
<button style="float: left" type="submit" formmethod="post" class="btn btn-primary">{% trans "Submit" %}</button>
</div>
</div>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
<table class="table">
......
{% extends "base.html" %}
{% load i18n %}
{% block content %}
{% if success %}
<div class="alert alert-success">
{% blocktrans %}
User successfully created. Please wait for your activation.
{% endblocktrans %}
</div>
<br>
<a class="btn" href="/">{% trans "Back" %}</a>
{% else %}
<form class="form" style="max-width: 330px; margin: 0 auto; padding: 40px">
{% csrf_token %}
<h2 class="form">{% trans "Please register" %}</h2>
{% if error %}
<div class="alert alert-warning alert-dismissible" role="alert">
<strong>
{% if error == "username_not_available" %}
{% trans "This username is not available" %}
{% elif error == "passwords_did_not_match" %}
{% trans "The passwords did not match" %}
{% elif error == "invalid_email" %}
{% trans "The Email adress is invalid." %}
{% elif error == "fill_all_fields" %}
{% trans "Please fill all fields." %}
{% endif %}
</strong>
</div>
{% else %}
<br>
{% endif %}
<label for="inputUser">{% trans "Username" %}</label>
<input name="username" type="user" id="inputUser" class="form-control" placeholder="{% trans "Username" %}" required autofocus><br>
<label for="inputUser">{% trans "Email" %}</label>
<input name="email" type="email" id="inputEmail" class="form-control" placeholder="{% trans "Email" %}" required><br>
<label for="inputPassword">{% trans "Password" %}</label>
<input name="password" type="password" id="inputPassword" class="form-control" placeholder="{% trans "Password" %}" required><br>
<label for="inputPassword2">{% trans "Confirm" %}</label>
<input name="password2" type="password" id="inputPassword2" class="form-control" placeholder="{% trans "Confirm" %}" required><br>
<button class="btn btn-lg btn-primary btn-block" type="submit" formmethod="post" class="btn btn-default">{% trans "Register" %}</button>
</form>
{% endif %}
{% endblock %}
from django.conf.urls import url
from warpauth.views import main, login, reset_password, profile
from warpauth.views.admin import dashboard
from warpauth.views import login, reset_password, profile, register
#
# Definition of all available URLS for accessing Functions integrated in WarpAuth
#
......@@ -10,11 +10,14 @@ urlpatterns = [
# Authentication Pages
url(r'^login/$', login.login_view, name='index'),
url(r'^logout/$', login.logout_view, name='index'),
url(r'^register/$', register.register, name='index'),
url(r'^reset_password/$', reset_password.gen_token, name='index'),
url(r'^reset_password/(?P<reset_hash>\w+)/$', reset_password.change_password, name='index'),
url(r'^profile/$', profile.index, name='index'),
url(r'^profile/change_password/$', profile.change_password, name='change_password'),
url(r'^profile/change_information/$', profile.change_information, name='change_information'),
]
......@@ -33,5 +33,3 @@ def login_view(request):
def logout_view(request):
logout(request)
return redirect('/login/')
from django.core.exceptions import ValidationError
from django import forms
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotAllowed, HttpResponseNotFound
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
from warpauth.ldap_connector import LDAPConnector
from warpauth.models import LdapUser
from warpauth.models import LdapUser, LdapUserForm
from warpauth.util import *
......@@ -17,16 +19,51 @@ def index(request):
pages["error"] = ""
pages["success"] = False
pages['ldap_groups'] = request.user.ldap_user.group_names
pages['ldap_user_form'] = LdapUserForm(instance=LdapUser.objects.get(uid=str(request.user)))
return HttpResponse(render(request, 'warpauth/profile.html', pages))
@login_required(login_url='/login/', redirect_field_name=None)
def change_information(request):
pages["error"] = ""
if request.method != 'POST':
return redirect("/profile")
user = LdapUser.objects.get(uid=str(request.user))
first_name = request.POST["first_name"]
last_name = request.POST["last_name"]
email = request.POST["email"]
f = forms.EmailField()
try:
f.clean(email)
except ValidationError as e:
pages["error"] = "Invalid Email"
return redirect("/profile")
cn = first_name + " " + last_name
cn = cn.strip()
if first_name == "":
first_name = "None"
if last_name == "":
last_name = "None"
if cn == "":
cn = "None"
user.first_name = first_name
user.last_name = last_name
user.cn = cn
user.email = email
user.save()
return redirect("/profile")
@login_required(login_url='/login/', redirect_field_name=None)
def change_password(request):
pages["error"] = ""
pages["success"] = False
if request.method != 'POST':
redirect("/")
return redirect("/")
if "old_pw" not in request.POST or "new_pw" not in request.POST or "new_pw_confirm" not in request.POST:
pages["error"] = "Please fill in all fields"
......
from django.core.exceptions import ValidationError
from django import forms
from django.shortcuts import render
from django.http import HttpResponse
from warpauth.ldap_connector import LDAPConnector
from warpauth.models import LdapUser
from warpauth.util import *
def register(request):
pages['success'] = False
pages['error'] = False
if request.method == "POST":
print(request.POST)
username = request.POST['username']
password = request.POST['password']
password2 = request.POST['password2']
email = request.POST['email']
f = forms.EmailField()
try:
f.clean(email)
except ValidationError as e:
pages["error"] = "invalid_email"
if username == "" or email == "" or password == "" or password2 == "":
pages['error'] = "fill_all_fields"
elif password != password2:
pages['error'] = "passwords_did_not_match"
elif not pages["error"]:
u = LdapUser.objects.filter(uid=username)
if u.count() == 0:
user = LdapUser()
user.uid = username
user.first_name = "None"
user.last_name = "None"
user.cn = "None"
user.email = email
user.save()
ldap_connector = LDAPConnector()
ldap_connector.change_user_password(user.build_dn(), None, request.POST["password"], True)
pages['success'] = True
else:
pages['error'] = "username_not_available"
return HttpResponse(render(request, 'warpauth/register.html', pages))
......@@ -103,7 +103,6 @@ DATABASES = {
},
'ldap': {
'ENGINE': 'ldapdb.backends.ldap',
#'NAME': 'ldap://s1.dyhost.de/',
'NAME': 'ldap://ldap/',
'USER': 'cn=admin,dc=warpzone,dc=ms',
'PASSWORD': '12345',
......
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