Skip to content

Create login flow for PendulumPay web app #4

@prayagd

Description

@prayagd

As a user, i should be able to login on the web app

Acceptance criteria

  • on visiting the PendulumPay web app
  • Now clicking "Login" button on the top right corner of the screen
  • on /login show two fields
    • "Email" - only emails should be accepted here and no other text
    • "Password" - only passwords should be accepted in this field
    • Show a "Login" button below these two fields, the button should be enabled only after the two fields are filled
    • On clicking the "Login" button,
      • if the submitted Email and Password dont exist in our database. Show error below "Login" button, text is "Incorrect data, Please try again"
    • on clicking the "Login" button, if successful
      • On the top right corner, show "logout" button. on clicking the button, the user is logged out
      • if correct and email validated, then return a session cookie
        • session cookie
        • we could either manage sessions in the database or using JWT (the latter option is probably simpler)
        • preferred, because simpler: JWT
        • expiry time should be rather short for a financial product, maybe 30 minutes

Note

  • The Login flow is simple, with no account management. Basic login and logout, not password change.

Standard secure Login/Signup flow

Due to GDPR we need to use secure practices that do not expose whether an email address is in our system.

General principles

  • all passwords are allowed, only requirement is minimum length, e.g., 8 or 10
    • no other requirements (particularly no password rules like uppercase, lowercase, etc)**
    • (for a low priority feature we will implement later, we will check in the backend whether the password is common or has been pwned)
  • passwords and emails are always normalized in backend (both for login and signup)
    • password: trim whitespace at beginning and end
    • email: trim whitespace at beginning and end, make everything lowercase
  • passwords use a password hashing algorithm, the hashed passwords is a field of the user table in the database
    • e.g., bcrypt

Lo-fi wireframes

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions