diff --git a/server.py b/server.py
index f0b895abf679170dcba5db2b214b10b339394f2c..0253bf98b78d135849f8bb9a5fe681b7b5268601 100755
--- a/server.py
+++ b/server.py
@@ -1,8 +1,10 @@
 #!/bin/python
-from flask import Flask, render_template, g, request, url_for, redirect
+from flask import Flask, render_template, g, request, url_for, redirect, session
 import mysql.connector
 import sqlite3
 import os
+import ldap3
+import re
 
 app = Flask(__name__)
 config = app.config
@@ -71,6 +73,23 @@ def searchquery(text, columns, match, tables, suffix, *suffixparams):
 	expr = 'SELECT *,SUM(_prio) AS _score FROM (%s) AS _tmp %s'%(' UNION '.join(subexprs), suffix)
 	return query(expr, *params, *suffixparams)
 
+LDAP_USERRE = re.compile(r'[^a-z0-9]')
+def ldapauth(user, password):
+	notldap = {'videoag':('videoag', ['users','videoag']), 'gustav':('passwort', ['users'])}
+	user = LDAP_USERRE.sub(r'', user.lower())
+	if 'LDAP_HOST' in config:
+		try:
+			conn = ldap3.Connection(config['LDAP_HOST'], 'uid=%s,ou=users,dc=fsmpi,dc=rwth-aachen,dc=de'%user, password, auto_bind=True)
+			if conn.search("ou=groups,dc=fsmpi,dc=rwth-aachen,dc=de", "(&(cn=*)(memberUid=%s))"%user, attributes=['cn']):
+				groups = [e.cn.value for e in conn.entries]
+			conn.unbind()
+			return user, groups
+		except ldap3.core.exceptions.LDAPBindError:
+			pass
+	elif config.get('DEBUG') and user in notldap and password == notldap[user][0]:
+		return user, notldap[user][1]
+	return None, []
+
 @app.route('/')
 def index():
 	return render_template('index.html', latestvideos=query('''