2016-06-20 18:35:19 +00:00
|
|
|
import debug from 'debug';
|
|
|
|
import _ from 'lodash';
|
2015-07-25 00:52:07 +00:00
|
|
|
|
2016-06-20 18:35:19 +00:00
|
|
|
const publicUserProps = [
|
|
|
|
'id',
|
|
|
|
'name',
|
|
|
|
'username',
|
|
|
|
'bio',
|
|
|
|
'theme',
|
|
|
|
'picture',
|
|
|
|
'points',
|
|
|
|
'languageTag',
|
|
|
|
|
|
|
|
'isCheater',
|
|
|
|
'isGithubCool',
|
|
|
|
|
|
|
|
'isFrontEndCert',
|
|
|
|
'isBackEndCert',
|
|
|
|
'isDataVisCert',
|
|
|
|
'isFullStackCert',
|
|
|
|
|
|
|
|
'githubURL',
|
|
|
|
'currentChallenge',
|
|
|
|
'challengeMap'
|
|
|
|
];
|
|
|
|
const log = debug('fcc:services:user');
|
2015-07-25 00:52:07 +00:00
|
|
|
|
2015-10-30 00:09:26 +00:00
|
|
|
export default function userServices() {
|
2015-07-25 00:52:07 +00:00
|
|
|
return {
|
|
|
|
name: 'user',
|
|
|
|
read: (req, resource, params, config, cb) => {
|
|
|
|
let { user } = req;
|
|
|
|
if (user) {
|
2016-06-20 18:35:19 +00:00
|
|
|
log('user is signed in');
|
|
|
|
return user.getChallengeMap$()
|
|
|
|
.map(challengeMap => ({ ...user.toJSON(), challengeMap }))
|
|
|
|
.subscribe(
|
|
|
|
user => cb(
|
|
|
|
null,
|
|
|
|
{
|
|
|
|
entities: {
|
|
|
|
user: {
|
|
|
|
[user.username]: _.pick(user, publicUserProps)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
result: user.username
|
|
|
|
}
|
|
|
|
),
|
|
|
|
cb
|
2016-03-21 22:39:45 +00:00
|
|
|
);
|
2015-07-25 00:52:07 +00:00
|
|
|
}
|
|
|
|
debug('user is not signed in');
|
2016-06-20 18:35:19 +00:00
|
|
|
// Zalgo!!!
|
2015-07-25 00:52:07 +00:00
|
|
|
return process.nextTick(() => {
|
|
|
|
cb(null, {});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|