ai-auth
Version:
Complete Auth-Agent SDK - Agent authentication for AI developers + OAuth client integration for website developers
53 lines • 1.83 kB
JavaScript
;
/**
* 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