添加具有特定角色的用户,例如:admin或普通用户

时间:2014-03-04 06:16:55

标签: php laravel parse-platform roles

我正在使用 PHP(laravel)。我想为我添加的每个用户添加角色。

我怎样才能实现它?

$postData->__set('roles',$postData->dataType('relation',array('Role','_user')));

我使用过这样的东西,但这不合适。

我能够在解析时将用户保存到用户表,但我在角色表中有两个角色, admin和用户(普通用户)。我需要在其中添加一个用户。 '关系'是parse.com中的一种数据类型,使用它可以实现它。

1 个答案:

答案 0 :(得分:0)

只需使用CodeCloud并使用Parse.com PHP库调用Cloud Function。

JavaScript中的这个函数将一个User的ObjectId数组添加到一个名为

的角色中
// Add array of user ids to role with defined name

Parse.Cloud.define('addUsersToRole', function(request, response) {
    // Params
    var userIds = request.params.users;
    var roleName = request.params.role;

    // Underscore
    var _ = require('underscore');

    // Master Key
    // skip ACL check
    Parse.Cloud.useMasterKey();

    // new role query        
    var query = new Parse.Query(Parse.Role);

    // get the role with given name
    query.equalTo('name', roleName);

    // get the first result using promises
    query.first().then(function(role){
        if(role) {

            var userRelation = role.relation('users');

            _.each(userIds, function(userId) {
                // create a new user object
                var user = new Parse.User();

                // assign the id
                user.id = userId;

                // add it to the role user relation
                userRelation.add(user);

                // a simple user counter
                role.increment('userCount');
            });

            // save the role      
            role.save().then(function(){
                response.success();
            });


        } else {
            response.error('No Role found with Name ' + roleName);
        }
    });

});

然后使用PHP Parse Library调用函数

<?php
    // https://github.com/apotropaic/parse.com-php-library/blob/master/parseCloud.php

    // Adding the possibility to run parse cloud code functions
    $cloud = new parseCloud("addUsersToRole");

    // Setting the params

    $cloud->__set('users',array('oviajjs3', 'CskkO33d', 'Casi33Jn'));

    $cloud->__set('role','admin');

    // Running the cloud function
    $result = $cloud->run();
?>