kinde-angular
Version:
Angular wrapper for the Kinde TypeScript SDK
25 lines • 4.03 kB
JavaScript
import { inject } from "@angular/core";
import { KindeAngularService } from "./kinde-angular.service";
import { take, tap } from "rxjs";
import { Router } from "@angular/router";
export const canMatchAuthGuard = () => {
const authService = inject(KindeAngularService);
return authService.isAuthenticated$.pipe(take(1));
};
export const canActivateAuthGuard = () => {
const authService = inject(KindeAngularService);
return authService.isAuthenticated$.pipe(take(1), tap(async (isAuthenticated) => {
if (!isAuthenticated) {
await authService.login();
}
}));
};
export const featureFlagGuard = (flagName, redirect) => {
return async () => {
const authService = inject(KindeAngularService);
const router = inject(Router);
const isEnabled = await authService.getFeatureFlagEnabled(flagName);
return isEnabled || router.createUrlTree([redirect || '/']);
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2tpbmRlLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUE2QixNQUFNLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBZSxHQUFHLEVBQUU7SUFDaEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFrQixHQUFHLEVBQUU7SUFDdEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLEtBQUssRUFBQyxlQUFlLEVBQUMsRUFBRTtRQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQWdCLEVBQUUsUUFBaUIsRUFBaUIsRUFBRTtJQUNyRixPQUFPLEtBQUssSUFBZ0MsRUFBRTtRQUM1QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEUsT0FBTyxTQUFTLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBLaW5kZUFuZ3VsYXJTZXJ2aWNlIH0gZnJvbSBcIi4va2luZGUtYW5ndWxhci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyB0YWtlLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiwgQ2FuTWF0Y2hGbiwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5leHBvcnQgY29uc3QgY2FuTWF0Y2hBdXRoR3VhcmQ6IENhbk1hdGNoRm4gPSAoKSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEtpbmRlQW5ndWxhclNlcnZpY2UpO1xuICByZXR1cm4gYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkJC5waXBlKHRha2UoMSkpO1xufVxuXG5leHBvcnQgY29uc3QgY2FuQWN0aXZhdGVBdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoKSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEtpbmRlQW5ndWxhclNlcnZpY2UpO1xuICByZXR1cm4gYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkJC5waXBlKFxuICAgIHRha2UoMSksXG4gICAgdGFwKGFzeW5jIGlzQXV0aGVudGljYXRlZCA9PiB7XG4gICAgICBpZiAoIWlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICBhd2FpdCBhdXRoU2VydmljZS5sb2dpbigpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG59XG5cbmV4cG9ydCBjb25zdCBmZWF0dXJlRmxhZ0d1YXJkID0gKGZsYWdOYW1lOiBzdHJpbmcsIHJlZGlyZWN0Pzogc3RyaW5nKTogQ2FuQWN0aXZhdGVGbiA9PiB7XG4gIHJldHVybiBhc3luYyAoKTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gPT4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEtpbmRlQW5ndWxhclNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGlzRW5hYmxlZCA9IGF3YWl0IGF1dGhTZXJ2aWNlLmdldEZlYXR1cmVGbGFnRW5hYmxlZChmbGFnTmFtZSk7XG5cbiAgICByZXR1cm4gaXNFbmFibGVkIHx8IHJvdXRlci5jcmVhdGVVcmxUcmVlKFtyZWRpcmVjdCB8fCAnLyddKTtcbiAgfVxufTtcbiJdfQ==