Commit Graph

48 Commits

Author SHA1 Message Date
idevakk
0d33c57b32 feat(notifications): implement comprehensive telegram notifications for payment providers
- Add NotifyMe trait with centralized Telegram bot integration
  - Implement webhook notifications for Polar, OxaPay, and ActivationKey providers
  - Add subscription lifecycle notifications (create, activate, cancel, pause, resume)
  - Enhance Polar webhook processing with user context and error handling
  - Fix subscription.updated and subscription.canceled webhook column errors
  - Add idempotent webhook processing to prevent duplicate handling
2025-12-08 09:25:19 -08:00
idevakk
9a32511e97 feat(payment): implement OxaPay provider and non-recurring subscription sync
- Add comprehensive OxaPay payment provider with invoice creation, webhook processing, and subscription status sync
  - Implement conditional payload fields (to_currency, callback_url) based on configuration
  - Create universal sync command for all non-recurring payment providers
  - Add subscription model fields for payment tracking
  - Implement proper status mapping between OxaPay and Laravel subscription states
  - Add webhook signature validation using HMAC SHA512
2025-12-07 09:01:53 -08:00
idevakk
5fabec1f9d fix(plans): prevent deletion of plans with active subscriptions
- Fix bulk delete and individual delete actions using before() hook with halt()
  - Add daily/weekly billing cycle options to plan resource and Polar provider
  - Enhance payment confirmation with dynamic polling and loading states
  - Add graceful handling for deleted plans in subscription display
  - Update Polar provider to support dynamic billing cycles
2025-12-07 02:23:14 -08:00
idevakk
289baa1286 feat(payments): implement standard webhooks validation system
Add comprehensive webhook validation and processing system with Polar.sh integration:

  - Create built-in Standard Webhooks package following official specification
  - Implement HMAC-SHA256 signature validation with base64 encoding
  - Add webhook factory for multi-provider support (Polar, Stripe, generic)
  - Replace custom Polar webhook validation with Standard Webhooks implementation
  - Add proper exception handling with custom WebhookVerificationException
  - Support sandbox mode bypass for development environments
  - Update Polar provider to use database-driven configuration
  - Enhance webhook test suite with proper Standard Webhooks format
  - Add PaymentProvider model HasFactory trait for testing
  - Implement timestamp tolerance checking (±5 minutes) for replay protection
  - Support multiple signature versions and proper header validation

  This provides a secure, reusable webhook validation system that can be extended
  to other payment providers while maintaining full compliance with Standard
  Webhooks specification.

  BREAKING CHANGE: Polar webhook validation now uses Standard Webhooks format
  with headers 'webhook-id', 'webhook-timestamp', 'webhook-signature' instead of
  previous Polar-specific headers.
2025-12-06 22:49:54 -08:00
idevakk
15e018eb88 feat(payment): implement comprehensive Polar subscription sync with proper date and cancellation handling
- Add Polar-specific date field mapping in PaymentOrchestrator (current_period_start, current_period_end, cancelled_at, trial_end)
  - Handle both cancellation scenarios: cancel_at_period_end=true and existing cancelled_at timestamp
  - Map customer_cancellation_reason and customer_cancellation_comment from Polar to database
  - Update billing page to show correct renewal vs expiry dates based on cancellation status
  - Restrict cancel button to activation_key provider only (Polar uses customer portal)
  - Fix button spacing between "Manage in Polar" and "Sync" buttons
  - Ensure both "Sync" and "Recheck Status" buttons use identical sync functionality
2025-12-06 10:42:25 -08:00
idevakk
0724e6da43 feat(payments): implement smart Polar subscription sync with checkout tracking
- Add provider_checkout_id column to separate checkout ID from subscription ID
   - Update Polar provider to store checkout ID separately and set subscription ID to null initially
   - Implement smart sync logic that queries Polar API when subscription ID is missing
   - Add fetchPolarSubscriptionId method to find active subscriptions via customer ID
   - Update webhook handlers to use provider_checkout_id for subscription lookup
   - Make makeAuthenticatedRequest public to enable Subscription model API access
   - Support plan metadata matching for accurate subscription identification
   - Add fallback to most recent active subscription when no exact match found

   This resolves sync button issues by properly tracking checkout vs subscription IDs
   and enables automatic subscription ID recovery when webhooks fail.
