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

Commit a71cecb

Browse files
committed
Merge pull request #171 from CoderDojo/load_update_refactor
Load/update cmds refactor
2 parents 611c689 + f9ac843 commit a71cecb

File tree

1 file changed

+7
-83
lines changed

1 file changed

+7
-83
lines changed

users.js

Lines changed: 7 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -28,87 +28,24 @@ module.exports = function (options) {
2828
seneca.add({role: plugin, cmd: 'load_dojo_admins_for_user'}, cmd_load_dojo_admins_for_user);
2929
seneca.add({role: plugin, cmd: 'record_login'}, cmd_record_login);
3030
seneca.add({role: 'user', cmd: 'login'}, cmd_login);
31+
seneca.add({role: plugin, cmd: 'load_prev_founder'}, cmd_load_prev_founder);
3132
seneca.add({role: plugin, cmd: 'kpi_number_of_youths_registered'}, cmd_kpi_number_of_youths_registered);
3233
seneca.add({role: plugin, cmd: 'kpi_number_of_champions_and_mentors_registered'}, cmd_kpi_number_of_champions_and_mentors_registered);
3334
seneca.add({role: plugin, cmd: 'kpi_number_of_youth_females_registered'}, cmd_kpi_number_of_youth_females_registered);
3435

35-
function validateUserRequest (user, id, done) {
36-
if (!user) return done(new Error('user is undefined'));
37-
var isOwnAccount = (user.id === id);
38-
if (isOwnAccount) return done();
39-
var isCDFAdmin = _.contains(user.roles, 'cdf-admin');
40-
if (isCDFAdmin) return done();
41-
var allowedUserIds = [];
42-
43-
seneca.act({role: 'cd-dojos', cmd: 'load_usersdojos', query: {userId: id}}, function (err, usersDojos) {
36+
function cmd_load_prev_founder (args, done) {
37+
var seneca = this;
38+
seneca.act({role: plugin, cmd: 'load', id: args.id}, function (err, user) {
4439
if (err) return done(err);
4540

46-
async.each(usersDojos, function (userDojo, cb) {
47-
async.parallel([
48-
loadDojoChampions,
49-
loadDojoAdmins,
50-
loadUsersParents
51-
], cb);
52-
53-
function loadDojoChampions (done) {
54-
seneca.act({role: 'cd-dojos', cmd: 'load_dojo_champion', id: userDojo.dojoId}, function (err, champions) {
55-
if (err) return done(err);
56-
_.each(champions, function (champion) {
57-
allowedUserIds.push(champion.id);
58-
});
59-
return done();
60-
});
61-
}
62-
63-
function loadDojoAdmins (done) {
64-
seneca.act({role: 'cd-dojos', cmd: 'load_usersdojos', query: {dojoId: userDojo.dojoId}}, function (err, usersDojos) {
65-
if (err) return done(err);
66-
_.each(usersDojos, function (userDojo) {
67-
var dojoAdminFound = _.find(userDojo.userPermissions, function (userPermission) {
68-
return userPermission.name === 'dojo-admin';
69-
});
70-
if (dojoAdminFound) allowedUserIds.push(userDojo.userId);
71-
});
72-
return done();
73-
});
74-
}
75-
76-
function loadUsersParents (done) {
77-
seneca.act({role: 'cd-profiles', cmd: 'list', query: {userId: id}}, function (err, profiles) {
78-
if (err) return done(err);
79-
var userProfile = profiles[0];
80-
_.each(userProfile.parents, function (parentUserId) {
81-
allowedUserIds.push(parentUserId);
82-
});
83-
return done();
84-
});
85-
}
86-
}, function (err) {
87-
if (err) return done(err);
88-
allowedUserIds = _.uniq(allowedUserIds);
89-
if (_.contains(allowedUserIds, user.id)) return done();
90-
return done(new Error('You do not have permission to load this data.'));
91-
});
41+
return done(null, _.pick(user, ['id', 'email', 'name']));
9242
});
9343
}
9444

9545
function cmd_load (args, done) {
9646
var seneca = this;
9747
var id = args.id;
98-
var user = args.user;
99-
var userEntity = seneca.make(ENTITY_NS);
100-
101-
async.series([
102-
async.apply(validateUserRequest, user, id),
103-
loadUser
104-
], function (err, res) {
105-
if (err) return done(null, {ok: false, why: err.message});
106-
return done(null, res[1]);
107-
});
108-
109-
function loadUser (done) {
110-
userEntity.load$(id, done);
111-
}
48+
seneca.make(ENTITY_NS).load$(id, done);
11249
}
11350

11451
function cmd_list (args, done) {
@@ -315,20 +252,7 @@ module.exports = function (options) {
315252
function cmd_update (args, done) {
316253
var seneca = this;
317254
var user = args.user;
318-
var id = args.id;
319-
320-
async.series([
321-
async.apply(validateUserRequest, user, id),
322-
updateUser
323-
], function (err, res) {
324-
if (err) return done(null, {ok: false, why: err.message});
325-
return done(null, res[1]);
326-
});
327-
328-
function updateUser (done) {
329-
var userEntity = seneca.make(ENTITY_NS);
330-
userEntity.save$(user, done);
331-
}
255+
seneca.make(ENTITY_NS).save$(user, done);
332256
}
333257

334258
function cmd_get_init_user_types (args, done) {

0 commit comments

Comments
 (0)