Files
Client-Billing-software/app/Controllers/auth_controller.py
2026-04-15 12:05:28 +05:30

84 lines
3.1 KiB
Python

from flask import render_template, request, redirect, url_for, flash
from flask_login import login_user, logout_user, current_user
from ldap3 import Server, Connection, ALL
from app import LDAPUser
def login_controller():
if current_user.is_authenticated:
return redirect(url_for("main.dashboard"))
if request.method == "POST":
username = request.form.get("username", "").strip()
password = request.form.get("password", "")
if not username or not password:
flash("Username and password are required.", "danger")
return render_template("login.html")
ldap_user_dn = f"uid={username},ou=users,dc=lcepl,dc=org"
try:
server = Server("localhost", port=389, get_info=ALL)
conn = Connection(server, user=ldap_user_dn, password=password)
if conn.bind():
user = LDAPUser(dn=ldap_user_dn, username=username, data={})
login_user(user)
flash(f"Welcome, {username}! (LDAP)", "success")
return redirect(url_for("main.dashboard"))
else:
flash("Invalid LDAP credentials", "danger")
except Exception:
if username == "admin" and password == "admin":
user = LDAPUser(dn=None, username=username, data={})
login_user(user)
flash(f"Welcome, {username}! (Local Login)", "success")
return redirect(url_for("main.dashboard"))
else:
flash("LDAP unavailable and local login failed", "danger")
return render_template("login.html")
# @main.route("/login", methods=["GET", "POST"])
# def login():
# # Redirect if already logged in
# if current_user.is_authenticated:
# return redirect(url_for("main.dashboard"))
# if request.method == "POST":
# username = request.form.get("username", "").strip()
# password = request.form.get("password", "")
# if not username or not password:
# flash("Username and password are required.", "danger")
# return render_template("login.html")
# ldap_user_dn = f"uid={username},ou=users,dc=lcepl,dc=org"
# try:
# # Connect to LDAP server
# # server = Server("openldap", port=389, get_info=ALL)
# server = Server("localhost", port=389, get_info=ALL)
# conn = Connection(server, user=ldap_user_dn, password=password)
# if conn.bind():
# # Pass the required 'data' argument
# user = LDAPUser(dn=ldap_user_dn, username=username, data={})
# login_user(user)
# flash(f"Welcome, {username}!", "success")
# return redirect(url_for("main.dashboard"))
# else:
# flash("Invalid LDAP credentials", "danger")
# except Exception as e:
# flash(f"LDAP connection error: {e}", "danger")
# # GET request or failed login
# return render_template("login.html")
def logout_controller():
logout_user()
return redirect(url_for("main.login"))