ng-smart-on-fhir
Version:
[](https://srdc.com.tr/en)
51 lines • 6.68 kB
JavaScript
import { CallbackComponent } from "../components/callback/callback.component";
import { LaunchComponent } from "../components/launch/launch.component";
import { LoginComponent } from "../components/login/login.component";
import { ShcShlHandlerComponent } from "../components/shc-shl-handler/shc-shl-handler.component";
import { redirectUnauthorizedToLogin } from "./guard/redirect-to-login-guard";
/**
* Routes wrapper to add required components to execute Smart App Launch and Login flows
* @param routes - Other application routes
* @param redirectTo - Redirection after login
* @param method - Allowed authentication flows: launch/client(login)/both
* @param redirectToLoginIfUnauthorized - If true, adds auth guards to the application components
* @param enableShc - If true, offline mode is allowed using Smart Health Cards
*/
export const withSmartHandlerRoutes = (routes, redirectTo, method, redirectToLoginIfUnauthorized, enableShc) => {
const smartRoutes = [{
path: 'callback',
component: CallbackComponent,
data: { redirectTo }
}];
if (method !== 'client') {
smartRoutes.push({
path: 'launch',
component: LaunchComponent
});
}
if (method !== 'launch') {
smartRoutes.push({
path: 'login',
component: LoginComponent
});
}
if (enableShc) {
smartRoutes.push({
path: 'shl',
component: ShcShlHandlerComponent
}, {
path: 'shc',
component: ShcShlHandlerComponent
});
}
return [
...routes.map(route => {
if (redirectToLoginIfUnauthorized) {
route.canActivate = (route.canActivate || []).concat([redirectUnauthorizedToLogin]);
}
return route;
}),
...smartRoutes
];
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtaGFuZGxlci1yb3V0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1vbi1maGlyL3NyYy9saWIvcm91dGVzL3NtYXJ0LWhhbmRsZXItcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0YsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFNUU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUNqQyxDQUFDLE1BQWMsRUFBRSxVQUFrQixFQUFFLE1BQW9DLEVBQUUsNkJBQXNDLEVBQUUsU0FBbUIsRUFBRSxFQUFFO0lBQ3hJLE1BQU0sV0FBVyxHQUFXLENBQUM7WUFDM0IsSUFBSSxFQUFFLFVBQVU7WUFDaEIsU0FBUyxFQUFFLGlCQUFpQjtZQUM1QixJQUFJLEVBQUUsRUFBQyxVQUFVLEVBQUM7U0FDbkIsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEIsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNmLElBQUksRUFBRSxRQUFRO1lBQ2QsU0FBUyxFQUFFLGVBQWU7U0FDM0IsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELElBQUksTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsT0FBTztZQUNiLFNBQVMsRUFBRSxjQUFjO1NBQzFCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNmLElBQUksRUFBRSxLQUFLO1lBQ1gsU0FBUyxFQUFFLHNCQUFzQjtTQUNsQyxFQUFFO1lBQ0QsSUFBSSxFQUFFLEtBQUs7WUFDWCxTQUFTLEVBQUUsc0JBQXNCO1NBQ2xDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxPQUFPO1FBQ0wsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BCLElBQUksNkJBQTZCLEVBQUUsQ0FBQztnQkFDbEMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUMsQ0FBQztRQUNGLEdBQUcsV0FBVztLQUNmLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JvdXRlc30gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0NhbGxiYWNrQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50cy9jYWxsYmFjay9jYWxsYmFjay5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtMYXVuY2hDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnRzL2xhdW5jaC9sYXVuY2guY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TG9naW5Db21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NoY1NobEhhbmRsZXJDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnRzL3NoYy1zaGwtaGFuZGxlci9zaGMtc2hsLWhhbmRsZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7cmVkaXJlY3RVbmF1dGhvcml6ZWRUb0xvZ2lufSBmcm9tIFwiLi9ndWFyZC9yZWRpcmVjdC10by1sb2dpbi1ndWFyZFwiO1xyXG5cclxuLyoqXHJcbiAqIFJvdXRlcyB3cmFwcGVyIHRvIGFkZCByZXF1aXJlZCBjb21wb25lbnRzIHRvIGV4ZWN1dGUgU21hcnQgQXBwIExhdW5jaCBhbmQgTG9naW4gZmxvd3NcclxuICogQHBhcmFtIHJvdXRlcyAtIE90aGVyIGFwcGxpY2F0aW9uIHJvdXRlc1xyXG4gKiBAcGFyYW0gcmVkaXJlY3RUbyAtIFJlZGlyZWN0aW9uIGFmdGVyIGxvZ2luXHJcbiAqIEBwYXJhbSBtZXRob2QgLSBBbGxvd2VkIGF1dGhlbnRpY2F0aW9uIGZsb3dzOiBsYXVuY2gvY2xpZW50KGxvZ2luKS9ib3RoXHJcbiAqIEBwYXJhbSByZWRpcmVjdFRvTG9naW5JZlVuYXV0aG9yaXplZCAtIElmIHRydWUsIGFkZHMgYXV0aCBndWFyZHMgdG8gdGhlIGFwcGxpY2F0aW9uIGNvbXBvbmVudHNcclxuICogQHBhcmFtIGVuYWJsZVNoYyAtIElmIHRydWUsIG9mZmxpbmUgbW9kZSBpcyBhbGxvd2VkIHVzaW5nIFNtYXJ0IEhlYWx0aCBDYXJkc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHdpdGhTbWFydEhhbmRsZXJSb3V0ZXM6IChyb3V0ZXM6IFJvdXRlcywgcmVkaXJlY3RUbzogc3RyaW5nLCBtZXRob2Q6ICdsYXVuY2gnIHwgJ2NsaWVudCcgfCAnYm90aCcsIHJlZGlyZWN0VG9Mb2dpbklmVW5hdXRob3JpemVkOiBib29sZWFuLCBlbmFibGVTaGM/OiBib29sZWFuKSA9PiBSb3V0ZXMgPVxyXG4gIChyb3V0ZXM6IFJvdXRlcywgcmVkaXJlY3RUbzogc3RyaW5nLCBtZXRob2Q6ICdsYXVuY2gnIHwgJ2NsaWVudCcgfCAnYm90aCcsIHJlZGlyZWN0VG9Mb2dpbklmVW5hdXRob3JpemVkOiBib29sZWFuLCBlbmFibGVTaGM/OiBib29sZWFuKSA9PiB7XHJcbiAgICBjb25zdCBzbWFydFJvdXRlczogUm91dGVzID0gW3tcclxuICAgICAgcGF0aDogJ2NhbGxiYWNrJyxcclxuICAgICAgY29tcG9uZW50OiBDYWxsYmFja0NvbXBvbmVudCxcclxuICAgICAgZGF0YToge3JlZGlyZWN0VG99XHJcbiAgICB9XTtcclxuICAgIGlmIChtZXRob2QgIT09ICdjbGllbnQnKSB7XHJcbiAgICAgIHNtYXJ0Um91dGVzLnB1c2goe1xyXG4gICAgICAgIHBhdGg6ICdsYXVuY2gnLFxyXG4gICAgICAgIGNvbXBvbmVudDogTGF1bmNoQ29tcG9uZW50XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAobWV0aG9kICE9PSAnbGF1bmNoJykge1xyXG4gICAgICBzbWFydFJvdXRlcy5wdXNoKHtcclxuICAgICAgICBwYXRoOiAnbG9naW4nLFxyXG4gICAgICAgIGNvbXBvbmVudDogTG9naW5Db21wb25lbnRcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGlmIChlbmFibGVTaGMpIHtcclxuICAgICAgc21hcnRSb3V0ZXMucHVzaCh7XHJcbiAgICAgICAgcGF0aDogJ3NobCcsXHJcbiAgICAgICAgY29tcG9uZW50OiBTaGNTaGxIYW5kbGVyQ29tcG9uZW50XHJcbiAgICAgIH0sIHtcclxuICAgICAgICBwYXRoOiAnc2hjJyxcclxuICAgICAgICBjb21wb25lbnQ6IFNoY1NobEhhbmRsZXJDb21wb25lbnRcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHJldHVybiBbXHJcbiAgICAgIC4uLnJvdXRlcy5tYXAocm91dGUgPT4ge1xyXG4gICAgICAgIGlmIChyZWRpcmVjdFRvTG9naW5JZlVuYXV0aG9yaXplZCkge1xyXG4gICAgICAgICAgcm91dGUuY2FuQWN0aXZhdGUgPSAocm91dGUuY2FuQWN0aXZhdGUgfHwgW10pLmNvbmNhdChbcmVkaXJlY3RVbmF1dGhvcml6ZWRUb0xvZ2luXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByb3V0ZVxyXG4gICAgICB9KSxcclxuICAgICAgLi4uc21hcnRSb3V0ZXNcclxuICAgIF1cclxuICB9XHJcbiJdfQ==