Skip to content

Implement account deletion for users (soft delete) #21

@aolguin89

Description

@aolguin89

User Story

As a user
I want to delete my account
So that I can remove my data from the platform if I no longer need it

Description

Allow users to deactivate their own accounts (soft delete by setting is_active = false).

Prerequisites

  • User model and DAO already exist
  • Profile page implemented (optional but recommended)

Tasks

Servlet

  • Create DeleteAccountServlet.java in controller/ package
  • Handle GET: display confirmation page
  • Handle POST: process account deletion
  • Validate: user owns the account (session user ID matches)
  • Set is_active = false instead of hard delete
  • Destroy session after deletion
  • Redirect to index with goodbye message
  • Configure servlet mapping (/delete-account)

Views

  • Create delete-account-confirm.jsp in /WEB-INF/views/
  • Use layout includes
  • Warning message explaining consequences:
    • Account will be deactivated
    • Cannot login again
    • Data preserved but inaccessible
    • Contact admin for reactivation
  • Confirmation button (red, prominent)
  • Cancel button (back to profile)

Profile Page Update

  • Add "Delete Account" button in danger zone section
  • Button links to confirmation page

Acceptance Criteria

  • User sees clear warning before deletion
  • Deletion sets is_active = false (soft delete)
  • User cannot login after deletion
  • Session destroyed after deletion
  • Redirect to index with message
  • Data remains in database (not hard deleted)
  • Enrollments and attempts preserved (for data integrity)

Metadata

Metadata

Assignees

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions