A terminal-based authentication system designed to showcase registration, login, and password reset functionality using a CSV-based storage.
- User Authentication: Register, log in, and reset passwords.
- CSV-Based Storage: User data is stored and retrieved from a CSV file.
- Secure: Passwords are hashed before being stored.
- CLI Interface: Clear menu-driven CLI interface to interact with the system.
- Logout Feature: Allow logged-in users to securely log out of the system.
- Password Strength Checker: Enforce users to choose strong passwords during registration or reset.
- Forgot Password Mechanism: Offer a mechanism for users to recover their password if forgotten.
- Delete Account Option: Allow users to delete their account and all associated data.
- Lockout Mechanism: Deter brute-force attempts by locking out after consecutive incorrect password attempts.
- Dart SDK: Ensure you have the Dart SDK installed. If not, get it from here.
-
Clone the repository:
git clone https://github.com/siddhant-vij/Simple-Authentication-System.git
-
Navigate to the project directory and fetch the dependencies:
cd Simple-Authentication-System dart pub get
-
Start the application:
dart run
-
Follow the on-screen instructions to register, log in, and reset passwords if needed. User data will be stored in a
users.csv
file within the project directory.
This project comes with unit tests. To run them:
dart test
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch:
git checkout -b feature/AmazingFeature
- Commit your Changes:
git commit -m 'Add some AmazingFeature'
- Push to the Branch:
git push origin feature/AmazingFeature
- Open a Pull Request
Below are some of the potential improvements and added functionalities that can enhance the Simple Authentication System:
1. Session Management: A timeout mechanism that logs out the user after a certain period of inactivity.
2. Audit Log: Maintain a log of all authentication activities for monitoring and security purposes.
3. Multi-Factor Authentication: Introduce an option for users to enable additional security layers for logging in.
4. Backup and Recovery: Design a backup mechanism to safeguard user data and ensure recovery options in case of system failures.
5. Transition to a Relational Database: Migrate from a CSV-based system to a more robust relational database like PostgreSQL or MySQL for better scalability, performance, and security.
6. Database Backup: Implement routine backups of the database to ensure data safety in case of unexpected failures.
7. Data Validation and Sanitization: Enhance the system to validate and sanitize inputs more thoroughly to protect against SQL injection and other potential threats, especially if moving to a more complex database system.
Distributed under the MIT License. See LICENSE
for more information.