Kurabu-chan / Kurabu

monorepo for the Kurabu project
BSD 3-Clause "New" or "Revised" License
7 stars 4 forks source link

create public /api/v%version%/auth/register endpoint in @kurabu/auth-api #130

Closed rafaeltab closed 2 years ago

rafaeltab commented 2 years ago

public /api/v%version%/auth/register

Start the registration process, will result in an email being sent to the provided email

POST

Implementation

flowchart TD
  %%actors%%
  db[(Database)]
  user([User])
  email_server([SMTP server])
  browser([Browser])

  %%actions%%
  start_register[[Start registration]]

  %%steps%%
  check_email_used{{Check if email is already in use}}
  check_if_session_valid{{Check if session is valid}}
  return_error{{Return error}}
  hash_password{{Hash password}}
  insert_user{{Insert user}}
  update_session{{Update session with new information}}
  send_email{{Send email with verification code}}
  create_verification_code{{Create verification code}}
  redirect_user{{Redirect user}}
  return_session{{Return session}}

  %%graph%%

  user-->start_register
  subgraph Server
    start_register-->check_if_session_valid
    check_if_session_valid-- valid -->check_email_used
    check_if_session_valid-- not valid -->return_error
    check_email_used-- Email already used -->return_error
    check_email_used-- Email not used -->hash_password
    hash_password-->create_verification_code
    create_verification_code-->insert_user
    insert_user-->send_email
    send_email-->update_session
    update_session-->return_session
    return_session-- Redirect to verify with token and state -->redirect_user
    return_error-- Redirect with error -->redirect_user
  end

  send_email-->email_server
  insert_user-->db
  check_email_used---db
  redirect_user-->browser