Skip to content

siddhant-vij/Simple-Authentication-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple Authentication System

A terminal-based authentication system designed to showcase registration, login, and password reset functionality using a CSV-based storage.

Table of Contents

  1. Features
  2. Getting Started
  3. Usage
  4. Testing
  5. Contributing
  6. Future Improvements
  7. License
  8. Acknowledgements

Features

  • 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.

Getting Started

Prerequisites

  • Dart SDK: Ensure you have the Dart SDK installed. If not, get it from here.

Installation

  1. Clone the repository:

    git clone https://github.com/siddhant-vij/Simple-Authentication-System.git
  2. Navigate to the project directory and fetch the dependencies:

    cd Simple-Authentication-System
    dart pub get

Usage

  1. Start the application:

    dart run
  2. 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.


Testing

This project comes with unit tests. To run them:

dart test

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch:
    git checkout -b feature/AmazingFeature
  3. Commit your Changes:
    git commit -m 'Add some AmazingFeature'
  4. Push to the Branch:
    git push origin feature/AmazingFeature
  5. Open a Pull Request

Future Improvements

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.


License

Distributed under the MIT License. See LICENSE for more information.


Acknowledgements

About

A terminal-based authentication system designed to showcase registration, login, and password reset functionality using a CSV-based storage.

Topics

Resources

License

Stars

Watchers

Forks

Languages