mirror of
https://github.com/akveo/ngx-admin.git
synced 2025-12-16 23:40:14 +01:00
fix(docs): guard before redirecting
This commit is contained in:
parent
413cbdbd01
commit
ec3ef4e879
5 changed files with 21 additions and 10 deletions
|
|
@ -15,12 +15,16 @@ export class ThemeGuard implements CanActivate {
|
||||||
): Observable<boolean> | Promise<boolean> | boolean {
|
): Observable<boolean> | Promise<boolean> | boolean {
|
||||||
return this.currentThemeService.currentTheme$.pipe(
|
return this.currentThemeService.currentTheme$.pipe(
|
||||||
map(theme => {
|
map(theme => {
|
||||||
const currentThemeExpiration = JSON.parse(theme).expires_in;
|
if (!theme || this.hasExpired(theme)) {
|
||||||
const currentDate = new Date().getTime();
|
|
||||||
if (!theme || currentDate > currentThemeExpiration) {
|
|
||||||
this.router.navigate(['themes']);
|
this.router.navigate(['themes']);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private hasExpired(theme): boolean {
|
||||||
|
const currentThemeExpiration = JSON.parse(theme).expires_in;
|
||||||
|
const currentDate = new Date().getTime();
|
||||||
|
return currentDate > currentThemeExpiration;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ export class CurrentThemeService implements OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentTheme(): string {
|
getCurrentTheme(): string {
|
||||||
return JSON.parse(localStorage.theme).themeName;
|
return localStorage.theme ? JSON.parse(localStorage.theme).themeName : 'default';
|
||||||
}
|
}
|
||||||
|
|
||||||
calculateExpiration(iat: number): number {
|
calculateExpiration(iat: number): number {
|
||||||
|
|
|
||||||
|
|
@ -62,15 +62,14 @@ export class HeaderComponent implements OnInit, OnDestroy {
|
||||||
private analytics: AnalyticsService,
|
private analytics: AnalyticsService,
|
||||||
private currentThemeService: CurrentThemeService,
|
private currentThemeService: CurrentThemeService,
|
||||||
) {
|
) {
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.materialTheme$ = new Observable(subscriber => {
|
this.materialTheme$ = new Observable(subscriber => {
|
||||||
const themeName: string = this.currentThemeService.getCurrentTheme();
|
const themeName: string = this.currentThemeService.getCurrentTheme();
|
||||||
|
|
||||||
subscriber.next(themeName.startsWith('material'));
|
subscriber.next(themeName.startsWith('material'));
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
this.currentTheme = this.themeService.currentTheme;
|
this.currentTheme = this.themeService.currentTheme;
|
||||||
|
|
||||||
this.userService.getUsers()
|
this.userService.getUsers()
|
||||||
|
|
@ -104,6 +103,10 @@ export class HeaderComponent implements OnInit, OnDestroy {
|
||||||
changeTheme(themeName: string) {
|
changeTheme(themeName: string) {
|
||||||
this.currentThemeService.setCurrentTheme(themeName);
|
this.currentThemeService.setCurrentTheme(themeName);
|
||||||
this.themeService.changeTheme(themeName);
|
this.themeService.changeTheme(themeName);
|
||||||
|
|
||||||
|
this.materialTheme$ = new Observable(subscriber => {
|
||||||
|
subscriber.next(this.currentThemeService.getCurrentTheme().startsWith('material'));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleSidebar(): boolean {
|
toggleSidebar(): boolean {
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,8 @@ export const routes: Routes = [
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{ path: '', redirectTo: 'themes', pathMatch: 'full' },
|
{ path: '', redirectTo: 'pages/dashboard', pathMatch: 'full' },
|
||||||
{ path: '**', redirectTo: 'themes' },
|
{ path: '**', redirectTo: 'pages/dashboard' },
|
||||||
];
|
];
|
||||||
|
|
||||||
const config: ExtraOptions = {
|
const config: ExtraOptions = {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import { NbThemeService } from '@nebular/theme';
|
||||||
import { AnalyticsService } from './@core/utils/analytics.service';
|
import { AnalyticsService } from './@core/utils/analytics.service';
|
||||||
import { AbService } from './@core/utils/ab.service';
|
import { AbService } from './@core/utils/ab.service';
|
||||||
import { SeoService } from './@core/utils/seo.service';
|
import { SeoService } from './@core/utils/seo.service';
|
||||||
|
import { CurrentThemeService } from './@core/utils/theme.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ngx-app',
|
selector: 'ngx-app',
|
||||||
|
|
@ -24,7 +25,8 @@ export class AppComponent implements OnInit {
|
||||||
private seoService: SeoService,
|
private seoService: SeoService,
|
||||||
private activatedRoute: ActivatedRoute,
|
private activatedRoute: ActivatedRoute,
|
||||||
private abService: AbService,
|
private abService: AbService,
|
||||||
private themeService: NbThemeService) {
|
private themeService: NbThemeService,
|
||||||
|
private currentThemeService: CurrentThemeService) {
|
||||||
|
|
||||||
this.themeService.onThemeChange()
|
this.themeService.onThemeChange()
|
||||||
.subscribe((theme: any) => {
|
.subscribe((theme: any) => {
|
||||||
|
|
@ -35,6 +37,8 @@ export class AppComponent implements OnInit {
|
||||||
.subscribe((params: any) => {
|
.subscribe((params: any) => {
|
||||||
if (params.theme && this.themes.includes(params.theme)) {
|
if (params.theme && this.themes.includes(params.theme)) {
|
||||||
this.themeService.changeTheme(params.theme);
|
this.themeService.changeTheme(params.theme);
|
||||||
|
} else {
|
||||||
|
this.themeService.changeTheme(this.currentThemeService.getCurrentTheme());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue