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

Commit 2cb7f08

Browse files
WardormeurDanielBrierton
authored andcommitted
Bugfix/allow profile visibility (#236)
1 parent 312f511 commit 2cb7f08

File tree

13 files changed

+928
-516
lines changed

13 files changed

+928
-516
lines changed

config/perm/profiles.js

Lines changed: 10 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,7 @@ module.exports = function(){
66
role: 'basic-user',
77
}],
88
'user_profile_data': [{
9-
role: 'basic-user',
10-
customValidator: [{
11-
role: 'cd-users',
12-
cmd: 'is_self'
13-
}]
14-
}, {
15-
role: 'basic-user',
16-
userType: 'parent-guardian',
17-
customValidator: [{
18-
role: 'cd-users',
19-
cmd: 'is_parent_of'
20-
}]
21-
}, {
22-
role: 'basic-user',
23-
userType: 'champion',
24-
extendedUserTypes: true,
25-
customValidator: [{
26-
role: 'cd-dojos',
27-
cmd: 'belongs_to_dojo'
28-
}]
9+
role: 'none',
2910
}],
3011
'load': [{
3112
role: 'basic-user',
@@ -56,28 +37,21 @@ module.exports = function(){
5637
cmd: 'is_parent_of'
5738
}]
5839
}],
59-
'save-youth-profile': [{
60-
role: 'basic-user',
61-
userType: 'parent-guardian'
62-
}],
6340
'save': [{
6441
role: 'basic-user',
6542
}],
43+
// Create youth
44+
'save-youth-profile': [{
45+
role: 'basic-user'
46+
}],
47+
// Update youth
6648
'update-youth-profile': [{
6749
role: 'basic-user',
68-
userType: 'parent-guardian',
6950
customValidator: [{
7051
role: 'cd-users',
7152
cmd: 'is_parent_of'
7253
}]
7354
}, { role: 'basic-user',
74-
userType: 'attendee-u13',
75-
customValidator: [{
76-
role: 'cd-users',
77-
cmd: 'is_self'
78-
}]
79-
}, { role: 'basic-user',
80-
userType: 'attendee-o13',
8155
customValidator: [{
8256
role: 'cd-users',
8357
cmd: 'is_self'
@@ -115,61 +89,12 @@ module.exports = function(){
11589
'get_avatar': [{
11690
role: 'none',
11791
}],
118-
'load_parents_for_user': [
119-
{ role: 'basic-user',
120-
userType: 'champion',
121-
extendedUserTypes: true
122-
},
123-
{ role: 'basic-user',
124-
customValidator: [{
125-
role: 'cd-dojos',
126-
cmd: 'have_permissions_on_user',
127-
perm: 'dojo-admin'
128-
}]
129-
},
130-
{ role: 'basic-user',
131-
customValidator: [{
132-
role: 'cd-dojos',
133-
cmd: 'have_permissions_on_user',
134-
perm: 'ticketing-admin'
135-
}]
136-
},
137-
{ role: 'basic-user',
138-
customValidator: [{
139-
role: 'cd-users',
140-
cmd: 'is_self'
141-
}]
142-
},
143-
{ role: 'basic-user',
144-
customValidator: [{
145-
role: 'cd-users',
146-
cmd: 'is_parent_of'
147-
}]
92+
// Relies on user-profile-data data scoping
93+
'load_parents_for_user': [{
94+
role: 'basic-user'
14895
}],
14996
'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_on_user',
158-
perm: 'dojo-admin'
159-
}]
160-
}, {
161-
role: 'basic-user',
162-
customValidator: [{
163-
role: 'cd-dojos',
164-
cmd: 'have_permissions_on_user',
165-
perm: 'ticketing-admin'
166-
}]
167-
}, {
168-
role: 'basic-user',
169-
customValidator: [{
170-
role: 'cd-users',
171-
cmd: 'is_self'
172-
}]
97+
role: 'basic-user'
17398
}],
17499

175100
'invite_ninja': [{

config/perm/users.js

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22

33
module.exports = function(){
44
return {
5-
'load': [{
6-
role: 'basic-user',
7-
userTypes: 'champion'
8-
},
9-
{ role: 'basic-user',
5+
'load': [{ role: 'basic-user',
106
customValidator: [{
117
role: 'cd-users',
128
cmd: 'is_self'
@@ -59,24 +55,23 @@ module.exports = function(){
5955

6056
'load_champions_for_user': [{
6157
role: 'basic-user',
62-
customValidator: [
63-
{ role: 'cd-users',
58+
customValidator: [{
59+
role: 'cd-users',
6460
cmd: 'is_self'
6561
}]
62+
},
63+
{ role: 'basic-user',
64+
customValidator: [{
65+
role: 'cd-dojos',
66+
cmd: 'have_permissions_on_user',
67+
perm: 'dojo-admin'
68+
}]
6669
}, {
6770
role: 'basic-user',
6871
customValidator: [
6972
{ role: 'cd-users',
7073
cmd: 'is_parent_of'
7174
}]
72-
}, {
73-
role: 'basic-user',
74-
userType: 'champion',
75-
extendedUserTypes: true,
76-
customValidator: [{
77-
role: 'cd-dojos',
78-
cmd: 'belongs_to_dojo'
79-
}]
8075
}],
8176
'load_dojo_admins_for_user': [{
8277
role: 'basic-user',
@@ -92,10 +87,10 @@ module.exports = function(){
9287
}]
9388
}, {
9489
role: 'basic-user',
95-
userType: 'champion',
9690
customValidator: [{
9791
role: 'cd-dojos',
98-
cmd: 'belongs_to_dojo'
92+
cmd: 'have_permissions_on_user',
93+
perm: 'dojo-admin'
9994
}]
10095
}],
10196
'record_login': [{

lib/profiles/load-children-for-user.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function cmd_load_children_for_user (args, done) {
1010
if (!parentProfile) return done(null, {error: 'User profile not found for userId ' + userId, http$: {status: 404}});
1111
if (!parentProfile.children) return done(null, []);
1212
async.map(parentProfile.children, function (childUserId, cb) {
13-
seneca.act({role: 'cd-users', cmd: 'load', id: childUserId, user: args.user}, cb);
13+
seneca.act({role: 'cd-profiles', cmd: 'user_profile_data', query: {userId: childUserId}, user: args.user}, cb);
1414
}, function (err, children) {
1515
if (err) return done(err);
1616
return done(null, children);

lib/profiles/load-parents-for-user.js

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_parents_for_user (args, done) {
5+
var seneca = this;
6+
var userId = args.userId;
7+
8+
seneca.act({role: args.role, cmd: 'list', query: {userId: userId}}, function (err, response) {
9+
if (err) return done(err);
10+
var childProfile = response[0];
11+
if (!childProfile || !childProfile.parents) return done();
12+
async.map(childProfile.parents, function (parentUserId, cb) {
13+
seneca.act({role: 'cd-profiles', cmd: 'user_profile_data', query: {userId: parentUserId}, user: args.user}, cb);
14+
}, function (err, parents) {
15+
if (err) return done(err);
16+
return done(null, parents);
17+
});
18+
});
19+
}
20+
21+
module.exports = cmd_load_parents_for_user;

0 commit comments

Comments
 (0)