deleteSession(): void {
if (this.token()) {
- // fire and forget
this.egNet.request(
'open-ils.auth',
- 'open-ils.auth.session.delete', this.token());
+ 'open-ils.auth.session.delete', this.token())
+ .subscribe(x => console.log('logged out'))
}
}
// Base path for cookie-based storage.
loginSessionBasePath: string;
+ loginSessionKeys: string[] = [
+ 'eg.auth.token',
+ 'eg.auth.time',
+ 'eg.auth.token.oc',
+ 'eg.auth.time.oc'
+ ];
+
constructor(private cookieService: CookieService) {}
private parseJson(valJson: string): any {
}
removeSessionItem(key: string): void {
- this.cookieService.remove(key, {path : this.loginSessionBasePath});
}
removeLoginSessionItem(key: string): void {
+ this.cookieService.remove(key, {path : this.loginSessionBasePath});
}
clearLoginSessionItems(): void {
+ this.loginSessionKeys.forEach(
+ key => this.removeLoginSessionItem(key)
+ );
}
-
}
--- /dev/null
+import { Component, OnInit } from '@angular/core';
+import { Router } from '@angular/router';
+import { EgAuthService } from '@eg/core/auth.service';
+
+@Component({
+ template : '<div></div>'
+})
+
+export class EgStaffLogoutComponent implements OnInit {
+
+ constructor(
+ private router: Router,
+ private egAuth: EgAuthService,
+ ) {}
+
+ ngOnInit() {
+ this.egAuth.logout();
+ this.router.navigate(['/staff/login']);
+ }
+}
}
#staff-navbar.navbar-default .navbar-nav>li>a {
color: #fff;
+ padding-top: 5px;
+ padding-bottom: 5px;
}
#staff-navbar.navbar-default .navbar-nav>li>a:hover {
color: #ddd;
border-top-color: #ddd;
border-bottom-color: #ddd;
}
+#staff-navbar .nav-left {
+ margin-right: auto;
+}
+#staff-navbar .nav-right {
+ margin-right: 6px;
+}
direct routing
routerLink="/suff"
-->
-<nav id="staff-navbar" class="navbar navbar-expand-lg navbar-default">
+<nav id="staff-navbar" class="navbar fixed-top navbar-expand navbar-default">
<div class="collapse navbar-collapse">
- <ul class="navbar-nav">
+ <ul class="navbar-nav nav-left">
<li class="nav-item active">
- <a i18n class="nav-link" routerLink="/staff">Home</a>
+ <a i18n class="nav-link" routerLink="/staff/splash">Home</a>
</li>
<li ngbDropdown class="nav-item dropdown">
<a ngbDropdownToggle i18n class="nav-link dropdown-toggle">
Dropdown link
</a>
<div class="dropdown-menu" ngbDropdownMenu>
- <a i18n class="dropdown-item" routerLink="/staff">Action</a>
- <a i18n class="dropdown-item" routerLink="/staff">Another action</a>
-
+ <a i18n class="dropdown-item" routerLink="/staff">Test Action</a>
<a i18n class="dropdown-item"
- routerLink="/staff/circ/patron/bcsearch/">
- Checkout
- </a>
+ routerLink="/staff/circ/patron/bcsearch/">Checkout</a>
+ </div>
+ </li>
+ </ul>
+ <ul class="navbar-nav nav-right">
+ <li ngbDropdown class="nav-item dropdown">
+ <a ngbDropdownToggle i18n class="nav-link dropdown-toggle">Hamburger</a>
+ <div class="dropdown-menu" ngbDropdownMenu>
+ <a i18n class="dropdown-item" routerLink="/staff/logout">Logout</a>
</div>
</li>
</ul>
import { EgStaffAuthGuard } from './auth-guard.service';
import { EgStaffComponent } from './staff.component';
import { EgStaffLoginComponent } from './login.component';
+import { EgStaffLogoutComponent } from './logout.component';
import { EgStaffSplashComponent } from './splash.component';
const routes: Routes = [
{ path: 'login',
component: EgStaffLoginComponent
}, {
+ path: 'logout',
+ component: EgStaffLogoutComponent
+ }, {
path : 'splash',
canActivate : [EgStaffAuthGuard],
resolve : {commonDataResolver : EgStaffCommonDataResolver},
import { EgStaffRoutingModule } from './routing.module';
import { EgStaffNavComponent } from './nav.component';
import { EgStaffLoginComponent } from './login.component';
+import { EgStaffLogoutComponent } from './logout.component';
import { EgStaffSplashComponent } from './splash.component';
@NgModule({
EgStaffComponent,
EgStaffNavComponent,
EgStaffSplashComponent,
- EgStaffLoginComponent
+ EgStaffLoginComponent,
+ EgStaffLogoutComponent
],
imports: [
EgStaffRoutingModule,