One of our customers has a new requirement to have part of their site accessible only to users that have a paid subscription.
As long as we have found, there are several services that offer the subscription management, but only take care of the payment process and regular notifications on the status of the subscription life cycle.
Does any body here had worked on a similar use case?
Where do you store the user base? Plone? Third party service? Which one you use?
I'd take one of these services, then I'd add a non-plone service (maybe a tiny pyramid app using node.ext.ldap) to listen to those notifications and write/update users and subscription times (end-of-subscription) to LDAP.
With pas.plugins.ldap you can now add those users to Plone and give view permissions where needed as usal. The plugin supports user expiration.
I actually have a very similar situation with a client asking for this, so I'm interested in this discussion.
In my case, the site is already using GetPaid for membership dues, and they want to extend this to allow access control to some paid content based on membership and/or subscription (which are not necessarily the same).
We have a client that uses Salesforce for accessing subscription-based content. Areas they are subscribed to are managed in Salesforce, and all users have a profile in the Plone site that is hooked up to their Salesforce profile (similar to LDAP). Any changes to a profile in Salesforce will automatically update the profile in Plone. The areas they have access to are basically set up like groups in the Plone site, so each piece of content needs to specify which groups are allowed to see it.
In our case, we map "subscribed" to an associated group membership and use local roles (sharing tab) to give this group appropriate permissions. Users and groups are in a Postgres database, but they could be anywhere.
We use Plone to provide web-based services that hook to and complement a separate (non-Plone) on-site traffic logistics server (typically one such on-site server per customer) . For that I implemented a content type for "provisioned customer" and "provisioned service" (such as access to paid content), together with a traverser ('++provisioned++') that allows for convenient traversal to customers & services, and a view to list the customers & provisioned /available services. A new "customer" role is also thrown in, mapped to (very heavily) stripped-down Plone 4.3 UI. I am hoping to use dexterity.membrane to automate group creation (each "provisioned customer" a new group). Everything in Plone. There's no hook-up to payment systems; customers and services are provisioned manually.
We did so with Patreon and Plone last year or so, we paid for the Plone / Patreon SSO plugin development, and asked that is freely opensource and available, if you are able to use Patreon, or use the source code to see if fits the processing platform you are working with, hope that helps.
are you specially interested in something? unfortunately, I can't share the code neither too much information of the customer because this is a sensitive site and currently the political situation over here is complicated.
what I can say is that we have hundreds of users in Plone's database; we process dozens of notifications daily and we haven't touch the code in 18 months.
the site runs very fast with response times of less than 500ms most of the time, with limited resources according with traffic; it handles millions of monthly sessions.
we are using the same server specifications from the beginning; we didn't need to add memory or CPU at all; Plone is awesome!