React NativeでmBaaSを使いやすくするReact Native SDKを非公式に開発しています。
NCMBMania/ncmb-react-native: NCMB SDK for React Native
これまでJavaScript SDKに似せる形で開発してきましたが、TypeScriptに沿った形で書くのに限界があったこと、React Native for Webでも使える形にしたかったので、バージョンアップすることにしました。これまでとは互換性はありませんが、より使いやすくなったはずです。
今回はロール(グループ)管理の使い方について解説します。
- インストール
- 読み込み
- 初期化
- 新しいロールの作成
- ロールにユーザを追加する
- ロールの中にロールを作成
- ロールの検索
- ロールに所属しているユーザを取得
- ロールに所属しているロールを取得
- ロールの削除
- まとめ
インストール
SDKのインストールはnpmで行います。
npm i ncmb-react-native
読み込み
import NCMB, { NCMBRole } from 'ncmb-react-native';
読み込めるライブラリはほかにも下記があります。
- NCMBUser(会員管理)
- NCMBObject(データストア。保存、更新、削除)
- NCMBQuery(データストア。検索、取得)
- NCMBFile(ファイルストア)
- NCMBAcl(権限管理)
- NCMBRole(ロール、ユーザやロールのグルーピング)
- NCMBRequest(NCMBへのリクエスト用。通常は利用しません)
- NCMBRelation(データストアのリレーション)
- NCMBGeoPoint(位置情報�)
- NCMBInstallation(デバイストークン)
- NCMBPush(プッシュ通知)
初期化
SDKの初期化はアプリケーションキーとクライアントキーで行います。
const applicationKey = 'YOUR_APPLICATION_KEY'; const clientKey = 'YOUR_CLIENT_KEY'; new NCMB(applicationKey, clientKey);
新しいロールの作成
新しいロール(以下の例ではadmin)を作成するコードです。
const role = new NCMBRole; role .set('roleName', 'admin'); await role.save();
ロールにユーザを追加する
adminロールにユーザを追加するコード例です。
// ロールを作成 const roleName = 'admin'; const role = new NCMBRole; role .set('roleName', roleName); await role.save(); // ユーザを準備 const user = new NCMBUser; user .set('userName', 'tester') .set('password', 'tester'); await user.signUpByAccount(); // 追加して保存 await role .addUser(user) .save();
ロールの中にロールを作成
ロールは入れ子にして管理できます。
// 一つ目のロール const roleName = 'admin'; const role = new NCMBRole; role .set('roleName', roleName); await role.save(); // 二つ目のロール const role2 = new NCMBRole; role2 .set('roleName', 'admin2'); await role2.save(); // ロールにロールを追加して保存 await role .addRole(role2) .save();
ロールの検索
既存のロールを検索する例です。TypeScriptの場合、asで型を指定する方がいいでしょう。
const query = NCMBRole.query(); const role2 = await (query .equalTo('roleName', roleName) .fetch()) as NCMBRole;
ロールに所属しているユーザを取得
ロール管理下にあるユーザを取得する処理です。
// ロールを検索 const query = NCMBRole.query(); const role = await (query .equalTo('roleName', roleName) .fetch()) as NCMBRole; // ロールに所属しているユーザを取得 const users = await role .fetchUser();
ロールに所属しているロールを取得
ロール管理下にあるロールを取得する処理です。
const query = NCMBRole.query(); const role = await (query .equalTo('roleName', roleName) .fetch()) as NCMBRole; const roles = await role.fetchRole();
ロールの削除
既存のロールを削除する処理です。
await role.delete();
まとめ
React Native SDKはネイティブに依存する機能を除いて、すべての実装が完了しています。React Native(Webを含む)でサーバ機能が必要になりましたら、ぜひ使ってみてください。
ロールはデータのアクセス権限(ACL)を管理する上で大事な機能になります。特定のユーザを管理者権限にしたり、会員限定のコンテンツを提供する、特定グループ間でのみ読めるメッセージのやり取りといった際にも役立ちます。