2016-12-29 4 views
3

У меня разные роли пользователя и на основе зарегистрированной роли пользователя, я хочу изменить страницу по умолчанию (целевую страницу) после входа в систему. я добиться этого, не нашли каких-либо ресурсов в Интернете, это то, что должно быть реализовано еще или я что-то не хватает:Страница динамической посадки на основе роли пользователя Угловой маршрутизатор «~ 3.4.0»

у меня есть два модуля ExceptionDashboard и cashierRiskprofile модуль маршрутов

import { Routes, RouterModule } from "@angular/router"; 

import { CashierRiskProfileComponent } from "./cashierriskprofile.component"; 

const cashierRiskProfileRoutes: Routes = [ 
    { path: "", redirectTo: "cashierriskprofile", pathMatch: "full" }, 
    { path: "cashierriskprofile", component: CashierRiskProfileComponent } 
]; 

export const CashierRiskProfileRouting = RouterModule.forChild(cashierRiskProfileRoutes); 

выше код иметь маршрут по умолчанию как cashierRiskprofile.

ExceptionDashboard:

const exceptionDashboardRoutes: Routes = [ 
    { path: "exceptionDashboard", component: ExceptionDashboardComponent, pathMatch: 'full' }, 
    { path: "exceptionDetail", component: ExceptionDetailComponent, pathMatch: 'full' }, 
    { path: "exceptionTransaction", component: ExceptionTransactionComponent, pathMatch: 'full' } 
]; 

Для пользователей админ мы показываем CashierRiskProfile, как целевую страницу, которая уже дефолте, для других пользователей, я хотел показать путь exceptionDashboard как LandingPage. Как изменить его на основе UserRole.

Я знаю, как реализовать функцию CanActivateViaAuthGuard «canActivate» для перенаправления на определенную страницу, если пользователь не подвергается аутированию, но я смотрю на изменение целевой страницы на основе ролей пользователя?

import { Injectable } from '@angular/core'; 
import { CanActivate } from '@angular/router'; 
//import { AuthService } from './auth.service'; 

@Injectable() 
export class CanActivateViaAuthGuard implements CanActivate { 

    constructor(/*private authService: AuthService*/) { } 

    canActivate() { 
     //if logged in return true 
     return true; 

     //else retrun to login page 
     //return false; 
    } 
} 

Я хочу реализовать что-то, что изменяет динамически страницу по умолчанию на основе роли пользователя.

+0

Является ли это по-прежнему актуальна? http://stackoverflow.com/questions/38402776/angular2-routing-canactivate-and-authguard-jwt-with-user-role-parameter –

ответ

-1

Внутри охранника вместо возврата true или false вы можете перенаправить пользователей в зависимости от их ролей.

Пример:

constructor(private authService: AuthService, private router: Router) {} 

canActivate() { 
     //if role is system manager 
     if(this.checkUserRoleFunction() == "system manager"){ 
      this.router.navigate(['/exceptionTransaction']); 
     }else if(this.checkUserRoleFunction() == "associate"){ 
      this.router.navigate(['/exceptionDetail']); 
     }else{ 
      this.router.navigate(['/exceptionTransaction']); 
     } 
     return false; 
    } 
Смежные вопросы