Skip to content
This repository was archived by the owner on Dec 14, 2023. It is now read-only.

Commit 19fe57b

Browse files
Added load_children_for_user for My Children page (#232)
* Added load_children_for_user for My Children page * Moved load children callback to own file * Better error handling for load children for user
1 parent 343d0e2 commit 19fe57b

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

config/perm/profiles.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,31 @@ module.exports = function(){
146146
cmd: 'is_parent_of'
147147
}]
148148
}],
149+
'load_children_for_user': [{
150+
role: 'basic-user',
151+
userType: 'champion',
152+
extendedUserTypes: true
153+
}, {
154+
role: 'basic-user',
155+
customValidator: [{
156+
role: 'cd-dojos',
157+
cmd: 'have_permissions',
158+
perm: 'dojo-admin'
159+
}]
160+
}, {
161+
role: 'basic-user',
162+
customValidator: [{
163+
role: 'cd-dojos',
164+
cmd: 'have_permissions',
165+
perm: 'ticketing-admin'
166+
}]
167+
}, {
168+
role: 'basic-user',
169+
customValidator: [{
170+
role: 'cd-users',
171+
cmd: 'is_self'
172+
}]
173+
}],
149174

150175
'invite_ninja': [{
151176
role: 'basic-user',
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
var async = require('async');
3+
4+
function cmd_load_children_for_user (args, done) {
5+
var seneca = this;
6+
var userId = args.userId;
7+
8+
seneca.act({role: 'cd-profiles', cmd: 'load_user_profile', userId: userId}, function (err, parentProfile) {
9+
if (err) return done(err);
10+
if (!parentProfile) return done(null, {error: 'User profile not found for userId ' + userId, http$: {status: 404}});
11+
if (!parentProfile.children) return done(null, []);
12+
async.map(parentProfile.children, function (childUserId, cb) {
13+
seneca.act({role: 'cd-users', cmd: 'load', id: childUserId, user: args.user}, cb);
14+
}, function (err, children) {
15+
if (err) return done(err);
16+
return done(null, children);
17+
});
18+
});
19+
}
20+
21+
module.exports = cmd_load_children_for_user;

profiles.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ module.exports = function (options) {
121121
seneca.add({role: plugin, cmd: 'change_avatar'}, cmd_change_avatar);
122122
seneca.add({role: plugin, cmd: 'get_avatar'}, cmd_get_avatar);
123123
seneca.add({role: plugin, cmd: 'load_parents_for_user'}, cmd_load_parents_for_user);
124+
seneca.add({role: plugin, cmd: 'load_children_for_user'}, require('./lib/profiles/load-children-for-user'));
124125
seneca.add({role: plugin, cmd: 'invite_ninja'}, cmd_invite_ninja);
125126
seneca.add({role: plugin, cmd: 'approve_invite_ninja'}, cmd_approve_invite_ninja);
126127
seneca.add({role: plugin, cmd: 'ninjas_for_user'}, cmd_ninjas_for_user);

0 commit comments

Comments
 (0)