権限管理を行うことでユーザやグループ単位にアクセスできるオブジェクトを制御できます。アプリケーションキーとクライアントキーという二つの情報でアクセス制御を行っている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のコードをご利用ください。