javascript - 用户界面路由器 : default route based on user role

标签 javascript angularjs angular-ui-router

我在我的项目中使用 UI 路由器。我的应用程序的主页由 4 个选项卡组成,每个选项卡路由到不同的模板。这是我当前的路由代码,我使用 forEach 创建 6 条路由。

['Draft','Assigned','InProgress','Completed','Rejected','All'].forEach(function (val) {
        $stateProvider.state({
            name: 'root.jobs.list.' + val.toLowerCase(),
            url: '/' + val.toLowerCase(),
            views: {
                'currentTab': {
                    templateUrl: 'adminworkspace/jobs',
                    controller: 'JobsController'
                }
            },
            data: {
                userJobsStatus: val
            }
        });
    });

默认情况下,当用户登录时,它会转到“root.jobs.list.draft”。如何根据登录用户的 Angular 色(管理员、用户、文员等)重定向到给定状态。如果要将属于“工程师”或“首席工程师” Angular 色的所有用户重定向到 “root.jobs.list.inprogress”

我最初在 Controller 中有这个,但如您所见,它不起作用,因为每次我点击一个选项卡,它总是路由回 "root.jobs.list.inprogress"

    if (user !== undefined) {
        if (user.BusinessRole == "Engineer" || user.BusinessRole == "Lead Engineer")
            $state.go('root.jobs.list.inprogress');
    }

最佳答案

我已经不得不解决这个问题了:

我已经注册了一个仅用于处理基于 Angular 色的默认页面的状态。

        $urlRouterProvider.otherwise("/");
        $stateProvider.state("default", {
            url:"/",
            templateUrl: "app/core/home/default.html",
            controller: "DefaultController"
        });

Controller 很简单:

(function () {
    "use strict";

    angular.module("core").controller("DefaultController", [
        "$rootScope",
        "$state",
        "roles",
        function ($rootScope, $state, roles) {
            if ($rootScope.hasPermission(roles.SomeRoleName)) {
                $state.go("someStateName");
            } else if ($rootScope.hasPermission(roles.SomeRoleName)) {
                $state.go("someStateName");
            }
        }
    ]);
})();

关于javascript - 用户界面路由器 : default route based on user role,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37003470/

相关文章:

javascript - 将函数原型(prototype)设置为新对象

css - Angular Material -md-grid-list 内容

angularjs - 如何在不重新加载 ui-view 的情况下更新 $stateParams? Angular ui路由器

javascript - 为网站创建可访问的工具提示

javascript - 使用 PHP 代理绕过 XMLHttpRequest 的同源策略有什么缺点?

javascript - Javascript函数简写的扩展

javascript - 比较 JavaScript 和 AngularJS?

javascript - 如何使用浏览器插件隐藏 Ionic 5 Capacitor 中的 URL 栏?

angularjs - UI-路由器-每次路由更改时都运行功能-状态名称在何处?

javascript - 从浏览器控制台更改 AngularJS 中的 $state