2025-12-06 02:37:52 -08:00
idevakk
34183dc3cb feat(payment): implement secure 1:1 Polar customer binding system
- Add polar_cust_id column to users table for direct customer mapping
  - Rewrite PolarProvider customer logic to use stored customer IDs
  - Eliminate email-based customer lookup to prevent cross-user contamination
  - Implement self-healing mechanism for invalid customer IDs
  - Maintain external_id binding for Polar's reference system
  - Add comprehensive logging for customer lookup operations
2025-12-04 13:05:47 -08:00
idevakk
724a2d9a1f feat(payment): implement database-driven payment provider system with encrypted configuration support
- Add PaymentProviderSeeder with initial provider data (Stripe, Lemon Squeezy, Polar, OxaPay, Crypto, Activation Key)
  - Create migration to disable JSON constraints and change configuration column from JSON to TEXT
  - Update PaymentProvider model cast from 'array' to 'encrypted:array' for secure configuration storage
2025-12-03 02:32:22 -08:00
idevakk
a84a4a0c15 feat: make admin email configurable and interactive password seeding 2025-11-30 08:06:23 -08:00
idevakk
ad89b84471 feat(payments): enhance Polar.sh provider with official API compliance
- Add comprehensive rate limiting (300 req/min) with automatic throttling
  - Implement centralized API request method for consistent authentication
  - Add support for Polar-specific webhook events (order.created, order.paid, subscription.active, customer.state_changed, benefit_grant.created)
  - Update API endpoints to match Polar's official structure (remove /v1 prefix)
  - Add external_id support for reliable customer-user mapping
  - Implement sandbox mode with separate credentials configuration
  - Add discount code support in checkout flow
  - Add credential validation method for API connectivity testing
  - Update webhook signature validation and event handling
  - Enhance error handling and logging throughout provider
  - Add proper metadata structure with user and plan information
  - Update services configuration and environment variables for sandbox support

  BREAKING CHANGE: Updated API endpoint structure and webhook event handling to comply with Polar.sh official API specification.
2025-11-22 06:19:27 -08:00
idevakk
38ae2770ea chore: fix mrr calculation and grid import 2025-11-21 12:44:51 -08:00
idevakk
7ca3d44d59 chore: migrate to unified payment system & fix disposable gmail and outlook 2025-11-21 12:13:41 -08:00
idevakk
72b8109a3a feat: enhance pricing page with feature limits and trial management
- Add comprehensive feature limits enforcement middleware
   - Implement subscription dashboard with usage analytics
   - Create reusable plan card component with feature badges
   - Add trial configuration support with limit overrides
   - Fix payment controller null safety issues
   - Improve pricing page UI with proper feature display
