From af96d375fe7d1a6f20383f6203c0534bdccd48e4 Mon Sep 17 00:00:00 2001 From: Gitea Admin Date: Wed, 26 Apr 2023 19:12:33 +0200 Subject: [PATCH] 'flask_ldap.py' toevoegen --- flask_ldap.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 flask_ldap.py diff --git a/flask_ldap.py b/flask_ldap.py new file mode 100644 index 0000000..6a13c5f --- /dev/null +++ b/flask_ldap.py @@ -0,0 +1,51 @@ +from flask import Flask, render_template, request, redirect, session +from ldap3 import Server, Connection, ALL + +app = Flask(__name__) +app.secret_key = 'replace_with_a_random_secret_key' + +# LDAP server configuration +LDAP_SERVER = 'ipa.example.com' +LDAP_PORT = 389 +LDAP_BASE_DN = 'cn=users,cn=accounts,dc=example,dc=com' + +@app.route('/') +def home(): + return render_template('home.html') + +@app.route('/login', methods=['GET', 'POST']) +def login(): + if request.method == 'POST': + username = request.form['username'] + password = request.form['password'] + if authenticate(username, password): + session['username'] = username + return redirect('/dashboard') + else: + return render_template('login.html', error='Invalid credentials') + else: + return render_template('login.html') + +@app.route('/dashboard') +def dashboard(): + if 'username' in session: + return render_template('dashboard.html', username=session['username']) + else: + return redirect('/login') + +@app.route('/logout') +def logout(): + session.pop('username', None) + return redirect('/') + +def authenticate(username, password): + try: + server = Server(LDAP_SERVER, port=LDAP_PORT, get_info=ALL) + conn = Connection(server, f'uid={username},{LDAP_BASE_DN}', password) + conn.bind() + return True + except: + return False + +if __name__ == '__main__': + app.run(debug=True)