@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
77 lines • 9.53 kB
JavaScript
import { Component, Input } from "@angular/core";
import * as i0 from "@angular/core";
import * as i1 from "../session/services/session-idle-timer.service";
import * as i2 from "../../user/services/user.service";
import * as i3 from "../../logger/services/logger.service";
import * as i4 from "../../configuration/configuration.service";
import * as i5 from "@angular/router";
export class AbstractSessionIdleComponent {
sessionTimer;
_user;
_log;
_config;
_router;
alertAtSeconds = 30;
sessionTimerSubscription;
_enableIdle;
constructor(sessionTimer, _user, _log, _config, _router) {
this.sessionTimer = sessionTimer;
this._user = _user;
this._log = _log;
this._config = _config;
this._router = _router;
this._enableIdle = this._config.getConfigurationSubtreeByPath('providers.auth.sessionTimeoutEnabled') ?? false;
}
ngOnInit() {
if (!this.sessionTimerSubscription && this._enableIdle) {
this.trackSessionTime();
}
}
trackSessionTime() {
this.sessionTimer.startTimer();
this.sessionTimerSubscription = this.sessionTimer.remainSeconds$.subscribe((t) => {
if (t === this.alertAtSeconds) {
this.alert();
}
if (t === 0) {
this.close();
this.logout();
}
});
}
continue() {
this.sessionTimer.resetTimer();
this._user.reload();
}
logout() {
this.cleanUp();
this._user.logout().subscribe(() => {
this._log.debug('User is logged out');
if (this._config.getConfigurationSubtreeByPath('services.auth.logoutRedirect')) {
const redirectPath = this._config.getConfigurationSubtreeByPath('services.auth.logoutRedirect');
this._router.navigate([redirectPath]);
}
});
}
cleanUp() {
this.sessionTimer.stopTimer();
}
ngOnDestroy() {
this.cleanUp();
if (this.sessionTimerSubscription) {
this.sessionTimerSubscription.unsubscribe();
}
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractSessionIdleComponent, deps: [{ token: i1.SessionIdleTimerService }, { token: i2.UserService }, { token: i3.LoggerService }, { token: i4.ConfigurationService }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractSessionIdleComponent, selector: "ncc-abstract-session-idle", inputs: { alertAtSeconds: "alertAtSeconds" }, ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractSessionIdleComponent, decorators: [{
type: Component,
args: [{
selector: 'ncc-abstract-session-idle',
template: ''
}]
}], ctorParameters: () => [{ type: i1.SessionIdleTimerService }, { type: i2.UserService }, { type: i3.LoggerService }, { type: i4.ConfigurationService }, { type: i5.Router }], propDecorators: { alertAtSeconds: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2Vzc2lvbi1pZGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvYXV0aGVudGljYXRpb24vY29tcG9uZW50cy9hYnN0cmFjdC1zZXNzaW9uLWlkbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWFsRSxNQUFNLE9BQWdCLDRCQUE0QjtJQVF4QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBVmIsY0FBYyxHQUFJLEVBQUUsQ0FBQztJQUV0Qix3QkFBd0IsQ0FBZ0I7SUFFdEMsV0FBVyxDQUFVO0lBRS9CLFlBQXNCLFlBQXFDLEVBQ3JDLEtBQWtCLEVBQ2xCLElBQW1CLEVBQ25CLE9BQTZCLEVBQzdCLE9BQWU7UUFKZixpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUFDckMsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLHNDQUFzQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ25ILENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVTLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQ3RFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDRixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEI7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNqQjtRQUNMLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsOEJBQThCLENBQUMsRUFBRTtnQkFDNUUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2dCQUNoRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7YUFDekM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFNUyxPQUFPO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQy9CLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMvQztJQUNMLENBQUM7d0dBbEVpQiw0QkFBNEI7NEZBQTVCLDRCQUE0QiwrR0FGcEMsRUFBRTs7NEZBRU0sNEJBQTRCO2tCQUpqRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzBNQUdZLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtTZXNzaW9uSWRsZVRpbWVyU2VydmljZX0gZnJvbSBcIi4uL3Nlc3Npb24vc2VydmljZXMvc2Vzc2lvbi1pZGxlLXRpbWVyLnNlcnZpY2VcIjtcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gXCIuLi8uLi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZVwiO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2VcIjtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC1zZXNzaW9uLWlkbGUnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlc3Npb25JZGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgYWxlcnRBdFNlY29uZHM/ID0gMzA7XG5cbiAgICBwcml2YXRlIHNlc3Npb25UaW1lclN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICAgIHByb3RlY3RlZCBfZW5hYmxlSWRsZTogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzZXNzaW9uVGltZXI6IFNlc3Npb25JZGxlVGltZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXNlcjogVXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jb25maWc6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXIpIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlSWRsZSA9IHRoaXMuX2NvbmZpZy5nZXRDb25maWd1cmF0aW9uU3VidHJlZUJ5UGF0aCgncHJvdmlkZXJzLmF1dGguc2Vzc2lvblRpbWVvdXRFbmFibGVkJykgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZXNzaW9uVGltZXJTdWJzY3JpcHRpb24gJiYgdGhpcy5fZW5hYmxlSWRsZSkge1xuICAgICAgICAgICAgdGhpcy50cmFja1Nlc3Npb25UaW1lKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhY2tTZXNzaW9uVGltZSgpIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uVGltZXIuc3RhcnRUaW1lcigpO1xuICAgICAgICB0aGlzLnNlc3Npb25UaW1lclN1YnNjcmlwdGlvbiA9IHRoaXMuc2Vzc2lvblRpbWVyLnJlbWFpblNlY29uZHMkLnN1YnNjcmliZShcbiAgICAgICAgICAgICh0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHQgPT09IHRoaXMuYWxlcnRBdFNlY29uZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnRpbnVlKCkge1xuICAgICAgICB0aGlzLnNlc3Npb25UaW1lci5yZXNldFRpbWVyKCk7XG4gICAgICAgIHRoaXMuX3VzZXIucmVsb2FkKClcbiAgICB9XG5cbiAgICBsb2dvdXQoKSB7XG4gICAgICAgIHRoaXMuY2xlYW5VcCgpXG4gICAgICAgIHRoaXMuX3VzZXIubG9nb3V0KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnVXNlciBpcyBsb2dnZWQgb3V0Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLmdldENvbmZpZ3VyYXRpb25TdWJ0cmVlQnlQYXRoKCdzZXJ2aWNlcy5hdXRoLmxvZ291dFJlZGlyZWN0JykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdFBhdGggPSB0aGlzLl9jb25maWcuZ2V0Q29uZmlndXJhdGlvblN1YnRyZWVCeVBhdGgoJ3NlcnZpY2VzLmF1dGgubG9nb3V0UmVkaXJlY3QnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3JlZGlyZWN0UGF0aF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgYWxlcnQoKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBjbG9zZSgpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIGNsZWFuVXAoKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvblRpbWVyLnN0b3BUaW1lcigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFuVXAoKTtcbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvblRpbWVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlc3Npb25UaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=