3.2 KiB
3.2 KiB
id | title | challengeType |
---|---|---|
589a8eb3f9fc0f352b528e72 | Implementation of Social Authentication III | 2 |
Description
console.log(profile);
currently is:
db.collection('socialusers').findAndModify(With a findAndModify, it allows you to search for an object and update it, as well as insert the object if it doesn't exist and receive the new object back each time in our callback function. In this example, we always set the last_login as now, we always increment the login_count by 1, and only when we insert a new object(new user) do we populate the majority of the fields. Something to notice also is the use of default values. Sometimes a profile returned won't have all the information filled out or it will have been chosen by the user to remain private; so in this case we have to handle it to prevent an error. You should be able to login to your app now- try it! Submit your page when you think you've got it right. If you're running into errors, you can check out an example of this mini-project's finished code here.
{id: profile.id},
{},
{$setOnInsert:{
id: profile.id,
name: profile.displayName || 'John Doe',
photo: profile.photos[0].value || '',
email: profile.emails[0].value || 'No public email',
created_on: new Date(),
provider: profile.provider || ''
},$set:{
last_login: new Date()
},$inc:{
login_count: 1
}},
{upsert:true, new: true},
(err, doc) => {
return cb(null, doc.value);
}
);
Instructions
Tests
tests:
- text: GitHub strategy setup complete
testString: getUserInput => $.get(getUserInput('url')+ '/_api/server.js') .then(data => { assert.match(data, /GitHubStrategy[^]*db.collection/gi, 'Strategy should use now use the database to search for the user'); assert.match(data, /GitHubStrategy[^]*socialusers/gi, 'Strategy should use "socialusers" as db collection'); assert.match(data, /GitHubStrategy[^]*return cb/gi, 'Strategy should return the callback function "cb"'); }, xhr => { throw new Error(xhr.statusText); })
Challenge Seed
Solution
// solution required