add further permission on the navigation

This commit is contained in:
tiago.kayaya
2022-03-29 16:49:51 +01:00
parent 5a4a7562fa
commit 4684ed1e98
5 changed files with 53 additions and 17 deletions
+25 -3
View File
@@ -3,15 +3,20 @@ import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTr
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { SessionStore } from '../store/session.service'; import { SessionStore } from '../store/session.service';
import { AlertController, Platform } from '@ionic/angular'; import { AlertController, Platform } from '@ionic/angular';
import { PermissionService } from '../services/permission.service';
import { PermissionList } from '../models/permissionList';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
export class InactivityGuard implements CanActivate { export class InactivityGuard implements CanActivate {
permissionList = new PermissionList();
constructor( constructor(
private router:Router, private router:Router,
private platform: Platform, private platform: Platform,
public permissionService: PermissionService,
){} ){}
canActivate( canActivate(
@@ -19,14 +24,31 @@ export class InactivityGuard implements CanActivate {
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree { state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
if (this.platform.is('desktop') || this.platform.is('mobileweb')) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
this.router.navigate(['/home/events']); if(this.permissionService.userPermission(this.permissionList.Agenda) || this.permissionService.userPermission(this.permissionList.Gabinete)){
this.router.navigate(['/home/events']);
}
else if(this.permissionService.userPermission(this.permissionList.Chat)){
this.router.navigate(['/home/chat']);
}
else if(this.permissionService.userPermission(this.permissionList.Actions)){
this.router.navigate(['/home/publications']);
}
return false return false
} else if(SessionStore.exist && SessionStore.user.Inactivity && !SessionStore.hasPin ) { } else if(SessionStore.exist && SessionStore.user.Inactivity && !SessionStore.hasPin ) {
return true return true
} else if(SessionStore.exist && !SessionStore.user.Inactivity) { } else if(SessionStore.exist && !SessionStore.user.Inactivity) {
return true return true
} else { }//Mobile or Tablet without session
this.router.navigate(['/home/events']); else {
if(this.permissionService.userPermission(this.permissionList.Agenda) || this.permissionService.userPermission(this.permissionList.Gabinete)){
this.router.navigate(['/home/events']);
}
else if(this.permissionService.userPermission(this.permissionList.Chat)){
this.router.navigate(['/home/chat']);
}
else if(this.permissionService.userPermission(this.permissionList.Actions)){
this.router.navigate(['/home/publications']);
}
return false return false
} }
+1 -1
View File
@@ -2,7 +2,7 @@
<ion-tabs class="tab"> <ion-tabs class="tab">
<ion-tab-bar class="bottoms" slot="bottom"> <ion-tab-bar class="bottoms" slot="bottom">
<ion-tab-button tab="events" [class.active]="pathname === '/home/events'"> <ion-tab-button *ngIf="p.userPermission([permissionList.Agenda]) || p.userPermission([permissionList.Gabinete])" tab="events" [class.active]="pathname === '/home/events'">
<!-- <ion-icon name="home"></ion-icon> --> <!-- <ion-icon name="home"></ion-icon> -->
<ion-icon *ngIf="pathname != '/home/events'" class="nav-icon" src="assets/images/icons-nav-home.svg"></ion-icon> <ion-icon *ngIf="pathname != '/home/events'" class="nav-icon" src="assets/images/icons-nav-home.svg"></ion-icon>
<ion-icon *ngIf="pathname == '/home/events'" class="nav-icon" src="assets/images/nav-hover/icons-nav-home-active.svg"></ion-icon> <ion-icon *ngIf="pathname == '/home/events'" class="nav-icon" src="assets/images/nav-hover/icons-nav-home-active.svg"></ion-icon>
+24 -9
View File
@@ -12,6 +12,8 @@ import { ChangeProfileService } from 'src/app/services/change-profile.service';
import { ThemeService } from 'src/app/services/theme.service'; import { ThemeService } from 'src/app/services/theme.service';
import { StorageService } from 'src/app/services/storage.service'; import { StorageService } from 'src/app/services/storage.service';
import { ChatService } from 'src/app/services/chat.service'; import { ChatService } from 'src/app/services/chat.service';
import { PermissionService } from 'src/app/services/permission.service';
import { PermissionList } from 'src/app/models/permissionList';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
@@ -29,7 +31,8 @@ export class LoginPage implements OnInit {
hasPin: boolean hasPin: boolean
loginPreference: string loginPreference: string
sessionStore = SessionStore sessionStore = SessionStore;
permissionList = new PermissionList();
constructor( constructor(
private notificatinsservice: NotificationsService, private notificatinsservice: NotificationsService,
@@ -40,7 +43,8 @@ export class LoginPage implements OnInit {
private clearStoreService: ClearStoreService, private clearStoreService: ClearStoreService,
private changeProfileService: ChangeProfileService, private changeProfileService: ChangeProfileService,
public ThemeService: ThemeService, public ThemeService: ThemeService,
private storageservice: StorageService private storageservice: StorageService,
public permissionService: PermissionService,
) {} ) {}
ngOnInit() { ngOnInit() {
@@ -101,26 +105,29 @@ export class LoginPage implements OnInit {
// login to API successfully // login to API successfully
if (attempt) { if (attempt) {
if (attempt.UserId == SessionStore.user.UserId) { if (attempt.UserId == SessionStore.user.UserId) {
await this.authService.SetSession(attempt, this.userattempt); await this.authService.SetSession(attempt, this.userattempt);
await this.authService.loginChat(); await this.authService.loginChat();
await this.authService.loginToChatWs() await this.authService.loginToChatWs();
this.getToken(); this.getToken();
SessionStore.setInativity(true); SessionStore.setInativity(true);
this.goback() this.goback();
} else { } else {
this.clearStoreService.clear() this.clearStoreService.clear();
SessionStore.delete() SessionStore.delete();
window.localStorage.clear(); window.localStorage.clear();
await this.authService.SetSession(attempt, this.userattempt); await this.authService.SetSession(attempt, this.userattempt);
this.changeProfileService.run() this.changeProfileService.run();
await this.authService.loginChat(); await this.authService.loginChat();
await this.authService.loginToChatWs() await this.authService.loginToChatWs();
this.getToken(); this.getToken();
this.router.navigateByUrl('/pin', { replaceUrl: true }); this.router.navigateByUrl('/pin', { replaceUrl: true });
} }
} }
else{ else{
@@ -141,7 +148,15 @@ export class LoginPage implements OnInit {
if(pathName) { if(pathName) {
this.router.navigate([pathName]); this.router.navigate([pathName]);
} else { } else {
this.router.navigate(['/home/events']); if(this.permissionService.userPermission(this.permissionList.Agenda) || this.permissionService.userPermission(this.permissionList.Gabinete)){
this.router.navigate(['/home/events']);
}
else if(this.permissionService.userPermission(this.permissionList.Chat)){
this.router.navigate(['/home/chat']);
}
else if(this.permissionService.userPermission(this.permissionList.Actions)){
this.router.navigate(['/home/publications']);
}
} }
} }
-1
View File
@@ -131,7 +131,6 @@ export class AuthService {
let responseChat = await this.httpService.post('login', postData).toPromise(); let responseChat = await this.httpService.post('login', postData).toPromise();
if(responseChat) { if(responseChat) {
console.log('Login to Rocket chat OK', responseChat); console.log('Login to Rocket chat OK', responseChat);
this.ValidatedUserChat = responseChat; this.ValidatedUserChat = responseChat;
localStorage.setItem('userChat', JSON.stringify(responseChat)); localStorage.setItem('userChat', JSON.stringify(responseChat));
+1 -1
View File
@@ -66,7 +66,7 @@
<div class="d-flex flex-1 pr-20 pl-50"> <div class="d-flex flex-1 pr-20 pl-50">
<div class="tab mr-20 d-flex align-center cursor-pointer" (click)="changeRoute('/home/events')" <div *ngIf="p.userPermission([permissionList.Agenda]) || p.userPermission([permissionList.Gabinete])" class="tab mr-20 d-flex align-center cursor-pointer" (click)="changeRoute('/home/events')"
[class.active]="locationPathname() == '/home/events'"> [class.active]="locationPathname() == '/home/events'">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="font-40" src='assets/images/icons-nav-home-active-black.svg'></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="font-40" src='assets/images/icons-nav-home-active-black.svg'></ion-icon>