UNPKG

ai-auth

Version:

Complete Auth-Agent SDK - Agent authentication for AI developers + OAuth client integration for website developers

53 lines 1.83 kB
"use strict"; /** * Protected Route components for Auth-Agent */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProtectedRoute = ProtectedRoute; exports.requireAuth = requireAuth; const react_1 = __importDefault(require("react")); const AuthContext_1 = require("./AuthContext"); /** * ProtectedRoute component * Only renders children if user is authenticated */ function ProtectedRoute({ children, fallback, onRedirect }) { const { isAuthenticated, isLoading } = (0, AuthContext_1.useAuth)(); if (isLoading) { return fallback || react_1.default.createElement("div", null, "Loading..."); } if (!isAuthenticated) { if (onRedirect) { onRedirect(); } return fallback || null; } return react_1.default.createElement(react_1.default.Fragment, null, children); } /** * requireAuth HOC * Wraps a component to require authentication */ function requireAuth(Component, options) { return function AuthenticatedComponent(props) { const { isAuthenticated, isLoading, login } = (0, AuthContext_1.useAuth)(); if (isLoading) { return react_1.default.createElement(react_1.default.Fragment, null, options?.fallback || react_1.default.createElement("div", null, "Loading...")); } if (!isAuthenticated) { if (options?.onUnauthenticated) { options.onUnauthenticated(); } else { // Auto-redirect to login login(); } return null; } return react_1.default.createElement(Component, { ...props }); }; } //# sourceMappingURL=ProtectedRoute.js.map