In the previous discussions about how to do this, there were a three possible approaches we discussed:

1. Adding the subscription on the server-side after the account is created, but before it's activated.

The benefits of this approach are obvious -- the subscription is added to the account right away, and nothing can happen in between creating the account, getting the e-mail, and verifying/activating the account that would cause the subscription to be lost.

IIRC, the major downside of this approach is that it was deemed to be difficult to implement because of the inflexibility of our security model. (I believe there were also concerns that allowing subscriptions to be added to a not-yet-activated account could be a security risk, which seemed a little dubious to me.)

There are actually a couple different ways we could implement this one:

a) Add subscription information to the CMP data model, so that we could create users with subscriptions in one step.

I don't like this, and I know Brian didn't like it when I proposed it, as it mixes up our data models. Information about content is not currently part of CMP, and it would be a pretty big departure from the protocol to do this. That said, I'm open to discussing it.

b) Punch a hole in our security to allow subscriptions to be added to unactivated accounts. This could be done by:

i) Building a special exception for certain operations into the method that decides whether or not a user is activated (and thus whether or not a client can authenticate as the given user). This seems really crufty and ugly, building information about our protocols into our auth code.

ii) Allow anonymous clients to add a subscription to a user. This is definitely a security hole. Spammer add bogus advertising subscriptions to arbitrary calendars, Cosmo becomes object of ridicule. Out of the question in my mind.

Any other ideas?


2. Storing the information about a 'subscription to be added' in a browser cookie, and adding the subscription after the user actually logs on to the new account.

The benefit of this approach is that it doesn't require any server- side work.

The downside is the inherent unreliability of cookies. For example, if the users completes the account-activation process from a different browser (e.g., goes home from work and checks e-mail there), the subscription will not get added to their account.

The bottom line would be that we can't assume the process would always work, and end-users in those cases would be left wondering why it didn't "add this
subscription" like it said it would.

Agreed, I don't like this either.


3. Change the activation e-mail to include information about the desired subscription, and put it into the URL for the confirmation page.

The benefit is that approach is that the info for the subscription is in the actual e-mail, so it comes along with the users to the activation and login pages -- no matter where they log in to the app from.

The only drawback I can think of is that it would require some amount of server-side work. There may be others. I would appreciate feedback from Travis on this.


Remember, account activation is optional, so this would only solve half the problem (the whole problem for Hub, since it uses account activation). We could have separate logic for the non-account- activation scenario, but that seems overly complicated

4. Use the preferences system to implement this feature.

We built out a system for storing arbitrary key-value pairs on the server side to implement preferences, couldn't we use this instead of a cookie to implement option 2?

The one downside is an extra server call, but we could have the code only check for a pending subscription the first time a user logs in. We already do this to add a default calendar to a user's account, so that would probably be a reasonable location for this logic. This would mean the Web UI performs a check for pending subscriptions any time the user has no calendars, but I think that's a pretty minimal cost.

Thoughts?

I believe we had a discussion on the list to see if it was necessary to keep the out of the box 'Chandler Hub' calendar. I think for now, I don't see much harm to keep a blank calendar for the CC users. When we introduce remove, perhaps they would be able to remove it from their list?
Any thoughts on this proposal?
-Priscilla

I think it's a good idea anyway to give CC users their own empty calendar in the Web UI. It's a way of encouraging them to try it out themselves.

+1, especially since there is currently no mechanism for adding calendars.


-Travis

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Design" mailing list
http://lists.osafoundation.org/mailman/listinfo/design

Reply via email to