bitcoin-sv / bsv-faucet

https://bsvfaucet.org
MIT License
1 stars 12 forks source link

A01 User: Register/Login #11

Closed mo-jaber closed 1 month ago

mo-jaber commented 1 month ago

Description: Users can sign up and sign in using email & password or via GitHub authentication

The database structure at this point is critical, need to factor in all the data points at the beginning.

There is also another role type (admin role = 2) that will provide a slightly different view and more functions in the platform.


Acceptance criteria

od-hunter commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

Hi, can I be assigned this please? I am an experienced blockchain devloper and I’d love to be given the opportunity to proof my skill.

How I plan on tackling this issue

To solve this, I’ll take the following steps:

  1. First of all, I’ll set up the database, that is I’ll create a users table with fields like name, email, password_hash, role (default: 1 for regular users, 2 for admins), created_at, ip_address, and github_id.

  2. I’ll then collect name, email, and password, hash the password, and store user data with role = 1. I’ll also validate user credentials by comparing password hashes and initiate a session.

  3. I’ll use OAuth 2.0 for GitHub login. If it's a new user, it’ll store their GitHub ID, and create an account. And for existing users, it’ll authenticate using their GitHub ID.

  4. Regular users which is role = 1, will get basic access. Admins which is role = 2, will get advanced functionality. I’;; also implement role-based access control (RBAC) to differentiate platform views and functions based on user roles.

  5. I’ll use ‘bcrypt’ for password hashing. I’ll handle properly OAuth tokens for GitHub authentication and manage sessions with JWT or session-based authentication.

  6. Next, I’ll create forms for registration (name, email, password) and login, with the option to authenticate via GitHub.

  7. Lastly, I’ll write unit and integration tests to validate user sign-up, login, role assignment, and OAuth flows.

Please assign me, I’m ready to put in the work. Here is my profile

0xdevcollins commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

My name is Collins Ikechukwu. I'm a full stack blockchain developer developer.

How I plan on tackling this issue

To implement this feature, I would first set up a registration system that allows users to sign up using either email & password or GitHub authentication. For new sign-ups, users will be prompted to provide basic information like Name, Email, and Password. Upon successful registration, each user will automatically be assigned role = 1 (user).

I’ll ensure that critical metadata, such as userid, date of registration, and IP address, is captured and stored in the database during sign-up. Designing the database structure with scalability in mind is essential, so I’ll include fields for user roles, authentication type, and other relevant user data. This will ensure we can track all key information from the start, facilitating potential future expansions or updates.

For admins (role = 2), I’ll create a slightly different view with elevated permissions, allowing them to manage users and platform operations. This separation of roles will be enforced throughout the platform, with the role data being a key part of access control logic in the system.

Jayse007 commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I would like to claim this job, to be delivered by 30, December, 2024. I have experience in backend development with the use of Django in Python. I have also worked with databases like postgresql, sqlite. Although my expertise lies in backend, this doesn't mean I have little knowledge in frontend. I have a very good understanding as to how the frontend and backend communicate with one another.

How I plan on tackling this issue

I would make use of an ORM (Object Relation Mapper) to create a database schema to be able to seemlessly process the data that would be collected through a frontend form. The ORM will easily handle the way the database will process the information.

SudiptaPaul-31 commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

Hi, I am Sudipta Paul, and I have 1.5 years of experience in the field of blockchain and web development. I specialize in backend development, user authentication systems, and database architecture, and I’d love to contribute to building a robust authentication feature for this platform.

How I plan on tackling this issue

Approach:

Installing Clerk SDK in the project to manage both email/password and GitHub-based auth.

Enable GitHub authentication in Clerk's dashboard and retrieve the necessary client ID and secret.

Add an admin role (role = 2) in the database schema. Implement middleware in the backend to distinguish between user (role = 1) and admin (role = 2) routes.

Create a sign-up form for new users that captures their Name, Email, and Password. On form submission, send the user data to the backend, where Clerk will manage authentication and registration.

josephchimebuka commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I am Joseph I am a frontend developer and blockchain developer and I am also an active contributor here on only dust here is my profile https://app.onlydust.com/u/josephchimebuka. This is my first time to contribute to this repo ill appreciate the opportunity to contribute.

How I plan on tackling this issue

I will ensure that users can login or out using their email and password through github authentication

martinvibes commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

