繁体   English   中英

角色-Parse.com Javascript

[英]Roles - Parse.com Javascript

目前,我有一个JavaScript允许(_User)表中的所有用户登录。我已经在角色表中设置了一个名为(Admins)的角色,并为该角色分配了一个用户。 这将是一个if语句吗?

目前,这是用户成功登录的方式

$scope.logIn = function(form) {
Parse.User.logIn(form.username, form.password, {
  success: function(user) {
    $scope.currentUser = user;
    $scope.$apply();
    window.location.href = "TEST.html";
  },

很容易检查是否有任何用户属于角色。 唯一棘手的部分是要意识到检查包括查询,因此是异步操作。 因此,首先,一个通用角色检查功能:

function userHasRole(user, roleName) {
    var query = new Parse.Query(Parse.Role);
    query.equalTo("name", roleName);
    query.equalTo("users", user);
    return query.find().then(function(roles) {
        return roles.length > 0;
    });
}

这将返回一个布尔值将兑现的承诺,因此您可以这样称呼它:

var currentUser = Parse.User.current();
// is the user an "admin"?
userHasRole(currentUser, "admin").then(function(isAdmin) {
    console.log((isAdmin)? "user is admin" : "user is not admin");
});

像这样在您的代码中应用它。 在视图中:

<form role="form" name="loginForm">
    <div class="form-group">
        <label>Email</label>
        <input type="email" class="form-control" name="email" ng-model="user.username" />
    </div>
    <div class="form-group">
        <label>Password</label>
        <input type="password" class="form-control" name="password" ng-model="user.password" />
    </div>
    <div class="form-group">
        <button class="btn btn-ar btn-primary" ng-click="pressedLogIn()">Log in</button>
    </div>
</form>

并在控制器中:

(function() {
    'use strict';
    angular.module('myApp.controllers').controller('LogInController', LogInController);

    LogInController.$inject = ['$scope'];

    function LogInController($scope) {
        $scope.user = { username:"", password:""};

        function userHasRole(user, roleName) {
            // defined exactly as above
            // my real app has a user service, and this would be better placed there
        }

        $scope.pressedLogIn = function() {
            if ($scope.loginForm.$valid) {
                Parse.User.logIn($scope.user.username, $scope.user.password).then(function(user) {
                    $scope.user = user;
                    return userHasRole(user, "administrator");
                }).then(function(isAdmin) {
                    alert("user is admin = " + isAdmin);
                }, function(e) {
                    alert(error.message);
                });
            }
        };
    }
})();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM