diff --git a/web/warpauth/models.py b/web/warpauth/models.py
index 5d7b8d0e5004c9c436c9b09dbf1e40706fc56bd2..0c9646167e9b126ae1bae8f18a068bec7a339845 100644
--- a/web/warpauth/models.py
+++ b/web/warpauth/models.py
@@ -1,6 +1,7 @@
 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']
diff --git a/web/warpauth/templates/warpauth/login.html b/web/warpauth/templates/warpauth/login.html
index 2c0fc07e2d6922bc5bc50d09a37eaab3b3fc3926..55ec5c17108cbb7101684eb0bc44e84b327ea2e8 100644
--- a/web/warpauth/templates/warpauth/login.html
+++ b/web/warpauth/templates/warpauth/login.html
@@ -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 %}
diff --git a/web/warpauth/templates/warpauth/profile/information.html b/web/warpauth/templates/warpauth/profile/information.html
index 99627cefc920787c608f4b352dd2c6eeb8aa2196..438dc5eedb4466bad3776f3120bd2ef69713498f 100644
--- a/web/warpauth/templates/warpauth/profile/information.html
+++ b/web/warpauth/templates/warpauth/profile/information.html
@@ -1,9 +1,22 @@
 {% 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">
diff --git a/web/warpauth/templates/warpauth/register.html b/web/warpauth/templates/warpauth/register.html
new file mode 100644
index 0000000000000000000000000000000000000000..7a75ec939eabaece39407ca5f879605ef2f11481
--- /dev/null
+++ b/web/warpauth/templates/warpauth/register.html
@@ -0,0 +1,47 @@
+{% 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 %}
diff --git a/web/warpauth/urls.py b/web/warpauth/urls.py
index 43e8545b50b843cdd3fb11da4250efcb802feeef..1bec8cad1af8cb8bdb0f001a4e1ab77503667f19 100644
--- a/web/warpauth/urls.py
+++ b/web/warpauth/urls.py
@@ -1,6 +1,6 @@
 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'),
+
 
 ]
diff --git a/web/warpauth/views/login.py b/web/warpauth/views/login.py
index 7bc07bcaa6f2b63501d6a1245f06ca9674c80fad..42841b2ad8c3d02902d704d986195d567b1d3774 100644
--- a/web/warpauth/views/login.py
+++ b/web/warpauth/views/login.py
@@ -33,5 +33,3 @@ def login_view(request):
 def logout_view(request):
     logout(request)
     return redirect('/login/')
-
-
diff --git a/web/warpauth/views/profile.py b/web/warpauth/views/profile.py
index a68bdf7d9dccd19e1edaa5c4ae248d905fe351ea..6dbc13a03ed70e3137328887fdfed99fa8837cc3 100644
--- a/web/warpauth/views/profile.py
+++ b/web/warpauth/views/profile.py
@@ -1,9 +1,11 @@
+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"
diff --git a/web/warpauth/views/register.py b/web/warpauth/views/register.py
new file mode 100644
index 0000000000000000000000000000000000000000..c5d8431e6a0e6ddbe178576cd5660dc123d00d29
--- /dev/null
+++ b/web/warpauth/views/register.py
@@ -0,0 +1,45 @@
+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))
diff --git a/web/warpzone/settings.py b/web/warpzone/settings.py
index fdbc99959f8307a4160a7df9bb2c975e3b53e433..1cc601760c9c7c5aa347b7b5b50b00a0dc77fe33 100644
--- a/web/warpzone/settings.py
+++ b/web/warpzone/settings.py
@@ -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',