Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/roshan-khandagale/exam-portal
The Exam Portal is an Authenticated System created in Django Framework. This System is based on MVT architecture.
https://github.com/roshan-khandagale/exam-portal
authenticated-system class-based-views django-framework exam-portal mail-based-functionality mvt-architecture
Last synced: about 1 month ago
JSON representation
The Exam Portal is an Authenticated System created in Django Framework. This System is based on MVT architecture.
- Host: GitHub
- URL: https://github.com/roshan-khandagale/exam-portal
- Owner: ROSHAN-KHANDAGALE
- Created: 2024-11-17T17:51:38.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-11-22T06:20:17.000Z (about 1 month ago)
- Last Synced: 2024-11-22T07:21:59.592Z (about 1 month ago)
- Topics: authenticated-system, class-based-views, django-framework, exam-portal, mail-based-functionality, mvt-architecture
- Language: HTML
- Homepage:
- Size: 26.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Django Authentication System with Reset Password Functionality
This project is a Django-based authentication system that provides essential features like login, registration, password reset via email, and user logout. It also includes validation for forms and displays user-friendly messages for success and error cases.
---
## Features
### 1. **User Authentication**
- Login using a username or email with password authentication.
- Logout functionality to securely end a session.### 2. **User Registration**
- Create a new account with a first name, last name, username, email, and password.
- Validates form inputs and enforces a minimum password length of 8 characters.
- Prevents duplicate usernames and emails.### 3. **Forgot Password**
- Allows users to request a password reset link by entering their registered email address.
- Generates a unique reset ID (UUID) and expiration time (5 minutes).
- Sends a reset email with a secure link to reset the password.### 4. **Password Reset**
- Verifies the reset link (UUID) for validity and checks if it has expired.
- Lets users set a new password, ensuring confirmation matches.### 5. **Home Page**
- A protected view accessible only to logged-in users.
### 6. **Validation and Messaging**
- Displays form validation errors and success messages using Django's `messages` framework.
- User-friendly error handling for invalid credentials and expired links.### 7. **Admin Panel and Management**
- The Admin Manages the Entire CRUD for Exam Portal enabling them to `edit` `modify` `delete` or `view` the records of the exam system.
- An user friendly Admin UI is provided inorder to manage the task easily.---
## Installation
### Prerequisites
- Python 3.8+
- Django 4.0+
- PostgreSQL or SQLite (default)### Steps
1. **Clone the repository:**
```
git clone
cd
```2. Install Dependencies
```
pip install -r requirements.txt
```3. Set up the database: Run migrations to initialize the database schema:
```
python manage.py migrate
```4. Create a superuser:
```
python manage.py createsuperuser
```5. Run the server: Start the development server:
```
python manage.py runserver
```6. Access the application: Open your browser and go to:
```
http://127.0.0.1:8000/
```## Usage
### Pages Overview
- Login Page: Located at / (default).
- Registration Page: Available at /signup/.
- Forgot Password Page: Available at /forgot/.
- Reset Password Page: Dynamic URL based on - reset UUID (e.g., /reset//).
- Home Page: Accessible after login at /home/.
- Admin Home - Enables the admin to manage entire operations for exam.(based on super user).
- User Home - Enables the student to view their `scores` `records` and `schedules`.## Environment Variables
Update the `.env` file for sensitive configurations:
```
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER="[email protected]"
EMAIL_HOST_PASSWORD="your-email-password"
SITE_URL=http://127.0.0.1:8000```
## Project Structure
```
project/
├── templates/ # HTML Templates
| |── admin
│ ├── index.html # Login Page
│ ├── signup.html # Registration Page
│ ├── forgot.html # Forgot Password Page
│ ├── reset.html # Reset Password Page
│ ├── home.html # Home Page
├── static/ # Static files (CSS, JS, images)
├── authentication/ # Main app for authentication logic
│ ├── views.py # Core views
│ ├── models.py # Database models (e.g., ResetID)
│ ├── urls.py # URL routing for authentication
├── settings.py # Django settings
└── manage.py # Django management script
```## Key Files and Code
### Models
1. ResetID: Stores UUID, user reference, expiration date, and status for password reset requests.
### Views
- Login: Handles login functionality.
- Signup: Manages user registration and validation.
- Forgot: Sends a reset email with a secure UUID link.
- Reset: Validates UUID and expiry time, and allows password reset.
- Logout: Ends user sessions.
- Home: Displays a protected home page for authenticated users.## Templates
All HTML templates use Bootstrap and custom styling for a responsive and user-friendly UI.
## Validation
- All input fields in forms are validated using HTML attributes and Django backend logic.
- Error and success messages are displayed using Django's `messages` framework.## Author
Your Name
Email: [email protected]