Connecting the new "Data" page to workbench via one-click register-approve-add-start process:
Use case:
- The "Data" page contains a link to launch the NBI jupyter notebook on workbench
- When the user clicks on the link, they are taken to the running Jupyter environment in Workbench.
Basic flow:
- Is the user authenticated?
- No
- Redirect to sign-in/register page (with quickstart request)
- User has an account
- No
- User goes through register/verify/approve process
- /#/register?next=<quickstart url>
- On approval, service is added and quickstart link sent in approval email.
- Yes
- /#/sign-in?next=<quickstart url>
- After successful sign-in, service is added, started, and user is redirected to running instance
- No
- Yes
- Service is already added
- No
- Add, start and redirect to running service
- Yes
- Service is started
- Yes
- Redirect to running service (first)
- No
- Start service, redirect to running service
- Yes
- Service is started
- No
- Service is already added
- If they are not registered
- They are prompted to register with email verification and optional approval process
- Once approved, service is started and approval email sent with link to started service and workbench itself
- If they are registered/approved but not authenticated
- They are prompted to authenticate.
- Once authenticated, service is started and user it directed to running service
- If they are registered and authenticated
- If the service isn't running, it is added and started
- If the service is already running, they get a link to the running service (a new one isn't added via this route)
- No
What needs to be done:
- Endpoint that supports "add and start" capability
- Update registration/authentication endpoints to support "add and start" capability
- Store requested URL until approval is complete?
- Update UI to support specific endpoint (not landing page) – for example /register?rd=<requested action>
Thoughts:
Jira server JIRA serverId b14d4ad9-eb00-3a94-88ac-a843fb6fa1ca key NDS-1100
Assumptions:
- Single-service stack (no multi-service or optional-service stacks, for now)
- Storing the token as a cookie?
- Modify stack endpoint to support quick-start functionality (i.e., add spec parameter means add + start)
- This doesn't solve basic auth for sure.
- One click via API or UI?
- Current GET /start/:sid endpoint requires existing added stack
- Could modify to be GET /start?service=<service ID>
- If not authenticated, store request (cookie or redirect URL)
- Redirect to Register/sign-in page
- If register, need to pass requested URL to registration process (user could close browser/remove cookie, etc)
- If sign-in, need to pass to authenticate method?Authenticate an start or return existing?