UNPKG

@nakedobjects/gemini

Version:

Single Page Application client for a Naked Objects application.

56 lines 11.5 kB
import { Component } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@nakedobjects/services"; import * as i2 from "@angular/common/http"; import * as i3 from "@angular/common"; export class LogoffComponent { context; authService; configService; http; location; constructor(context, authService, configService, http, location) { this.context = context; this.authService = authService; this.configService = configService; this.http = http; this.location = location; } userId = ''; isActive = true; userIsLoggedIn() { return this.authService.isAuthenticated(); } cancel() { this.isActive = false; this.location.back(); } logoff() { this.isActive = false; const serverLogoffUrl = this.configService.config.logoffUrl; const postLogoffUrl = this.configService.config.postLogoffUrl; if (serverLogoffUrl) { const args = { withCredentials: true }; this.http.post(this.configService.config.logoffUrl, args); } // logoff client without waiting for server this.authService.logout(); // if set this will reload page and cause all cached data to be lost. if (postLogoffUrl) { this.context.clearingDataFlag = true; window.location.href = postLogoffUrl; } } ngOnInit() { this.context.getUser().then(u => this.userId = u.userName() || 'Unknown'); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: LogoffComponent, deps: [{ token: i1.ContextService }, { token: i1.AuthService }, { token: i1.ConfigService }, { token: i2.HttpClient }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: LogoffComponent, selector: "nof-logoff", ngImport: i0, template: "<div id=\"pane1\" class=\"single\">\n <div class=\"logoff\">\n <div class=\"header\">\n <div class=\"title\">Log Off {{configService.config.applicationName}}</div>\n </div>\n <ng-container *ngIf=\"userIsLoggedIn()\">\n <p>Please confirm log off</p>\n <p>User : {{userId}}</p>\n <button class=\"btn btn-primary btn-margin\" type=\"button\" value=\"Log Off\" (click)=\"logoff()\">Log Off</button>\n </ng-container>\n <ng-container *ngIf=\"!userIsLoggedIn()\">\n <p>No user is logged in</p>\n </ng-container>\n <button class=\"btn btn-primary btn-margin\" type=\"button\" value=\"Cancel\" (click)=\"cancel()\">Cancel</button>\n </div>\n</div>", styles: [":host{display:block;padding-left:var(--space-5);height:100%;overflow-y:auto;color:#fff;font-size:var(--font-size-2);font-weight:var(--font-weight-1)}.header{display:block;margin-bottom:var(--space-5);overflow:hidden;color:var(--contrast-text-color);font-size:var(--font-size-4);font-weight:var(--font-weight-2);background-image:var(--header-background-color)}.title{position:relative;font-weight:var(--font-weight-2);font-size:var(--font-size-4);line-height:38pt;margin-left:var(--space-1);padding-left:var(--space-3);padding-right:var(--space-3);margin-right:var(--space-5);margin-top:var(--space-1);display:block}button{color:var(--default-text-color);background-color:var(--default-background-color);border:none;outline-width:1px;outline-color:var(--default-outline-color);margin-right:var(--space-5);display:block;float:left;margin-left:var(--space-1);margin-right:var(--space-4);margin-bottom:var(--space-3);font-size:var(--font-size-3);font-weight:var(--font-weight-2)}button:hover{outline-width:2px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: LogoffComponent, decorators: [{ type: Component, args: [{ selector: 'nof-logoff', template: "<div id=\"pane1\" class=\"single\">\n <div class=\"logoff\">\n <div class=\"header\">\n <div class=\"title\">Log Off {{configService.config.applicationName}}</div>\n </div>\n <ng-container *ngIf=\"userIsLoggedIn()\">\n <p>Please confirm log off</p>\n <p>User : {{userId}}</p>\n <button class=\"btn btn-primary btn-margin\" type=\"button\" value=\"Log Off\" (click)=\"logoff()\">Log Off</button>\n </ng-container>\n <ng-container *ngIf=\"!userIsLoggedIn()\">\n <p>No user is logged in</p>\n </ng-container>\n <button class=\"btn btn-primary btn-margin\" type=\"button\" value=\"Cancel\" (click)=\"cancel()\">Cancel</button>\n </div>\n</div>", styles: [":host{display:block;padding-left:var(--space-5);height:100%;overflow-y:auto;color:#fff;font-size:var(--font-size-2);font-weight:var(--font-weight-1)}.header{display:block;margin-bottom:var(--space-5);overflow:hidden;color:var(--contrast-text-color);font-size:var(--font-size-4);font-weight:var(--font-weight-2);background-image:var(--header-background-color)}.title{position:relative;font-weight:var(--font-weight-2);font-size:var(--font-size-4);line-height:38pt;margin-left:var(--space-1);padding-left:var(--space-3);padding-right:var(--space-3);margin-right:var(--space-5);margin-top:var(--space-1);display:block}button{color:var(--default-text-color);background-color:var(--default-background-color);border:none;outline-width:1px;outline-color:var(--default-outline-color);margin-right:var(--space-5);display:block;float:left;margin-left:var(--space-1);margin-right:var(--space-4);margin-bottom:var(--space-3);font-size:var(--font-size-3);font-weight:var(--font-weight-2)}button:hover{outline-width:2px}\n"] }] }], ctorParameters: () => [{ type: i1.ContextService }, { type: i1.AuthService }, { type: i1.ConfigService }, { type: i2.HttpClient }, { type: i3.Location }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb2ZmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2dlbWluaS9zcmMvbG9nb2ZmL2xvZ29mZi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9nZW1pbmkvc3JjL2xvZ29mZi9sb2dvZmYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRbEQsTUFBTSxPQUFPLGVBQWU7SUFHSDtJQUNBO0lBQ1I7SUFDUTtJQUNBO0lBTHJCLFlBQ3FCLE9BQXVCLEVBQ3ZCLFdBQXdCLEVBQ2hDLGFBQTRCLEVBQ3BCLElBQWdCLEVBQ2hCLFFBQWtCO1FBSmxCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUNuQyxDQUFDO0lBRUwsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVaLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFaEIsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDNUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBRTlELElBQUksZUFBZSxFQUFFLENBQUM7WUFFbEIsTUFBTSxJQUFJLEdBQUc7Z0JBQ1QsZUFBZSxFQUFFLElBQUk7YUFDeEIsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFMUIscUVBQXFFO1FBQ3JFLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDckMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksU0FBUyxDQUFDLENBQUM7SUFDOUUsQ0FBQzt1R0FqRFEsZUFBZTsyRkFBZixlQUFlLGtEQ1Y1QiwrdUJBZU07OzJGRExPLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0ksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIENvbmZpZ1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnQG5ha2Vkb2JqZWN0cy9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbm9mLWxvZ29mZicsXG4gICAgdGVtcGxhdGVVcmw6ICdsb2dvZmYuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydsb2dvZmYuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvZ29mZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgKSB7IH1cblxuICAgIHVzZXJJZCA9ICcnO1xuXG4gICAgaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgdXNlcklzTG9nZ2VkSW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpO1xuICAgIH1cblxuICAgIGNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICB9XG5cbiAgICBsb2dvZmYoKSB7XG4gICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2VydmVyTG9nb2ZmVXJsID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5sb2dvZmZVcmw7XG4gICAgICAgIGNvbnN0IHBvc3RMb2dvZmZVcmwgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnBvc3RMb2dvZmZVcmw7XG5cbiAgICAgICAgaWYgKHNlcnZlckxvZ29mZlVybCkge1xuXG4gICAgICAgICAgICBjb25zdCBhcmdzID0ge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5sb2dvZmZVcmwsIGFyZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbG9nb2ZmIGNsaWVudCB3aXRob3V0IHdhaXRpbmcgZm9yIHNlcnZlclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpO1xuXG4gICAgICAgIC8vIGlmIHNldCB0aGlzIHdpbGwgcmVsb2FkIHBhZ2UgYW5kIGNhdXNlIGFsbCBjYWNoZWQgZGF0YSB0byBiZSBsb3N0LlxuICAgICAgICBpZiAocG9zdExvZ29mZlVybCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmNsZWFyaW5nRGF0YUZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwb3N0TG9nb2ZmVXJsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5nZXRVc2VyKCkudGhlbih1ID0+IHRoaXMudXNlcklkID0gdS51c2VyTmFtZSgpIHx8ICdVbmtub3duJyk7XG4gICAgfVxufVxuIiwiPGRpdiBpZD1cInBhbmUxXCIgY2xhc3M9XCJzaW5nbGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibG9nb2ZmXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPkxvZyBPZmYge3tjb25maWdTZXJ2aWNlLmNvbmZpZy5hcHBsaWNhdGlvbk5hbWV9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXJJc0xvZ2dlZEluKClcIj5cbiAgICAgICAgICAgIDxwPlBsZWFzZSBjb25maXJtIGxvZyBvZmY8L3A+XG4gICAgICAgICAgICA8cD5Vc2VyIDoge3t1c2VySWR9fTwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLW1hcmdpblwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIkxvZyBPZmZcIiAoY2xpY2spPVwibG9nb2ZmKClcIj5Mb2cgT2ZmPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVzZXJJc0xvZ2dlZEluKClcIj5cbiAgICAgICAgICAgIDxwPk5vIHVzZXIgaXMgbG9nZ2VkIGluPC9wPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tbWFyZ2luXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiQ2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=