Fixed typos and bugs, running okay on testenv
This commit is contained in:
parent
09f7d42de4
commit
789b6e4ecf
8 changed files with 56 additions and 21 deletions
|
@ -96,10 +96,10 @@ MIDDLEWARE = [
|
|||
|
||||
# Backend for auth
|
||||
|
||||
#AUTHENTICATION_BACKENDS = (
|
||||
# 'django_auth_ldap.backend.LDAPBackend',
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
'django_auth_ldap.backend.LDAPBackend',
|
||||
# 'django.contrib.auth.backends.ModelBackend',
|
||||
#)
|
||||
)
|
||||
|
||||
|
||||
ROOT_URLCONF = 'dal.urls'
|
||||
|
|
7
dal/dal/templates/changedpassword.html
Normal file
7
dal/dal/templates/changedpassword.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
<title> Password for {{user}} changed. </title>
|
||||
|
||||
<h2> The password for {{user}} has been changed. </h2>
|
||||
<br><br>
|
||||
<form action={% url 'index' %} method="get">
|
||||
<input type="submit" value="Back to indexpage">
|
||||
</form>
|
|
@ -8,6 +8,7 @@
|
|||
<br><br>
|
||||
To delete an account, please type the username and password below:
|
||||
<form action={% url 'account_delete' %} method="post">
|
||||
{% csrf_token %}
|
||||
<br><br>Username:<br>
|
||||
<input type="text" name="username" id="username">
|
||||
<br><br>Password:<br>
|
||||
|
|
7
dal/dal/templates/usercreated.html
Normal file
7
dal/dal/templates/usercreated.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
<title> User {{ user }} created. </title>
|
||||
|
||||
<h2> User {{ user }} was successfully created. </h2>
|
||||
<br><br>
|
||||
<form action={% url 'index' %} method="get">
|
||||
<input type="submit" value="Back to Indexpage">
|
||||
</form>
|
|
@ -19,3 +19,6 @@ You have the following options:
|
|||
<form action={% url 'account_delete' %} method="get">
|
||||
<input type="submit" value="Delete your account">
|
||||
</form>
|
||||
<form action={% url 'logout' %} method="get">
|
||||
<input type="submit" value="Logout">
|
||||
</form>
|
||||
|
|
|
@ -18,7 +18,7 @@ from django.urls import path
|
|||
from django.conf.urls import url
|
||||
from django.contrib import admin
|
||||
|
||||
from .views import Register, ChangeData, ChangePassword, ResetPassword, DeleteAccount, Index
|
||||
from .views import Register, ChangeData, ChangePassword, ResetPassword, DeleteAccount, Index, LogOut
|
||||
|
||||
urlpatterns = [
|
||||
# path('admin/', admin.site.urls),
|
||||
|
@ -28,4 +28,5 @@ urlpatterns = [
|
|||
path('changepassword/', ChangePassword.as_view(), name="change_password"),
|
||||
path('deleteaccount/', DeleteAccount.as_view(), name="account_delete"),
|
||||
path('index/', Index.as_view(), name="index"),
|
||||
path('logout/', LogOut.as_view(), name="logout"),
|
||||
]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django.shortcuts import render
|
||||
from django.views.generic import View
|
||||
from django.contrib.auth import authenticate, login
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from django.contrib.auth.models import User
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.core.validators import validate_email, ValidationError
|
||||
|
@ -106,13 +106,13 @@ class ChangeData(View):
|
|||
login(request, user)
|
||||
# get basic data (firstname, lastname, email)
|
||||
with get_pool().next() as rpc:
|
||||
(state, firstname, lastname, email) = rpc.getuserdata.get_data(user)
|
||||
(state, firstname, lastname, email) = rpc.getuserdata.get_data(str(request.user))
|
||||
# If it throws an error, the errormessage gets put into firstname.. not great naming, but works best this way
|
||||
if state == "error":
|
||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': firstname } )
|
||||
# The template puts the old data as standard in the fields
|
||||
else:
|
||||
return render(request, 'changeuserdata.html', { 'user': user, 'firstname': firstname, 'lastname': lastname, 'email': email } )
|
||||
return render(request, 'changeuserdata.html', { 'user': str(request.user), 'firstname': firstname, 'lastname': lastname, 'email': email } )
|
||||
|
||||
# get the change request
|
||||
def post(self, request):
|
||||
|
@ -123,7 +123,7 @@ class ChangeData(View):
|
|||
if not request.user.is_authenticated:
|
||||
return render(request, 'mustbeloggedin.html')
|
||||
|
||||
user = request.user
|
||||
user = str(request.user)
|
||||
firstname = request.POST.get('firstname')
|
||||
lastname = request.POST.get('lastname')
|
||||
email = request.POST.get('email')
|
||||
|
@ -199,7 +199,7 @@ class ChangePassword(View):
|
|||
return render(request, 'mustbeloggedin.html')
|
||||
login(request, request.user)
|
||||
|
||||
user = request.user
|
||||
user = str(request.user)
|
||||
oldpassword = request.POST.get('oldpassword')
|
||||
check = authenticate(request, username=user, password=oldpassword)
|
||||
# Is the right password for the user supplied?
|
||||
|
@ -249,12 +249,18 @@ class DeleteAccount(View):
|
|||
|
||||
# Try to delete the user
|
||||
with get_pool().next() as rpc:
|
||||
result = rpc.deleteuser.delete_user(user)
|
||||
result = rpc.deleteuser.delete_user(username)
|
||||
# User deleted
|
||||
if result == True:
|
||||
logout(request)
|
||||
return render(request, 'deleteduser.html', { 'user': username } )
|
||||
# User not deleted, got some kind of error
|
||||
else:
|
||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': result } )
|
||||
|
||||
|
||||
class LogOut(View):
|
||||
|
||||
def get(self, request):
|
||||
logout(request)
|
||||
return HttpResponse("You have been logged out.", status=200)
|
||||
|
|
|
@ -44,11 +44,18 @@ def ldapservers():
|
|||
def user_or_customer(uid):
|
||||
server = ldapservers()
|
||||
conn = Connection(server)
|
||||
if conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid):
|
||||
conn.bind()
|
||||
search_customers = conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid)
|
||||
# if conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid):
|
||||
if search_customers:
|
||||
conn.unbind()
|
||||
return '%s,ou=customers,dc=ungleich,dc=ch' % uid
|
||||
elif conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid):
|
||||
search_users = conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid)
|
||||
# elif conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % uid):
|
||||
if search_users:
|
||||
conn.unbind()
|
||||
return '%s,ou=customers,dc=ungleich,dc=ch' % uid
|
||||
else:
|
||||
conn.unbind()
|
||||
return False
|
||||
|
||||
|
||||
|
@ -72,7 +79,7 @@ class UserLookUp(object):
|
|||
#if conn.search('ou=customers,dc=ungleich,dc=ch', '(%s)' % LDAP_UID) or conn.search('ou=users,dc=ungleich,dc=ch', '(%s)' % LPAD_UID):
|
||||
if x or y:
|
||||
# return conn.entries[0] for first search result since we can assume uid is unique
|
||||
self.dispatch('ldap', '%s [Info: UserLookUp] Searched for %s and found it: %s\n' % (datetime.now(), LDAP_UID, str(conn.entries[0])) )
|
||||
self.dispatch('ldap', '%s [Info: UserLookUp] Searched for %s and found it\n' % (datetime.now(), LDAP_UID) )
|
||||
conn.unbind()
|
||||
# return True since the user is already in LDAP
|
||||
return True
|
||||
|
@ -132,7 +139,8 @@ class GetUserData(object):
|
|||
LDAP_UID = 'uid=%s' % user
|
||||
server = ldapservers()
|
||||
conn = Connection(server)
|
||||
if not conn.bind():
|
||||
conn.bind()
|
||||
if not conn.bound:
|
||||
self.dispatch('ldap', '%s [Error GetUserData] Could not connect to LDAP server.\n' % datetime.now() )
|
||||
return ("error", "Could not connect to LDAP server.", "", "")
|
||||
rdn = user_or_customer(LDAP_UID)
|
||||
|
@ -234,7 +242,7 @@ class ChangePassword(object):
|
|||
|
||||
@rpc
|
||||
def change_password(self, user, newpassword):
|
||||
LDAP_UID = 'uid=%s'
|
||||
LDAP_UID = 'uid=%s' % user
|
||||
server = ldapservers()
|
||||
conn = Connection(server, config['LDAP']['LDAPMANAGER'], config['LDAP']['LDAPMANAGERPASSWORD'])
|
||||
if not conn.bind():
|
||||
|
@ -277,10 +285,11 @@ class DeleteUser(object):
|
|||
|
||||
@rpc
|
||||
def delete_user(self, user):
|
||||
LDAP_UID = user
|
||||
LDAP_UID = 'uid=%s' % user
|
||||
server = ldapservers()
|
||||
conn = Connection(server, config['LDAP']['LDAPMANAGER'], config['LDAP']['LDAPMANAGERPASSWORD'])
|
||||
if not conn.bind():
|
||||
conn.bind()
|
||||
if not conn.bound:
|
||||
self.dispatch('ldap', '%s [Error DeleteUser] Could not connect to LDAP server.\n' % datetime.now() )
|
||||
return "Could not connect to LDAP server."
|
||||
# again, check whether the uid= is in ou=users or ou=customers
|
||||
|
@ -290,7 +299,8 @@ class DeleteUser(object):
|
|||
self.dispatch('ldap', '%s [Error DeleteUser] Could not find the user %s\n' % (datetime.now(), LDAP_UID) )
|
||||
return "Could not find the user."
|
||||
# Check if the delete was successfull
|
||||
if not conn.delete(dn):
|
||||
deleted = conn.delete(dn)
|
||||
if not deleted:
|
||||
conn.unbind()
|
||||
self.dispatch('ldap', '%s [Error DeleteUser] Could not delete %s\n' % (datetime.now(), dn) )
|
||||
return "Could not delete the user."
|
||||
|
|
Loading…
Reference in a new issue