如何在管理员登录Meteor后进行路由设置

时间:2015-08-17 07:06:57

标签: meteor admin router

我为adminuser创建了一个集合进入系统。我的意思是我不想在管理员端使用帐户数据包但我不知道如何在管理员登录后进行路由设置。我做了一些但是它没有工作正确,

  

的login.html

Template.login.events({
   'click #entre': function (e, template) {

        var Username = template.$('#username').val();
        var Password = template.$('#password').val();
        var getinfo= admin.findOne({});
        if (Username == " " || Password == "") {
            swal("Error", "All fields must be Completed.", "error");
        } else if (getinfo.username== Username && getinfo.password== Password) {
            swal("Success", "Welcome admin.", "success");

            Session.set("hi", true);
        } else {
            swal("error", "Login Informations wrong.", "error");
        }

    }
});
  

router.js

Router.onBeforeAction(function () {
    if (!Session.get("hi")) {
        this.render('login');
    } else {
        this.render('dashboard');

    }
});

Router.route('userList', function () {
    this.render('userList');
});

Router.route('addnewuser', function () {
    this.render('addnewuser');
});

注意:我想在管理员登录时,可以访问所有页面的用户列表,添加新用户等。

1 个答案:

答案 0 :(得分:0)

如果我理解得当,你想给你某些路线的管理权。使用iron:router有几种方法可以通过构建Controller或使用Filters来实现此目的。我会创建一个铁路由器控制器来解决这个问题并将其附加到任何需要这种检查的路由上。控制器和过滤器实际上都是可重复使用的代码,这正是我们所寻求的。

请务必将alanning:roles添加到您的软件包列表中(如果您还没有)并向至少一个Meteor.users()添加一些管理员角色,就像它显示的那样{ {3}}

构建实际的控制器非常简单。

  

LIB / router.js

AdminController = RouteController.extend({
  onBeforeAction: function () {
    var loggedInUser = Meteor.userId();

    if (!!loggedInUser) {
      if (!Roles.userIsInRole(loggedInUser, 'admin')) {
        // Basic redirect to the homepage
        Router.go('homepage');
        this.stop();
      }
    } else {
      // Log them in when they are not
      Router.go('login');
      this.stop();
    }
    this.next();
  }
});

Router.route('/admin', {
  name: 'admin',
  controller: AdminController,
  waitOn: function () {
    // return subscriptions here
  }
});

继续将其添加到您喜欢的任何其他路线。