【发布时间】:2016-03-31 05:09:57
【问题描述】:
我正在尝试使用 npm loopback-component-passport 以基于条件的用户角色在环回中创建用户,
- 如果用户拥有
isAdmin:true属性,他应该拥有admin的角色 - 如果用户拥有
isAdmin:false属性,他应该拥有user的角色
这是我的代码:
if (form.$valid) {
AuthService.register({
name: $scope.user.name,
email: $scope.user.email,
password: $scope.user.password,
isAdmin: $scope.user.isAdmin
})
.then(function() {
// Account created, redirect to home
$state.go('home');
})
.catch(function(err) {
err = err.data;
$scope.errors = {};
// Update validity of form fields that match the mongoose errors
angular.forEach(err.errors, function(error, field) {
form[field].$setValidity('mongoose', false);
$scope.errors[field] = error.message;
});
});
}
工厂:
angular
.module('app')
.factory('AuthService', ['User', '$q', '$rootScope', function(User, $q, $rootScope) {
function login(email, password) {
return User
.login({email: email, password: password})
.$promise
.then(function(response) {
$rootScope.currentUser = {
id: response.user.id,
tokenId: response.id,
email: email
};
});
}
function logout() {
return User
.logout()
.$promise
.then(function() {
$rootScope.currentUser = null;
});
}
function register(user) {
return User.create(user).$promise;
}
return {
login: login,
logout: logout,
register: register
};
}]);
护照策略:
"local": {
"provider": "local",
"module": "passport-local",
"usernameField": "email",
"passwordField": "password",
"authPath": "/auth/local",
"successRedirect": "/auth/account",
"failureRedirect": "/local",
"failureFlash": true
},
...
...
model-config.json
{
"User": {
"dataSource": "db"
},
"AccessToken": {
"dataSource": "db",
"public": false
},
"ACL": {
"dataSource": "db",
"public": false
},
"RoleMapping": {
"dataSource": "db",
"public": false
},
"Role": {
"dataSource": "db",
"public": false
}
}
但现在我不知道如何添加角色,以便我可以区分用户与用户角色。如何在loopback-component-passport 的内置模型中设置用户角色?
【问题讨论】:
-
“我如何设置用户角色?” 问题太模糊了……在哪里设置?完全不清楚你的问题是什么
-
@charlietfl 更新了问题。
标签: angularjs node.js loopbackjs strongloop