Files
freeCodeCamp/server/services/user.js

44 lines
1.2 KiB
JavaScript
Raw Normal View History

import { Observable } from 'rx';
import _ from 'lodash';
import {
userPropsForSession,
normaliseUserFields
} from '../utils/publicUserProps';
2015-10-29 17:09:26 -07:00
export default function userServices() {
return {
name: 'user',
read: (req, resource, params, config, cb) => {
const { user } = req;
Observable.if(
() => !user,
Observable.of({}),
Observable.defer(() => user.getChallengeMap$())
.map(challengeMap => ({ ...user.toJSON(), challengeMap }))
.map(user => ({
entities: {
user: {
[user.username]: {
..._.pick(user, userPropsForSession),
isEmailVerified: !!user.emailVerified,
isGithub: !!user.githubURL,
isLinkedIn: !!user.linkedIn,
isTwitter: !!user.twitter,
isWebsite: !!user.website,
...normaliseUserFields(user)
}
}
},
result: user.username
})
)
)
.subscribe(
user => cb(null, user),
cb
);
}
};
}