from flask import Flask, render_template, request, redirect, url_for, send_from_directory, flash, jsonify, json from flask_login import LoginManager, UserMixin from logging.handlers import RotatingFileHandler from ldap3 import Server, Connection, ALL, SUBTREE from ldap3 import Server, Connection, ALL from ldap3.core.exceptions import LDAPBindError class DefaultCredentials: username = 'admin' password = 'admin123' class LoginLDAP: def __init__(self, request): self.username = request.form['username'].strip() self.password = request.form['password'] self.isDefaultCredentials = False self.isValidLogin = False self.errorMessage = "" ldap_user_dn = f"uid={self.username},ou=users,dc=lcepl,dc=org" ldap_server = 'ldap://localhost:389' #Need to re-factor further # Static fallback user if self.username == DefaultCredentials.username and self.password == DefaultCredentials.password: self.isDefaultCredentials = True self.isValidLogin = True return try: # LDAP authentication conn = Connection( Server(self.ldap_server, get_info=ALL), user=self.ldap_user_dn, password=self.password, auto_bind=True ) self.isValidLogin = True return except LDAPBindError: self.errorMessage = "Invalid credentials." except Exception as e: self.errorMessage = str(e) class User(UserMixin): def __init__(self, id): self.id = id