UNPKG

membros-react-sdk

Version:

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

78 lines 3.94 kB
"use client"; import { jsx as _jsx } from "react/jsx-runtime"; import React from "react"; import { useAuth } from "../AuthContext.esm.js"; import { LoadingScreen } from "../components/LoadingScreen.esm.js"; import { InadimplentScreen } from "../components/InadimplentScreen.esm.js"; export function withAuthenticationRequired(Component, options) { return function AuthenticationRequired(props) { const { user, isLoading, isAuthenticated, loginWithRedirect, hasActivePlan, adimplent, isLoggingOut } = useAuth(); const { onRedirecting, returnTo, requiredPlans, LoadingComponent = LoadingScreen, AuthComponent, InadimplentComponent = 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 _jsx(LoadingComponent, {}); } // Show loading while authentication state is being determined if (isLoading) { console.log('🔄 Showing loading - authentication state being determined'); return _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.useEffect(() => { const timer = setTimeout(() => { loginWithRedirect({ authorizationParams: { redirect_uri: returnTo || window.location.href } }); }, 100); return () => clearTimeout(timer); }, []); return _jsx(RedirectingComponent, {}); } if (AuthComponent) { return _jsx(AuthComponent, {}); } React.useEffect(() => { loginWithRedirect({ authorizationParams: { redirect_uri: returnTo || window.location.href } }); }, []); return _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 _jsx(InadimplentComponent, {}); } console.log('✅ User has required plan - granting access to component'); return _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 _jsx(InadimplentComponent, {}); } console.log('✅ User is adimplent - granting access to component'); return _jsx(Component, { ...props }); }; } //# sourceMappingURL=withAuthenticationRequired.js.map