ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

既存のロールにユーザを追加するには

権限管理を行うことでユーザやグループ単位にアクセスできるオブジェクトを制御できます。アプリケーションキーとクライアントキーという二つの情報でアクセス制御を行っているmBaaSにとって、認証ごとのアクセス制御はセキュリティの肝になるでしょう。

そこでJavaScriptを使って新しいロールを作成し、さらにユーザをロールに所属させる方法を紹介します。このコードはJSFiddleにあります。自分のアプリケーションキー、クライアントキーがあればすぐに試せます。

全体の処理について

処理全体としては次のようになります。新しいロールを作成し、その後ユーザを作成します(今回は200ユーザ)。そして完了と表示されます。JavaScriptは非同期処理なので注意してください。

createRole()
    .then((role) => {
    logger.log('Role created.')
        return createUsers(role);
    }).then(() => {
        logger.log('Saved!')
    });

ロールを作成する

まずロールを作成します。ここではPromiseオブジェクトを返しています。

let createRole = () => {
    let proRole = new ncmb.Role('Pro');
  return proRole.save();
}

ユーザを作成する

引数で受け取ったロールを使って、そこに所属するユーザを作成します。非同期処理でループを回しているので若干コードが長くなっています。

// 新しいユーザを作成する
let createUsers = (role) => {
  return new Promise((res, rej) => {
    let loop = (index) => {
      console.log(`We will make a user ${index}`);
      
        let user = new ncmb.User();
            user
        .set('userName', `user_${index}`)
            .set('password', 'password')
        // ユーザ登録処理
            .signUpByAccount()
          .then((user) => {
            logger.log('Saved', user);
            // ロールにユーザ追加
            return role.addUser(user).update();
          })
          .then((obj) => {
            logger.log('Added', user);
            // まだカウントに達していなければ再帰処理
            return (index == count) ? res() : loop(index + 1);
          })
          // エラー
          .catch((err) => {
            logger.log('Error', err);
          })
    }
    // 初回の実行
    loop(1);
  });
}

特に大事なのは既存のロールにユーザを追加した場合には update メソッドを使うという点です。

role.addUser(user).update();

このように処理することで多数のユーザを一気に作成し、かつユーザを既存のロールに追加できます。実装時の参考にしてください。

試しに実行される際にはJSFiddleのコードをご利用ください。