2025-11-21 10:55:57 -08:00
idevakk
b497f7796d feat: implement comprehensive enhanced plan management system
- Create 7 new models with full relationships and business logic:
     * PlanFeature: Define available features with categories and types
     * PlanFeatureLimit: Manage usage limits per plan with trial overrides
     * PlanPermission: Granular permissions system for features
     * PlanProvider: Multi-provider payment configuration
     * PlanTier: Hierarchical plan structure with upgrade paths
     * PlanUsage: Real-time usage tracking and analytics
     * TrialConfiguration: Advanced trial settings per plan

   - Enhance Plan model with 25+ new methods:
     * Feature checking: hasFeature(), canUseFeature(), getRemainingUsage()
     * Permission system: hasPermission() with trial support
     * Payment providers: getAllowedProviders(), supportsProvider()
     * Trial management: hasTrial(), getTrialConfig()
     * Upgrade paths: isUpgradeFrom(), getUpgradePath()
     * Utility methods: getBillingCycleDisplay(), metadata handling

   - Completely redesign PlanResource with tabbed interface:
     * Basic Info: Core plan configuration with dynamic billing cycles
     * Features & Limits: Dynamic feature management with trial overrides
     * Payment Providers: Multi-provider configuration (Stripe, Lemon Squeezy, etc.)
     * Trial Settings: Advanced trial configuration with always-visible toggle

   - Create new Filament resources:
     * PlanFeatureResource: Manage available features by category
     * PlanTierResource: Hierarchical tier management with parent-child relationships

   - Implement comprehensive data migration:
     * Migrate legacy plan data to new enhanced system
     * Create default features (mailbox accounts, email forwarding, etc.)
     * Preserve existing payment provider configurations
     * Set up trial configurations (disabled for legacy plans)
     * Handle duplicate data gracefully with rollback support

   - Add proper database constraints and indexes:
     * Unique constraints on plan-feature relationships
     * Foreign key constraints with cascade deletes
     * Performance indexes for common queries
     * JSON metadata columns for flexible configuration

   - Fix trial configuration form handling:
     * Add required validation for numeric fields
     * Implement proper null handling with defaults
     * Add type casting for all numeric fields
     * Ensure database constraint compliance
2025-11-21 10:13:14 -08:00
idevakk
5f5da23a40 feat: migrate legacy subscription checks to unified payment system
- Replace Laravel Cashier methods with new subscription system
  - Remove session-based subscription checking in bulk components
  - Update Dashboard.php to use PaymentOrchestrator for provider-agnostic sync
  - Maintain backward compatibility with existing Stripe subscriptions
  - Improve performance by eliminating session overhead
  - Add automatic migration of legacy subscriptions to new system

BREAKING CHANGE: Subscription checking now uses unified payment system instead of Laravel Cashier methods
2025-11-20 11:05:51 -08:00
idevakk
27ac13948c feat: implement comprehensive multi-provider payment processing system
- Add unified payment provider architecture with contract-based design
  - Implement 6 payment providers: Stripe, Lemon Squeezy, Polar, Oxapay, Crypto, Activation Keys
  - Create subscription management with lifecycle handling (create, cancel, pause, resume, update)
  - Add coupon system with usage tracking and trial extensions
  - Build Filament admin resources for payment providers, subscriptions, coupons, and trials
  - Implement payment orchestration service with provider registry and configuration management
  - Add comprehensive payment logging and webhook handling for all providers
  - Create customer analytics dashboard with revenue, churn, and lifetime value metrics
  - Add subscription migration service for provider switching
  - Include extensive test coverage for all payment functionality
2025-11-19 09:37:00 -08:00
idevakk
52a59eb143 feat: add impersonation log viewer in filament dashboard 2025-11-17 12:22:26 -08:00
idevakk
a7029b5f57 feat: add user impersonation service 2025-11-17 10:44:19 -08:00
idevakk
23cfd0c88d feat: add UserLevel enum and integrate it in User Modal, UserResource and UserFactory 2025-11-17 08:35:31 -08:00
idevakk
cb05040c96 feat: add legacy setting support to ease migration 2025-11-16 10:59:42 -08:00
idevakk
ea0bc91251 feat: add username management system 2025-11-15 21:41:28 -08:00
idevakk
466a370f28 feat: add domain management system 2025-11-15 11:40:04 -08:00
idevakk
ae795880ed chore: code refactor via rector 2025-11-14 02:01:01 -08:00
idevakk
90ab79b3a2 chore: code styling via pint 2025-11-14 01:51:35 -08:00
idevakk
3892c48ef2 feat: upgrade filament to v4 and ensure 100% test coverage
- Upgrade Filament framework from v3 to v4
   - Update all Filament resources and pages for v4 compatibility
   - Fix test suite to maintain 100% pass rate (321 tests passing)
   - Add visibility condition for ticket close action (only when not closed)
   - Update dependencies and build assets for new Filament version
   - Maintain backward compatibility while leveraging v4 improvements
