Skip to content

[Backend] Feature Restriction & Access Control Based on Subscription Plan #129

@rdodiya

Description

@rdodiya

📌 Description

Currently, subscription plans are being introduced in RestroHub. Along with subscription CRUD APIs, we also need a centralized system to dynamically restrict feature access based on the restaurant’s active subscription plan.

This issue focuses specifically on implementing feature-level restriction and validation logic.


🎯 Objective

Create a reusable subscription validation system that controls feature access dynamically across backend APIs and services.


Image

🛠️ Scope of Work

Backend

  • Create centralized subscription validation module/service

  • Validate restaurant subscription before feature execution

  • Add reusable feature access methods like:

    • canUseWhatsApp()

    • canUseAiTranslation()

    • canAddBranch()

    • canUseCustomDomain()

  • Add branch limit validation logic

  • Handle custom plan configurations dynamically


Middleware / Interceptor

Implement reusable request validation:

  • Spring Interceptor / Filter / Aspect

  • Restrict API access based on subscription

  • Return proper error response if feature is blocked

Example:

{
  "message": "Your current subscription does not support this feature",
  "feature": "WHATSAPP_NOTIFICATION"
}

🧩 Suggested Components

Services

  • SubscriptionValidationService

  • FeatureAccessService

Entities

  • SubscriptionPlan

  • RestaurantSubscription

  • FeatureConfig (optional)

Enum Suggestions

  • SubscriptionType

  • FeatureType


🔗 Areas Where Restriction Will Be Applied

  • WhatsApp Notification APIs

  • AI Translation APIs

  • Website Template APIs

  • Branch Creation APIs

  • Custom Domain APIs

  • Future premium features


🎯 Expected Outcome

  • Centralized feature restriction system

  • Dynamic validation based on restaurant subscription

  • Reusable and scalable architecture

  • Easy integration for future premium features


🚀 Tech Stack

  • Spring Boot

  • JPA/Hibernate

  • REST APIs

  • Spring Interceptor / AOP (optional)


📦 Deliverables

  • Feature validation service

  • API restriction mechanism

  • Branch limit validation

  • Proper exception handling

  • Reusable architecture for future modules

  • PR targeting gssoc_develop

Happy Contributing 🚀

Metadata

Metadata

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions