6. グループ管理

ここではグループ管理機能の利用方法について説明します。

6.1. グループの作成

最初にグループオブジェクトを作成します。

NBGroup newGroup = [NBGroup groupWithName:@"group1"];

newGroup.users = [NSMutableArray array]; // ユーザ追加の例
[newGroup.users addObject:@"id_of_user1"];
[newGroup.users addObject:@"id_of_user2"];

newGroup.groups = [NSMutableArray array]; // グループ追加の例
[newGroup.groups addObject:@"child_group1"];
[newGroup.groups addObject:@"child_group2"];

所属するユーザ、グループをそれぞれ users,groups へ NSArray で指定し、 saveInBackgroundWithBlock メソッドで保存します。 また、グループには以下の予約グループを追加することもできます。

  • authenticated: 全認証済ユーザ
  • anonymous: 未認証ユーザを含む全ユーザ
[newGroup saveInBackgroundWithBlock:^(NSArray *groups, NSError *error) {
    if (!error) {
        // 成功時の処理
    } else {
        // エラー時の処理
    }
}];

6.2. アクセス制御

グループ単位でアクセス制御を行うことができます。 アクセス制御には、オブジェクトストレージ等と同様に NBAcl クラスを使用します。 NBGroup の acl プロパティに設定します。

newGroup.acl = [NBAcl new];
// anonymous グループに read 権限付加
[newGroup.acl addEntry:@"g:anonymous" permission:NBAclReadable];
// anonymous グループに write 権限付加
[newGroup.acl addEntry:@"g:anonymous" permission:NBAclWritable];

ACL の詳細については「デベロッパーマニュアル」の「セキュリティ:ACL」の節をご覧ください。

6.3. グループの取得

グループ名から、グループ情報を取得するには、 getGroupInBackgroundWithName メソッドを使用します。 以下の例では "name1" グループを取得しています。

[NBGroup getGroupInBackgroundWithName:@"name1" block:^(NSArray *groups, NSError *error) {
    if (!error) {
        // 成功時の処理
        NBGroup *group = groups[0];
    } else {
        // エラー時の処理
    }
}];

6.4. グループ一覧の取得

グループ一覧を取得するには、 queryGroupInBackgroundWithBlock を使用します。 取得した一覧は groups に NBGroup の配列で渡されます。

[NBGroup queryGroupInBackgroundWithBlock:^(NSArray *groups, NSError *error) {
    if (!error) {
        // 成功時の処理
    } else {
        // エラー時の処理
    }
}];

各グループについては、get() でプロパティを取得できます。 取得できるプロパティには以下のものがあります。

6.5. グループの更新

グループを更新するには、取得した NBGroup のプロパティを編集し、 作成時と同様に saveInBackgroundWithBlock メソッドを呼ぶことで更新できます。

6.6. グループの削除

グループを削除するには、deleteInBackgroundWithBlock を使用します。 削除するグループは事前に取得します。

[createdGroup deleteInBackgroundWithBlock:^(NSError *error) {
    if (!error) {
        // 成功時の処理
    } else {
        // エラー時の処理
    }
}];