2025-11-14 01:42:07 -08:00
idevakk
3706072ce5 fix: resolve PSR-4 autoloading and test failures
- Add proper Tests\ namespace to all test classes in tests/Feature and tests/Unit
  - Split RemainingModelsTest.php into separate files (PSR-4 compliance)
  - Create missing factories: MetaFactory, RemoteEmailFactory
  - Add HasFactory trait to RemoteEmail model
  - Add missing ReflectionClass imports to test files
  - Fix mass assignment issues in Meta and RemoteEmail models
  - Override database connection for RemoteEmail in testing environment
  - Fix DateTime comparison precision issues in tests
2025-11-13 09:49:21 -08:00
idevakk
68ef391c5d test: achieve 100% test coverage with comprehensive test suite fixes
- Fix Laravel bootstrap issues in TestCase setup
  - Add missing database factories (Setting, PremiumEmail, ActivationKey, etc.)
  - Convert Pest tests to PHPUnit style for compatibility
  - Fix model relationships and boolean casts
  - Add missing Filament resource actions and filters
  - Fix form validation and test data mismatches
  - Resolve assertion parameter order issues
  - Add proper configuration for test views
  - Fix searchable columns and table sorting
  - Simplify complex filter assertions for stability
2025-11-13 09:11:14 -08:00
Gitea
30bd0c2712 updated plan, and oxapay integration 2025-06-21 04:09:08 +05:30
Gitea
930144f8f8 updated stats, add logs and other data in user resource 2025-06-20 21:44:33 +05:30
Gitea
dbe6d49c49 added remote db source 2025-06-20 19:48:09 +05:30
Gitea
175a7203f3 added support ticket and added more stat widgets 2025-05-17 05:11:29 +05:30
Gitea
93515e7845 added crypto pm and activation key system 2025-05-16 11:24:08 +05:30
Gitea
887f6316f6 added outlook mail support 2025-05-13 17:37:05 +05:30
Gitea
08f4618ea8 added public mailbox support 2025-05-07 16:33:09 +05:30
Gitea
671cb6212d added not subscribed page, added premium inbox 2025-05-06 07:21:39 +05:30
Gitea
3b9967a749 add dashboard mailbox, added usage log, pending-switch email, mailbox history, email history 2025-05-04 19:39:53 +05:30
Gitea
6e2a750c4e added cashier subscription, subscription plans 2025-05-03 06:13:19 +05:30
Gitea
f2c5c2d601 Added User Dashboard 2025-05-02 17:20:55 +05:30
Gitea
533db83008 fixed autofetch, fixed ads 2025-05-02 11:44:56 +05:30
Gitea
68ad583258 Added ads, adblocker, fixed scrollbar, fixed route and asset links of blog 2025-04-28 04:10:24 +05:30
Gitea
08e1110abd Added blog, pages, menu, category 2025-04-28 01:09:25 +05:30
Gitea
94eb01b1ab Added almost all features except language, ads, seo, pages 2025-04-27 06:28:15 +05:30
Gitea
89f6410578 Added Fetch Email on page load 2025-04-26 00:22:03 +05:30
Gitea
9aa1b3ab8e Added Create Custom, Random, Gmail Generation 2025-04-25 17:43:35 +05:30
Gitea
b799ac3f9a Added Setting.php, [Logs, Messages] Model 2025-04-23 17:52:22 +05:30
Gitea
20ebb7e4a4 Added imap_setting to Setting Page 2025-04-23 04:44:46 +05:30
Gitea
65f6df64aa Added Website Setting Page 2025-04-23 02:44:47 +05:30
Gitea
59a2c07d81 Initial Commit 2025-04-23 02:28:54 +05:30