Simplified Account Creation
Currently, to attach to a project not in BOINC's "official list", a new volunteer must:
- visit the project's web site, note its URL, and follow a "download BOINC" link.
- download and install BOINC
- type or paste the URL into the Attach Project wizard
- enter credentials (email, password)
- fill in some additional info on the "complete account creation" web page
The following is proposal for new features in BOINC to support several ways of streamlining this process.
Note: we assume that the project is in BOINC's official-project list (although some of the ideas could adapted to remove this restriction).
Scenarios
We want to support the following scenarios:
Public account
In this case the volunteer is attached to an existing "public" account.
Interface (new users):
- Click on Download link
- Run installer
That's it (no Wizard).
Interface (existing users):
- Click on Volunteer link
- A few minutes later, the Manager shows a "confirm" dialog: Do you want to add project X, URL Y.
A weak authenticator is used since we don't want the user to be able to edit the account.
Anonymous account
In this case an "anonymous" account is created (Name: "Anonymous"; email: random string).
Interface: same as Public account.
A strong authenticator is used.
Accessible via "Your account" link on MGR. The project must export this GUI URL. (make sure this is clearly visible in simple view).
Identifiable account
Interface:
- User fills out a form with email addr, password, user name, and anything else the project wants to collect.
- User clicks on either Download (if new user) or Add Project (if existing user).
- new user case: run installer
- existing user case: the Manager shows a "confirm" dialog: Do you want to add project X, URL Y, user name Z?
Implementation notes
In all cases, the project web server sets a cookie with account info prior to downloading BOINC.
Client download without going to the BOINC web site
We need to add web RPCs so that project web code can find the URL of the appropriate client version to download.
If it can't (i.e. insufficient browser info), it should redirect to the BOINC download page.
Manager/client coordination
In the new-user case, if the manager doesn't find a cookie on the first pass, it should wait until the client has a new all-projec, then scan cookies again. May need to add a flag to CC_STATUS for this.
Changes to the BOINC manager
The manager will do the following, on startup and every 10 min or so:
foreach (project and acct mgr in all_projects_list.xml) if exists(project.cookie) and not already attached add project cookie to CookiesFound array sort CookiesFound array by increasing CreationTime if CookiesFound.Count > 0 then if CookiesFound[0].IsProject then if any projects or acct manager already show confirm dialog attach to project endif if CookiesFound[0].IsAccountManager then if any projects or acct mgr alread show confirm dialog attach to acct mgr
If there is an error in the attach, deliver a notice suggesting checking proxy settings.
Server-side PHP code
We need to supply PHP templates for all the above scenarios.
Proxy settings
Add auto proxy setup in manager (at startup, if no projects/acct mgrs). If we find proxy,
- tell the client (set_proxy GUI RPC)
- tell the client to get proj list (may need to add GUI RPC for this).
Project Cookie Contents
Cookie Name | Cookie Data Type | Cookie Values | Cookie Description |
Authenticator | string | The account key the core client should use | |
Action | string | "attach" | What action the manager should take |
CreationTime | time_t | time(0) | The current timestamp of the cookie set |
Notes: If the authenticator is missing but the Action item is defined then it is assumed the manager should prompt for the creation of credentials.
Notes: Pre 6.13 clients only react to the Authenticator item.
Account Manager Cookie Contents
Cookie Name | Cookie Data Type | Cookie Values | Cookie Description |
Login | string | The username/email address to use for the account | |
PasswordHash | string | The password hash for the account | |
ReturnURL | string | The URL to display in a web browser after the wizard runs | |
Action | string | "attach" | What action the manager should take |
CreationTime | time_t | time(0) | The current timestamp of the cookie set |