2026-01-10 01:04:21 +05:30
|
|
|
from flask import Blueprint, render_template, request, redirect, url_for, flash, session
|
|
|
|
|
from app.services.user_service import UserService
|
2025-12-11 10:16:43 +05:30
|
|
|
|
2026-01-10 01:04:21 +05:30
|
|
|
auth_bp = Blueprint("auth", __name__)
|
2025-12-11 10:16:43 +05:30
|
|
|
|
2026-01-10 01:04:21 +05:30
|
|
|
@auth_bp.route("/", methods=["GET", "POST"])
|
2025-12-11 10:16:43 +05:30
|
|
|
@auth_bp.route("/login", methods=["GET", "POST"])
|
|
|
|
|
def login():
|
|
|
|
|
if request.method == "POST":
|
2026-01-10 01:04:21 +05:30
|
|
|
email = request.form.get("email")
|
|
|
|
|
password = request.form.get("password")
|
|
|
|
|
|
|
|
|
|
user = UserService.validate_login(email, password)
|
2025-12-11 10:16:43 +05:30
|
|
|
if user:
|
|
|
|
|
session["user_id"] = user.id
|
2026-01-10 01:04:21 +05:30
|
|
|
session["user_name"] = user.name
|
|
|
|
|
flash("Login successful", "success")
|
|
|
|
|
return redirect(url_for("dashboard.dashboard"))
|
2025-12-11 10:16:43 +05:30
|
|
|
|
2026-01-10 01:04:21 +05:30
|
|
|
flash("Invalid email or password", "danger")
|
|
|
|
|
|
|
|
|
|
return render_template("login.html", title="Login")
|
2025-12-11 10:16:43 +05:30
|
|
|
|
|
|
|
|
@auth_bp.route("/logout")
|
|
|
|
|
def logout():
|
|
|
|
|
session.clear()
|
2026-01-10 01:04:21 +05:30
|
|
|
flash("Logged out successfully", "info")
|
|
|
|
|
return redirect(url_for("auth.login"))
|
|
|
|
|
|
|
|
|
|
@auth_bp.route("/register", methods=["GET", "POST"])
|
|
|
|
|
def register():
|
|
|
|
|
if request.method == "POST":
|
|
|
|
|
name = request.form.get("name")
|
|
|
|
|
email = request.form.get("email")
|
|
|
|
|
password = request.form.get("password")
|
|
|
|
|
|
|
|
|
|
user = UserService.register_user(name, email, password)
|
|
|
|
|
if not user:
|
|
|
|
|
flash("Email already exists", "danger")
|
|
|
|
|
return redirect(url_for("auth.register"))
|
|
|
|
|
|
|
|
|
|
flash("User registered successfully", "success")
|
|
|
|
|
return redirect(url_for("auth.login"))
|
|
|
|
|
|
|
|
|
|
return render_template("register.html", title="Register")
|