7. グループ管理¶
ここではグループ管理機能の利用方法について説明します。
7.1. グループの作成¶
最初にグループオブジェクトを作成します。
var group1 = new Nebula.Group("group1");
addEntry() を使用して、グループにユーザおよびグループを追加し、save() でサーバに保存します。
グループには、以下の予約グループを追加することもできます。
- authenticated: 全認証済ユーザ
- anonymous: 未認証ユーザを含む全ユーザ
ユーザは Nebula.User オブジェクトを、グループは Nebula.Group オブジェクトを指定する必要があります。
- Nebula.User については、事前に検索を行っておく必要があります。
- Nebula.Group については、事前に検索しておくか、new Nebula.Group() で作成したインスタンスを指定します。
- new Nebula.Group() のインスタンスを渡す場合、サーバにそのグループが既に存在している必要があります。
- 予約グループを指定する場合も、new Nebula.Group() で取得したインスタンスを渡します。
var user = ...; // 事前に検索された Nebula.User
var group0 = ...; // 事前に検索された Nebula.Group
group1.addEntry(user);
group1.addGroup(group0);
group1.addGroup(new Nebula.Group("authenticated"));
group1.save()
.then(function(group) {
// 成功時の処理
}
.catch(function(error) {
// エラー時の処理
};
ユーザ検索とグループ追加を連続して行う例を示します。
Nebula.User.query({"email": "taro.nichiden@example.com"})
.then(function(users) {
group1.addEntry(users[0]);
return group1.save();
}
.then(function(group) {
// 成功時の処理
}
.catch(...) {
// 失敗時の処理
};
7.2. アクセス制御¶
グループ単位でアクセス制御を行うことができます。 アクセス権を設定する場合は set() を使用し、 save() で保存します。
var acl = {
"owner": "オーナID",
"r": ["ユーザID", "g:グループ名"],
"w": ["ユーザID"],
"u": [],
"d": [],
"admin": []
};
group1.set("acl", acl);
ACL の詳細については「デベロッパーマニュアル」の「セキュリティ:ACL」の節をご覧ください。
7.3. グループの検索¶
グループを検索するには、 query() の引数に検索条件を指定して呼び出します。
検索条件 conditions のプロパティには、 _id (グループID), groupname (グループ名)のいずれかを指定します。 (conditions に null を指定した場合は全件検索になります)
レスポンスには、検索条件に一致したグループオブジェクトの配列が返ります。
var conditions = {
"groupname" : "グループ名"
}
Nebula.Group.query(conditions)
.then(function(groups) {
// 成功時の処理
// groups: グループオブジェクトの配列
})
.catch(function(error) {
// 失敗時の処理
});
各グループについては、get() でプロパティを取得できます。 取得できるプロパティには以下のものがあります。
- _id : グループID
- groupname : グループ名
- users : ユーザIDの配列
- groups: グループ名の配列
- acl: ACLの情報
- createdAt: 作成日時
- updatedAt: 更新日時
- etag: ETagの値
7.4. グループの更新¶
ユーザを更新するには、グループを検索し、addEntry() / removeEntry() を 使用してエントリの変更を行い、save() で更新します。
7.5. グループの削除¶
グループを削除するには、Nebula.Group.remove() を使用します。 削除するグループは事前に検索しておく必要があります。
var group = ...; // グループを検索しておく
Nebula.Group.remove(group)
.then(function() { /*成功時の処理*/ }
.catch(function(error) { /*エラー時の処理*/ }