hello @ i'm an experienced frontend developer and a blockchain developer i would love to work on this issue Pleasee kindly assign :)

Ugo-X commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I'm a Full Stack Blockchain Developer with demonstrable expertise across modern web and blockchain technologies. My tech stack centers on Next.js, TypeScript, React, and Node.js for web development, complemented by Three.js for 3D experiences, and Solidity/Rust for blockchain solutions.

What sets me apart is my proven track record on OnlyDust, where I've made 83 significant contributions across 15 different projects since Edition 1. This extensive involvement reflects my ability to deliver quality solutions under tight deadlines while adapting to diverse project requirements.

With my deep experience in hackathon environments, I bring both technical excellence and practical development skills to the table. I'm confident I can contribute meaningfully to pushing the boundaries of what's possible in blockchain development while maintaining a focus on user-centric solutions.

My profile (https://app.onlydust.com/u/Ugo-X) showcases my consistent ability to deliver results across various blockchain challenges. I'm excited to bring this experience and drive for innovation to your team.

How I plan on tackling this issue

I'll set up our auth system:

Core Stuff:

Security:

UI:

Should take 3 days. Main focus is getting solid auth flows working with proper security checks.

saimeunt commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I'm the maintainer of op-scan (https://github.com/walnuthq/op-scan) a blockchain explorer with a very similar tech stack so I'm familiar with the patterns and best practices used in this project. I will use my XP in Full Stack Web3 Development to implement this issue.

How I plan on tackling this issue

The user story being self explanatory, I will carefully implement it using the latest Next.js best practices, choosing the right shadcn/ui component for the job. I've used Clerk in the past for another project so I'll make sure to integrate it nicely with the architecture of this project.

Dprof-in-tech commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

Hello, I'm Dprof-in-tech, a seasoned Full Stack Blockchain Developer, and I'm excited to be part of ODHACK 9! I have a strong foundation in technologies such as Next.js, TypeScript, JavaScript, React, Node.js, Rust, and Cairo, I've built extensive experience across the blockchain development landscape.

I first got involved with OnlyDust during Edition 2, and since then, I've made 39 contributions across 11 different projects. Working on the platform has really helped me sharpen my skills, especially when it comes to delivering great solutions under tight deadlines. I love combining technical know-how with a user-focused approach, whether it's building immersive 3D experiences or crafting smart contracts that solve real-world problems.

Throughout, I've consistently demonstrated the ability to adapt and contribute effectively to diverse challenges. I'm confident in my ability to tackle new problems and drive innovation within the blockchain space. As we kick off ODHACK 9, I'm eager to apply my previous experience and technical expertise to push the boundaries of what's possible.

You can view my public profile on OnlyDust here: https://app.onlydust.com/u/Dprof-in-tech

How I plan on tackling this issue

Here's my approach to implementing the user authentication system:

  1. Clerk Integration Setup:

    • I'll implement Clerk's SDK for both email/password and GitHub auth
    • Set up proper environment variables and configurations
    • Create custom sign-up and sign-in components
    • Handle OAuth flow for GitHub integration
  2. Database Schema Design: This is a conceptual design of what the user interface would look like. interface User { id: string; // Clerk userId email: string; fullName: string; role: number; // 1: user, 2: admin metadata: { registrationDate: Date; lastLogin: Date; ipAddress: string; userAgent: string; githubId?: string; timezone: string; }; settings: { theme: 'light' | 'dark'; notifications: boolean; }; status: 'active' | 'suspended' | 'deleted'; }

  3. Authentication Flow:

    • Set up protected routes using Clerk middleware
    • Implement role-based access control (RBAC)
    • Add proper error handling for auth failures
    • Create automatic role assignment (role = 1)
    • Implement session management
  4. Security Implementation:

    • Add rate limiting for auth attempts
    • Implement IP tracking
    • Set up audit logging
    • Add device fingerprinting
    • Implement suspicious activity detection
  5. UI/UX Components:

    • Create clean, responsive auth forms
    • Add proper validation feedback
    • Implement loading states
    • Add success/error notifications
    • Create smooth transitions between auth states

Testing Strategy:

Expected Timeline: 4-5 days

Key Features:

ShantelPeters commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I have extensive experience in full-stack web development, with a focus on implementing user authentication systems and managing role-based access controls. My background includes working with various databases and structuring them effectively to accommodate various user data points, ensuring efficient data retrieval and storage. This expertise allows me to design a robust user registration and authentication system using Clerk, ensuring a smooth user experience while maintaining security and scalability.

How I plan on tackling this issue

To implement the user authentication system, I will start by integrating Clerk for handling user sign-up and sign-in processes. The registration form will capture essential information such as name, email, and password, while automatically assigning the user role of 1. I will design the database schema to store user metadata, including user ID, registration date, IP address, and role type. For the admin role, I'll ensure that appropriate fields are added to support additional functionality and access. Testing will be conducted to verify that the system correctly handles both registration types and that data is accurately captured in the database. Finally, I'll ensure that the authentication flow is secure and provides a seamless experience for users.

jancris100 commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I'm from dojo coding My background includes extensive experience in backend and frontend development, with a strong focus on authentication systems and database design. I have worked with various authentication frameworks, including OAuth integrations like GitHub, Google, and Clerk, which ensures secure and seamless user login and registration processes.

How I plan on tackling this issue

Step 1: Set up Clerk integration, enabling both email/password and GitHub OAuth sign-up and login.

Step 2: Design and implement the database structure to store user information, including roles and metadata like registration date and IP address.

Step 3: Implement role-based functionality. Regular users (role = 1) get basic features, while admins (role = 2) have enhanced access and control.

Step 4: Add form validation for the registration process (name, email, password) to ensure proper data is entered.

Step 5: Implement the user interface for sign-up, login, and admin panel.

Step 6: Test the registration and login flow, including edge cases such as incorrect login attempts, forgotten passwords, etc.

Step 7: Extend admin functionalities to view and manage user data.

Nitesh093 commented 1 month ago

Applying to the Issue via OnlyDust Platform

Hello, I'm Nitesh Kumawat, and I’m excited to apply for this issue! I have a strong background in full-stack development and user authentication systems. I'm confident in my ability to implement both email/password and GitHub authentication while ensuring data security and seamless user experience.

How I Plan to Tackle This Issue:

Authentication System Setup:

I’ll integrate both email/password and GitHub OAuth authentication for a smooth sign-up and sign-in process. New users will automatically be assigned a default role of "user" (role = 1). I’ll ensure all user metadata (like user ID, email, registration date, IP address, etc.) is securely captured in the database for future use. Database Structure:

Designing a scalable database that not only stores basic user information but also records useful metadata such as registration date, last login, IP addresses, and role information (user or admin). I’ll ensure the database is flexible to support future role-based access control (for example, adding the admin role with more functionalities). Security and Role Management:

Implementing role-based access control (RBAC) to differentiate between user and admin views. Admins will have access to additional features on the platform. Security measures such as rate limiting for authentication attempts, tracking suspicious activities, and logging user actions will be in place to enhance protection. UI/UX Design:

I’ll focus on creating a clean, responsive user interface for the sign-up and sign-in process, ensuring a smooth experience across different devices. User feedback mechanisms like error handling and validation messages will be included for better user experience. Testing and Final Delivery:

Thorough testing of the entire authentication flow, including email, password, and GitHub OAuth, will be conducted. This will include security checks, performance optimization, and compatibility across different browsers and devices. Timeline: I can complete this task within 2 days and ensure a secure, efficient, and user-friendly authentication system for the platform.

aniruddhaaps commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I am a python dev . A new-comer here, willing and ready to contribute to solve the issue.

mimisavage commented 1 month ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

Hi, I’m Mimi Sav, a frontend and blockchain developer. This is my first time contributing to this repository, and I'm excited about the opportunity to collaborate.

How I plan on tackling this issue

To tackle this task, I will start by integrating Clerk for user authentication, allowing users to sign up and sign in using either email and password or GitHub authentication. During the sign-up process, I will create a form to collect essential information such as name, email, and password, ensuring that all new users are automatically assigned a default role of 1 (user).

I will carefully design the database structure to capture all relevant metadata, including user ID, registration date, and IP address, to ensure comprehensive data management from the outset. I will also set up the admin role (role = 2) to enable different views and additional functions for administrators. After implementing the authentication and database structure, I will thoroughly test the user flow to ensure a smooth experience for both regular users and admins.

mo-jaber commented 1 month ago

@saimeunt hello will you be making a PR today?

mimisavage commented 1 month ago

I want to take on this issue, can I be assigned?