UNPKG

membros-react-sdk

Version:

React authentication library for Membros platform with subscription management and plan-based access control

84 lines 4.48 kB
"use strict"; "use client"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.withAuthenticationRequired = withAuthenticationRequired; const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = __importDefault(require("react")); const AuthContext_1 = require("../AuthContext.cjs"); const LoadingScreen_1 = require("../components/LoadingScreen.cjs"); const InadimplentScreen_1 = require("../components/InadimplentScreen.cjs"); function withAuthenticationRequired(Component, options) { return function AuthenticationRequired(props) { const { user, isLoading, isAuthenticated, loginWithRedirect, hasActivePlan, adimplent, isLoggingOut } = (0, AuthContext_1.useAuth)(); const { onRedirecting, returnTo, requiredPlans, LoadingComponent = LoadingScreen_1.LoadingScreen, AuthComponent, InadimplentComponent = InadimplentScreen_1.InadimplentScreen } = options || {}; console.log('=== withAuthenticationRequired Debug ==='); console.log('isLoading:', isLoading); console.log('isAuthenticated:', isAuthenticated); console.log('user email:', user === null || user === void 0 ? void 0 : user.email); console.log('requiredPlans:', requiredPlans); // If logging out, show loading and prevent further action if (isLoggingOut) { console.log('🚪 User is logging out - showing loading'); return (0, jsx_runtime_1.jsx)(LoadingComponent, {}); } // Show loading while authentication state is being determined if (isLoading) { console.log('🔄 Showing loading - authentication state being determined'); return (0, jsx_runtime_1.jsx)(LoadingComponent, {}); } // If not authenticated, redirect to login or show auth component if (!isAuthenticated) { console.log('🚫 User not authenticated - redirecting to login'); if (onRedirecting) { const RedirectingComponent = onRedirecting; react_1.default.useEffect(() => { const timer = setTimeout(() => { loginWithRedirect({ authorizationParams: { redirect_uri: returnTo || window.location.href } }); }, 100); return () => clearTimeout(timer); }, []); return (0, jsx_runtime_1.jsx)(RedirectingComponent, {}); } if (AuthComponent) { return (0, jsx_runtime_1.jsx)(AuthComponent, {}); } react_1.default.useEffect(() => { loginWithRedirect({ authorizationParams: { redirect_uri: returnTo || window.location.href } }); }, []); return (0, jsx_runtime_1.jsx)(LoadingComponent, {}); } console.log('✅ User is authenticated, checking subscription requirements...'); // Check subscription requirements if (requiredPlans && requiredPlans.length > 0) { console.log('🔍 Checking required plans:', requiredPlans); const hasRequiredPlan = hasActivePlan(requiredPlans); console.log('📋 hasActivePlan result:', hasRequiredPlan); if (!hasRequiredPlan) { console.log('❌ User does not have required plan - showing subscription required page'); return (0, jsx_runtime_1.jsx)(InadimplentComponent, {}); } console.log('✅ User has required plan - granting access to component'); return (0, jsx_runtime_1.jsx)(Component, { ...props }); } // No specific plans required - use legacy adimplent check console.log('🔍 No specific plans required, checking legacy adimplent status:', adimplent); if (!adimplent) { console.log('❌ User is not adimplent - showing subscription required page'); return (0, jsx_runtime_1.jsx)(InadimplentComponent, {}); } console.log('✅ User is adimplent - granting access to component'); return (0, jsx_runtime_1.jsx)(Component, { ...props }); }; } //# sourceMappingURL=withAuthenticationRequired.js.map