1

新しく作成したユーザーをプログラムで modx の特定のグループに割り当てるにはどうすればよいですか? 以下は私のコードです

if(isset($_POST) && count($_POST)){
  $oUser = $modx->newObject('modUser');
  $oUser->set('username', "test");
  //$oUser->set('password', "test");

  $oProfile = $modx->newObject('modUserProfile');
  $oProfile->set('fullname', $_POST['fname']);
  $oProfile->set('email', $_POST['email']);
  $oUser->addOne($oProfile);
  if($oUser->save()===false){
    echo "Error";
  }else
    echo "Done";
}

私はグーグルで検索しましたが、グループを作成してユーザーを編集し、ロールを割り当てる方法のグラフィカルなチュートリアルしか見つかりません。チュートリアルを知っていれば、それも問題ありません。

4

2 に答える 2

2

これが私が行っている方法です。これは、ユーザーが登録した[そしてユーザーが作成された]後に起動するポストフックスニペットです。

<?php
$specialty = $hook->getValue('specialty');
$country =  strtolower($hook->getValue('excountry'));
$username = $hook->getValue('username');
$staff = $hook->getValue('staff-or-resident'); //Staff | Resident

$joingroup = '';
$joinrole = '';
$blockuser = 'false';

switch ($specialty){

    case 'Other' :
        $joingroup = 15; // Other 
        $joinrole = 1; //member
        $blockuser = 'true';
        break;

    // there are about 15 different groups and roles here... 

    default :
        $joingroup = '0'; // none
        $joinrole = '0'; // none 
        break;  
}

if($joingroup > 0 && $joinrole > 0){
    $user = $modx->getObject('modUser', array('username'=>$username));
    $internalkey = $user->get('id');
    $profile = $user->getOne('Profile',array('internalKey'=>$internalkey));

    $user->joinGroup($joingroup, $joinrole);

    if($blockuser == 'true'){ //block user if they belong to the "other" group
        $profile->set('blocked',1);
    }

    if(!$user->save()){
        return false;
    };
}

return true;

キーは次のとおりです。$user->joinGroup($ joingroup、$ joinrole); ここで、joingroupはグループID〜またはnameであり、joinroleはロールid〜またはnameです。ここに文書化されています:http://api.modx.com/revolution/2.1/_model_modx_moduser.class.html#%5CmodUser :: joinGroup()

于 2012-12-12T15:00:28.493 に答える
2

revo > 2.2 で何かを作成/編集する最良の方法は、「クラスベースのプロセッサ」を使用することです - https://www.markhamstra.com/modx-blog/2012/2/getting-started-with-class-based-プロセッサ-2.2/グループにユーザーを追加するには、このプロセッサhttps://github.com/modxcms/revolution/blob/develop/core/model/modx/processors/security/user/update.class.phpを使用します - http: //rtfm.modx.com/display/revolution20/Using+runProcessor

$param = array(
    'id' => 1, // user id
    'groups' => array(
        array(
            "usergroup" => 1,
            "name" => "Administrator",
            "member" => 1,
            "role" => 2,
            "rolename" => "Super User",
            "primary_group" => true,
            "rank" => 0,
            "menu" => null
        ),
        array( .... )
    )
);

$response = $modx->runProcessor('security/user/update',$param );
if ($response->isError()) {
    return $response->getMessage();
}
于 2012-12-12T15:47:52.847 に答える