Add LDAP Aunthentication

This commit is contained in:
2026-08-06 18:17:33 +05:30
parent e7805b71a8
commit b380ed510b
11 changed files with 169 additions and 225 deletions

View File

@@ -1,98 +1,49 @@
from flask import (Blueprint, render_template, request, redirect, url_for, flash, session, current_app)
from flask import Blueprint, render_template, request, redirect, url_for, flash, session
from app.services.user_service import UserService
from app.constants.messages import SuccessMessage, ErrorMessage
from app.constants.http_status import HTTPStatus
auth_bp = Blueprint("auth", __name__)
# ==========================
# LOGIN
# ==========================
@auth_bp.route("/login", methods=["GET", "POST"])
def login():
if session.get("user_id"):
current_app.logger.info("User already logged in.")
return redirect(url_for("dashboard.dashboard"))
if request.method == "POST":
email = request.form.get("email")
password = request.form.get("password")
try:
email = request.form.get("email", "").strip()
password = request.form.get("password", "")
user = UserService.validate_login(email, password)
if user:
session["user_id"] = user.id
session["user_name"] = user.name
session["user_email"] = user.email
flash("Login successful", "success")
return redirect(url_for("dashboard.dashboard"))
if not email or not password:
flash(ErrorMessage.INVALID_REQUEST, "danger")
current_app.logger.warning("Login failed. Email or password missing.")
return render_template("login.html", title="Login")
user = UserService.validate_login(email, password)
if user:
session.clear()
session["user_id"] = user.id
session["user_name"] = user.name
session["email"] = user.email
session.permanent = True
current_app.logger.info(f"Login successful. User={user.name}")
flash(SuccessMessage.LOGIN, "success")
return redirect(url_for("dashboard.dashboard"))
current_app.logger.warning(f"Invalid login attempt. Email={email}")
flash(ErrorMessage.LOGIN_FAILED,"danger")
except Exception as e:
current_app.logger.exception("Login Error" )
flash(ErrorMessage.INTERNAL_SERVER_ERROR,"danger")
flash("Invalid email or password", "danger")
return render_template("login.html", title="Login")
# ==========================
# LOGOUT
# ==========================
@auth_bp.route("/logout")
def logout():
username = session.get("user_name", "Unknown")
session.clear()
current_app.logger.info(f"Logout successful. User={username}")
flash(SuccessMessage.LOGOUT,"info")
flash("Logged out successfully", "info")
return redirect(url_for("auth.login"))
# ==========================
# REGISTER
# ==========================
@auth_bp.route("/register", methods=["GET", "POST"])
def register():
if request.method == "POST":
try:
name = request.form.get("name", "").strip()
email = request.form.get("email", "").strip()
password = request.form.get("password", "")
name = request.form.get("name")
email = request.form.get("email")
password = request.form.get("password")
if not name or not email or not password:
flash(ErrorMessage.INVALID_REQUEST,"danger")
return redirect(url_for("auth.register"))
user = UserService.register_user(name, email, password)
if not user:
flash("Email already exists", "danger")
return redirect(url_for("auth.register"))
user = UserService.register_user(name, email, password)
flash("User registered successfully", "success")
return redirect(url_for("auth.login"))
if not user:
current_app.logger.warning(f"Duplicate Registration: {email}")
flash(ErrorMessage.DUPLICATE_ENTRY,"danger")
return redirect(url_for("auth.register"))
current_app.logger.info(f"New user registered: {email}")
flash(SuccessMessage.CREATED,"success")
return redirect(url_for("auth.login"))
except Exception:
current_app.logger.exception("User Registration Failed" )
flash(ErrorMessage.INTERNAL_SERVER_ERROR,"danger")
return render_template("register.html",title="Register")
return render_template("register.html", title="Register")