Expensify / App

Welcome to New Expensify: a complete re-imagination of financial collaboration, centered around chat. Help us build the next generation of Expensify by sharing feedback and contributing to the code.
https://new.expensify.com
MIT License
3.46k stars 2.81k forks source link

[$250] Give users on a domain the ability to join their colleagues when the company is already using Expensify #48189

Open anmurali opened 1 month ago

anmurali commented 1 month ago

Proposal: Allow a private domain sign up, whose company is already using Expensify to request to join relevant workspace(s)

Problem: One of the cool things about Expensify is that anyone can sign up without their company's permission or invitation. But this means when an employee signs up independently they are not aware their company is already using Expensify and so end up creating their own workspaces in error, causing a lot of confusion for themselves and their company

Solution: Mirror Classic when it comes to an employee that signs up with a private domain email of a company that already has one or more workspaces. It goes like this:

  1. Sign-up with an email address on a private domain that has existing workspace owners
  2. We ask for their first name/last name (Ice breaker)
  3. Next, we show a step that:
    • Let’s them know people on derp.com are already using Expensify.
    • We’ve sent a magic code to validate their account so they can join them
    • An input for said magic code to validate the account
    • An option to skip and move on with onboarding as normal if they prefer
  4. If they validate the account, the next step shown is a list of all the workspaces owned by members of their private domain.
    • The CTA is Ask to join or Join based on the workspace JSON's automaticJoiningEnabled parameter being set to false or true respectivey
    • They can only pick one workspace in the list
  5. If they click on the CTA we do one of two things depending on if the workspace pre-approves join requests (Join), or an admin needs to accept (Ask to join):
    • Pre-approval not required:
    • Add them to the workspace
    • Drop them in the LHN
    • populate their onboarding/ConciergeDM with the invited member set of tasks
    • Pre-approval required:
    • Drop them in the LHN to continue exploring the product
    • Send the actionable message in the #admins room to accept or decline (just like policy join links that require approval)
    • On the workspaces page, show the workspace row they’re pending to be accepted to join with the “[Requested]” badge (just like a policy join request that needs to be approved)
    • If they select New Workspace in the + menu or Workspace page, have a warning just to let them know we’re waiting on their colleagues to still accept the request to join
    • Once accepted, they’ll get an email as they’re added to the workspace and we populate their onboarding/ConciergeDM with the invited member set of tasks.
      Upwork Automation - Do Not Edit
      • Upwork Job URL: https://www.upwork.com/jobs/~021832414536636098293
      • Upwork Job ID: 1832414536636098293
      • Last Price Increase: 2024-10-08
Issue OwnerCurrent Issue Owner: @marcaaron
cretadn22 commented 1 week ago

@parasharrajat I already updated my proposal before https://github.com/Expensify/App/issues/48189#issuecomment-2337102338. Could you provide some feedbacks?

melvin-bot[bot] commented 5 days ago

@parasharrajat, @marcaaron Now this issue is 8 days overdue. Are you sure this should be a Daily? Feel free to change it!

melvin-bot[bot] commented 1 day ago

📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸

parasharrajat commented 1 day ago

I will post next update in 1 hour.

melvin-bot[bot] commented 1 day ago

@parasharrajat, @marcaaron 12 days overdue. Walking. Toward. The. Light...

parasharrajat commented 1 day ago

@cretadn22 Conceptually, the proposal looks good to me. It will be great to have more technical steps in the proposal. Can you also modify your proposal on the backed changes suggested here https://github.com/Expensify/App/issues/48189#issuecomment-2339546858 onwards? Please try to explain each step from OP.

marcaaron commented 12 hours ago

Back from OOO, but the backend PRs still in review here. This ticket required creating a new authentication related command and turned out to be a bit involved. Getting the accessible domain policies is a performance sensitive operation as well. But I think we are nearly there with @danieldoglas's great assistance.