-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rethinking the Orion account creation/signup flow #320
Comments
@zeeshanakram3 I only skimmed through, but since this is redesigned, do you think Orion could allow signup without an email, using only web3 wallet? Or would that mess up other things? |
@zeeshanakram3 @bedeho Hey! I did the YPP sign up user flows. Please let me know If I didn't miss anything and let me know your thoughts ➡ Figma link: https://www.figma.com/file/oQqFqdAiPu16eeE2aA5AD5/YouTube-Partner-Program?type=design&node-id=6073-75786&mode=design&t=ocva97RkTpv8zpQI-4 |
We briefly discussed this, and it requires substantial effort to rework backend, and it adds more complexity. Even if it did not though, I don't think it has enough value. Its a strictly worse experience also in terms of utility post signup, as you get no notifications, which are really quite important. Anyone who insists on doing extension based signer can still just add a throwaway email, and until a substantial number of users voiced this I think its hard to justify adding a separate mode for it. My understanding is that you are really i favour of this because you feel it has bad optics, but I don't think this really is a big issue - people are by now very used to abstracted wallet experiences, and even if it did have bad optics, the severity is not high enough in my opinion. |
I left full review in the Figma. |
Hey @bedeho @zeeshanakram3 I have a question that I need to ask related to the sign up flows
|
Hey @bedeho @ZeeshanAkram I recorded a very quick video about my question related to non - YPP sign up flow. Let me know If I missed anything 🎥https://www.loom.com/share/f5948fe816424aa18b2db7e80d328a71?sid=4a0949e5-6c02-4a39-91df-1dec84ca302c |
@bedeho @zeeshanakram3 Hey! I've implemented the last feedback that you provided✅ Let me know what do you think! 🎥 loom video: https://www.loom.com/share/072d08a9191d485e89b3e5c1328b2c58?sid=37fd601e-b1aa-414c-82d8-2c200617a936 |
Upload YouTube Video modalConfusionI don't think this works still I'm afraid. The user will not know what we want to them to do or why. But even if it was optimal, I think it will unfortunately require too much tiny text in one screen, this dialog has way too much going on now
This is just too much, and the user will still not understand why. -- If you feel there is no alternative solution that can address this in some more fundamental way, my guess for at least what would be an improvement would be
Then when the user clicks continue, then some sort of indication about cause of failure is displayed if the valiation failed. Validation
So whenver the user enters a URL, we can directly in Atlas do the check to make sure
By checking this client side, we can immediately indicate to the user that the video very likely will bea ccepted. I guess it can be as simple as when the user clicks continue, ew do all the checks, which will be possible in 1-3seconds, and then we give some sort of indication about what conditions are or are not satisified, if not all are satisfied. If all are satisfied, then we can proceed to the nxt screen. Verifying channel ownerhsip...My understanding is that this should only take a few seconds, because the video does not even need to be downloaded. User click on the confirmation linkPerhaps I'm missing something ,but I don't see a screen which comes after the user has submitted the email? There needs to be a screen which says something like "go to your email and click on link we sent you," type of thing. |
Hey @bedeho @zeeshanakram3 I've implemented the last feedback that you gave me. Let me know wdyt! 🎥loom video: https://www.loom.com/share/5a538ce98e584870a110cfe0143802d7?sid=af835100-60fb-456a-be8c-2204ef701040 |
Prove channel owernshipSo thank you for trying a new iteration. I can see you have tried to explain as much as possible to the user, to make them undrestand why they are doing somtehing, but I'm worried this is too much, people will just skip and zone out. Can we try a super simple alternative, so I can see how it works.
By default we have nothing else, there is also no "sign in" button, as I dont see a need for it? When user clicks "continue", which we should just call "Verify video", we do client side check, and only if it fails do we display some error information, so we drop the "your video must:..". The errors will be one among:
These errors can just be displayed as red text, and we only need to show one at a time, and we don't need to show the requirements that are satisfied, again just to simplify. Notice that we don't need to actually require that the video is unlisted, this is only something the creator needs to understand is possible as an option. Notice that everything above is on one screen. If client side verification passes, we should show a new window where we have their channel avatar, name, and title of window is something like "Ownership Verified". This tells the use very clearly that the prior step suceeded, and this may be required as I suspect people may end up failing a few times in the prior step. This window just has button "Create Account" or something, and "cancel" of course. When user clicks "create...", we just have this screen in some loading state, like with a spinner over the button or sometihng, we dont need a new window. Currentyl we have "Veryinf channel woernship", but at this point it is misleading, as the user would think that we have already done that, as the user does not understand the difference between client and server validation. If there is any error, we need to send user back to prior screen with appropriate error message, just like we already do when client side validation is being done. User click on the confirmation linkI think we need a first success window after the user has clicked link, which says something like "email verified" like a success case, so the user understand they did the right thing after leaving the prodcut, and they are suppose dto continue. If we just send user directly to create password, they may be unsure about perhaps they have been asked to start again, or if the old stuff they did failed in some way, so we need to show them the continuiity of the process is intaact. We only need a single button with "Set password" as title" |
Hey @bedeho @zeeshanakram3 I've implemented the second feedback ✅ Let me know wdyt 🎥 Loom video: https://www.loom.com/share/5d2dd24e0c3e44dfad6596c31fdb60d6?sid=6e02a68b-a259-4c04-b2e1-fc079117253c |
perfect |
This issue attempts to propose an alternate way for the creation of User/Gateway accounts
Current Implementation
Current graphql schema definition for
Account
entity.Problems/inconsistencies in current implementation
Account
, the API response explicitly tells that the email exists in the system. This could lead to email enumeration attacks.Account
andMembership
entities. the major problem by havingmembership
field inAccount
entity as well as in create account request is that the membership must be already created & processed by Orion. Now if somehow processor lags or requests timeout, then the flow would break and it has to be started again from the very first step.I am not sure why this API design approach was picked (i.e. passing the membership to be associated with the account in the create account request), the alternate approach can be to associate membership later to the account using a separate endpoint by sending the memberId in request signed by
account.joystreamAccount
? (But I am going to suggestion a different approach)Alternate Signup approach
Objectives of the signup flow rework
Orion schema changes
The following changes have been proposed to the Orion Graphql/DB schema
Added
EmailConfirmationToken
entityA new hidden entity will be created to securely store the email confirmation tokens issued for the emails.
Added
BlockchainAccount
entityUpdated
Account
entityUpdated
Account
entity to have a one-to-one relationship with theBlockchainAccount
entity, which then would have a One-to-Many relationship with theMembership
entity.This way we would get rid of the
membership
column/field from the account (no direct association), and to know about account 's membership/s we can just traverse the relation i.e.account.joystreamAccount.memberships
Another benefit of using this approach is that we don't need to perform membership association action separately, it will happen automatically (once the Account owner create an on-chain membership using keypair of
account.joystreamAccount
).Orion Auth API changes
Updated
POST /request-email-confirmation-token
endpointAlthough, the email confirmation endpoint already existed, it was not used. Also, if the account/email was already verified it returned explicit response stating that given email is already verified (basically revealing emails)
So updated this endpoint to send an email with a confirmation token if the Gateway account does not exist. Otherwise, send an email asking the user to log in/reset the password. but the API response should be the same to avoid email enumeration attacks.
Updated
POST /account
endpointUpdate create account API request to also require
emailConfirmationToken
that was sent to user email.Added
createAccountMembership
mutationAdded
createAccountMembership
to create a captcha-free membership for an existingAccount
(if no membership for account exists yet)Sequence diagram of new flow
YPP User Flow
Non-YPP User Flow
The flow ends here for non-YPP users.
Here is the sequence diagram for complete YPP/Orion signup flow
opt
means the sequence component is optionalalt
means there are alternate paths for the sequenceThe text was updated successfully, but these errors were encountered: