@nakedobjects/gemini
Version:
Single Page Application client for a Naked Objects application.
56 lines • 11.5 kB
JavaScript
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=