如何根据订阅级别为不同的用户devise具有不同function集的Web应用程序?

根据订阅的不同,为不同用户启用不同function集的应用程序寻找一些架构模式的洞察。

不是指angular色 – pipe理员vs用户vspipe理员 – 而是我的整个可用function集或容量可能会根据我的订阅而改变。

以github或freshbooks或firebase或heroku为例。 有多个计划。 免费计划A只能做X + Y,而付费计划B可以做X + Y + Z(还有10个以上),有偿计划C可以做W + X + Y + Z(每个有100个) 。

很明显,我不想将这些限制和特征烘焙到代码中,或者需要很长时间来构build,而且任何更改(计划之间的移动function或对各种function的限制)都会变成一场噩梦。

人们使用什么模式,以便用户:

  • 只能使用那些与他/她相关的function
  • 受限于他/她可用的限制
  • 这些限制/function是否在订阅级别更改(上或下)时自动更改
  • 看到加售机会(显示不可用的function,但可以购买)?

在这里寻找一个架构devise,欢迎使用Java,NodeJS,RoR或PHP。

从很高的层面来看,我可以从以下几点开始:

  1. 制定“angular色”(或任何你想叫他们)包容性 – 不是排他性的。 或加法而不是减法。 只显示a / b / c比显示默认情况下更容易,然后尝试locking受限制的function。

  2. 让API处理所有可以做什么的逻辑,所以当数据到达你的视图时,它已经是一个基于用户可用特性的有限集合。

  3. 访问级别可以基于每个用户,也可以是某种指定的组,这样可以更容易批量升级用户等。

  4. 对于原型来说,你可以做一些用户体验,如果用户从API那里请求一个他们没有访问权限的特性,那么API可以发送一个特定的HTTP头文件/ etc。 而且您的前端可能会显示一个通用的“升级您的帐户”消息。

你的问题相当广泛。

最后一个想法 – 如果您认为应用程序会很大,那么创build一个基本API,然后从其中inheritance的其他API(每个API都具有特定function)可能会有所帮助。 再次,有很多方法可以做到这一点…节点模块浮现在脑海。 这样,您可以为用户所在的每个级别的“计划”创build不同的体验,但仍可以重用代码。