Hey, my way of gating features for Upscribe has been to add internal ID’s to each Stripe plan that I then use to gate certain features in the code. Then when I change features up for a certain plan I will do something like “if user has internal ID X and registered before date Y then allow access to feature”.
The problem with this is I’m adding a ton of logic to the app and it’s hard to override when I want to give certain users extra access. Plus if I ever have customer service reps there is no way for them to make a quick change to a user’s access; they need to talk to a developer and get a deploy out just to, say, increase some account limit or allow access to one certain feature.
How are you handling this? Would appreciate some ideas!
Hello Joshua!
I would recommend making this completely independent of the Stripe plan.
I ran into a similar issue in my own SaaS, and I implemented a free-form field (in our case, a JSON object with each permission as a key) to the user model. Then, either roll your own feature toggle logic or use one of the many services like https://launchdarkly.com/ to configure/differentiate your logic.
That will be the quickest way, and it's a good abstraction, as the plan ID and the feature list are not necessarily overlapping, as you seem to be describing.
Awesome! Really appreciate the detail here. I'd heard of LaunchDarkly but had no idea what it did; good to know!
Thanks!