With Database

Flow Diagram

Start

sequenceDiagram
  participant User
  participant Browser
  participant Server
  participant Database

  User->>Browser: Register (Name, Email, Password, Role)
  Browser->>Server: POST /register
  Server->>Database: Check Email
  alt Exists
    Server-->>Browser: Error
  else Not Exists
    Server->>Database: Insert User
    Server-->>Browser: Success
  end

  User->>Browser: Login (Email, Password)
  Browser->>Server: POST /login
  Server->>Database: Find User
  alt Invalid
    Server-->>Browser: Error
  else Valid
    Server->>Server: Set Session
    Server-->>Browser: Set-Cookie & Welcome
  end

  Browser->>Server: GET /
  Server->>Database: Get User
  Server-->>Browser: Personalized Page

  User->>Browser: Logout
  Browser->>Server: GET /logout
  Server->>Server: Clear Session
  Server-->>Browser: Redirect & Logout Msg
sequenceDiagram
  participant User
  participant Browser
  participant Server
  participant Database
	 User->>Browser: Enter (Name, Email, Password, Role)
	 Browser->>Server: POST /register (Name, Email, Password, Role)
     Server->>Database: Query: Check if Email Exists
     Database-->>Server: Result: Email Exists?
     alt Email Exists
	 Server-->>Browser: Flash: "Email already registered."
	 Browser->>User: Displays Error
     else Email Does Not Exist
	 Server->>Server: Hash Password
	 Server->>Database: Insert New User (Name, Hashed Password, Email, Role)
	 Database-->>Server: Confirmation of User Creation
	 Server-->>Browser: Flash: "Registration successful!"
	 Browser->>User: Displays Success Message
     end

     User->>Browser: Enters Login Credentials (Email, Password)
     Browser->>Server: POST /login (Email, Password)
     Server->>Database: Query: Find User by Email
     Database-->>Server: Result: User Data (Hashed Password, Role, Name)
     alt User Not Found or Invalid Password
         Server->>Server: Check Password Hash (fails)
         Server-->>Browser: Flash: "Invalid credentials."
         Browser->>User: Displays Error
     else User Found and Password Valid
         Server->>Server: Check Password Hash (succeeds)
         Server->>Server: Store User Email in Session
         Server-->>Browser: HTTP/1.1 200 OK (or 302 Redirect)
         Server-->>Browser: Set-Cookie: session patheq fs and HttpOnly
         Browser->>Browser: Stores Session Cookie
         Server-->>Browser: Flash: "Welcome, [User Name]!"
         Browser->>User: Displays Welcome Message

         Browser->>Server: GET / (with session cookie)
         Server->>Server: Retrieve Email from Session
         Server->>Database: Query: Find User by Email
         Database-->>Server: Result: User Data
         Server-->>Browser: Render Personalized Page (e.g., Welcome, [User Name]!)
         Browser->>User: Displays Personalized Content
     end

     User->>Browser: Clicks Logout
     Browser->>Server: GET /logout
     Server->>Server: Clear Session (remove email)
     Server-->>Browser: HTTP/1.1 302 Redirect to /
     Server-->>Browser: Flash: "You have been logged out."
     Browser->>User: Displays Logout Message and Login/Register Forms

Working