| 
									
										
										
										
											2020-12-03 15:45:45 +00:00
										 |  |  | const fullyCertifiedUser = require('./certifiedUserData'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-30 18:17:07 -03:00
										 |  |  | const path = require('path'); | 
					
						
							|  |  |  | require('dotenv').config({ path: path.resolve(__dirname, '../../../.env') }); | 
					
						
							|  |  |  | const MongoClient = require('mongodb').MongoClient; | 
					
						
							|  |  |  | const ObjectId = require('mongodb').ObjectID; | 
					
						
							|  |  |  | const debug = require('debug'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-16 08:19:45 +00:00
										 |  |  | const envVariables = process.argv; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-30 18:17:07 -03:00
										 |  |  | const log = debug('fcc:tools:seedLocalAuthUser'); | 
					
						
							| 
									
										
										
										
											2019-02-16 08:48:52 +00:00
										 |  |  | const { MONGOHQ_URL } = process.env; | 
					
						
							| 
									
										
										
										
											2018-10-30 18:17:07 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-22 00:09:38 +06:00
										 |  |  | const defaultUserImage = require('../../../config/misc').defaultUserImage; | 
					
						
							| 
									
										
										
										
											2020-09-03 14:21:16 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-30 18:17:07 -03:00
										 |  |  | function handleError(err, client) { | 
					
						
							|  |  |  |   if (err) { | 
					
						
							|  |  |  |     console.error('Oh noes!! Error seeding local auth user.'); | 
					
						
							|  |  |  |     console.error(err); | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |       client.close(); | 
					
						
							|  |  |  |     } catch (e) { | 
					
						
							|  |  |  |       // no-op
 | 
					
						
							|  |  |  |     } finally { | 
					
						
							|  |  |  |       /* eslint-disable-next-line no-process-exit */ | 
					
						
							|  |  |  |       process.exit(1); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-03 15:45:45 +00:00
										 |  |  | /* eslint-disable max-len */ | 
					
						
							|  |  |  | const authUser = { | 
					
						
							|  |  |  |   _id: ObjectId('5bd30e0f1caf6ac3ddddddb5'), | 
					
						
							|  |  |  |   email: 'foo@bar.com', | 
					
						
							|  |  |  |   emailVerified: true, | 
					
						
							|  |  |  |   progressTimestamps: [], | 
					
						
							|  |  |  |   isBanned: false, | 
					
						
							|  |  |  |   isCheater: false, | 
					
						
							|  |  |  |   username: 'developmentuser', | 
					
						
							|  |  |  |   about: '', | 
					
						
							|  |  |  |   name: 'Development User', | 
					
						
							|  |  |  |   location: '', | 
					
						
							|  |  |  |   picture: defaultUserImage, | 
					
						
							|  |  |  |   acceptedPrivacyTerms: true, | 
					
						
							|  |  |  |   sendQuincyEmail: false, | 
					
						
							|  |  |  |   currentChallengeId: '', | 
					
						
							|  |  |  |   isHonest: false, | 
					
						
							|  |  |  |   isFrontEndCert: false, | 
					
						
							|  |  |  |   isDataVisCert: false, | 
					
						
							|  |  |  |   isBackEndCert: false, | 
					
						
							|  |  |  |   isFullStackCert: false, | 
					
						
							|  |  |  |   isRespWebDesignCert: false, | 
					
						
							|  |  |  |   is2018DataVisCert: false, | 
					
						
							|  |  |  |   isFrontEndLibsCert: false, | 
					
						
							|  |  |  |   isJsAlgoDataStructCert: false, | 
					
						
							|  |  |  |   isApisMicroservicesCert: false, | 
					
						
							|  |  |  |   isInfosecQaCert: false, | 
					
						
							|  |  |  |   isQaCertV7: false, | 
					
						
							|  |  |  |   isInfosecCertV7: false, | 
					
						
							|  |  |  |   is2018FullStackCert: false, | 
					
						
							|  |  |  |   isSciCompPyCertV7: false, | 
					
						
							|  |  |  |   isDataAnalysisPyCertV7: false, | 
					
						
							|  |  |  |   isMachineLearningPyCertV7: false, | 
					
						
							|  |  |  |   completedChallenges: [], | 
					
						
							|  |  |  |   portfolio: [], | 
					
						
							|  |  |  |   yearsTopContributor: envVariables.includes('--top-contributor') | 
					
						
							|  |  |  |     ? ['2017', '2018', '2019'] | 
					
						
							|  |  |  |     : [], | 
					
						
							|  |  |  |   rand: 0.6126749173148205, | 
					
						
							|  |  |  |   theme: 'default', | 
					
						
							|  |  |  |   profileUI: { | 
					
						
							|  |  |  |     isLocked: true, | 
					
						
							|  |  |  |     showAbout: false, | 
					
						
							|  |  |  |     showCerts: false, | 
					
						
							|  |  |  |     showDonation: false, | 
					
						
							|  |  |  |     showHeatMap: false, | 
					
						
							|  |  |  |     showLocation: false, | 
					
						
							|  |  |  |     showName: false, | 
					
						
							|  |  |  |     showPoints: false, | 
					
						
							|  |  |  |     showPortfolio: false, | 
					
						
							|  |  |  |     showTimeLine: false | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   badges: { | 
					
						
							|  |  |  |     coreTeam: [] | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   isDonating: envVariables.includes('--donor'), | 
					
						
							|  |  |  |   emailAuthLinkTTL: null, | 
					
						
							|  |  |  |   emailVerifyTTL: null | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | const blankUser = { | 
					
						
							|  |  |  |   _id: ObjectId('5bd30e0f1caf6ac3ddddddb9'), | 
					
						
							|  |  |  |   email: 'bar@bar.com', | 
					
						
							|  |  |  |   emailVerified: true, | 
					
						
							|  |  |  |   progressTimestamps: [], | 
					
						
							|  |  |  |   isBanned: false, | 
					
						
							|  |  |  |   isCheater: false, | 
					
						
							|  |  |  |   username: 'twaha', | 
					
						
							|  |  |  |   about: '', | 
					
						
							|  |  |  |   name: 'Development User', | 
					
						
							|  |  |  |   location: '', | 
					
						
							|  |  |  |   picture: defaultUserImage, | 
					
						
							|  |  |  |   acceptedPrivacyTerms: true, | 
					
						
							|  |  |  |   sendQuincyEmail: false, | 
					
						
							|  |  |  |   currentChallengeId: '', | 
					
						
							|  |  |  |   isHonest: false, | 
					
						
							|  |  |  |   isFrontEndCert: false, | 
					
						
							|  |  |  |   isDataVisCert: false, | 
					
						
							|  |  |  |   isBackEndCert: false, | 
					
						
							|  |  |  |   isFullStackCert: false, | 
					
						
							|  |  |  |   isRespWebDesignCert: false, | 
					
						
							|  |  |  |   is2018DataVisCert: false, | 
					
						
							|  |  |  |   isFrontEndLibsCert: false, | 
					
						
							|  |  |  |   isJsAlgoDataStructCert: false, | 
					
						
							|  |  |  |   isApisMicroservicesCert: false, | 
					
						
							|  |  |  |   isInfosecQaCert: false, | 
					
						
							|  |  |  |   isQaCertV7: false, | 
					
						
							|  |  |  |   isInfosecCertV7: false, | 
					
						
							|  |  |  |   is2018FullStackCert: false, | 
					
						
							|  |  |  |   isSciCompPyCertV7: false, | 
					
						
							|  |  |  |   isDataAnalysisPyCertV7: false, | 
					
						
							|  |  |  |   isMachineLearningPyCertV7: false, | 
					
						
							|  |  |  |   completedChallenges: [], | 
					
						
							|  |  |  |   portfolio: [], | 
					
						
							|  |  |  |   yearsTopContributor: [], | 
					
						
							|  |  |  |   rand: 0.6126749173148205, | 
					
						
							|  |  |  |   theme: 'default', | 
					
						
							|  |  |  |   profileUI: { | 
					
						
							|  |  |  |     isLocked: true, | 
					
						
							|  |  |  |     showAbout: false, | 
					
						
							|  |  |  |     showCerts: false, | 
					
						
							|  |  |  |     showDonation: false, | 
					
						
							|  |  |  |     showHeatMap: false, | 
					
						
							|  |  |  |     showLocation: false, | 
					
						
							|  |  |  |     showName: false, | 
					
						
							|  |  |  |     showPoints: false, | 
					
						
							|  |  |  |     showPortfolio: false, | 
					
						
							|  |  |  |     showTimeLine: false | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   badges: { | 
					
						
							|  |  |  |     coreTeam: [] | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   isDonating: false, | 
					
						
							|  |  |  |   emailAuthLinkTTL: null, | 
					
						
							|  |  |  |   emailVerifyTTL: null | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-22 00:09:38 +06:00
										 |  |  | MongoClient.connect(MONGOHQ_URL, { useNewUrlParser: true }, (err, client) => { | 
					
						
							| 
									
										
										
										
											2019-02-18 19:32:49 +00:00
										 |  |  |   handleError(err, client); | 
					
						
							| 
									
										
										
										
											2018-10-30 18:17:07 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-18 19:32:49 +00:00
										 |  |  |   log('Connected successfully to mongo'); | 
					
						
							| 
									
										
										
										
											2018-10-30 18:17:07 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-18 19:32:49 +00:00
										 |  |  |   const db = client.db('freecodecamp'); | 
					
						
							|  |  |  |   const user = db.collection('user'); | 
					
						
							| 
									
										
										
										
											2018-10-30 18:17:07 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-03 15:45:45 +00:00
										 |  |  |   if (process.argv[2] === 'certUser') { | 
					
						
							| 
									
										
										
										
											2021-01-29 23:43:52 -06:00
										 |  |  |     user.deleteMany( | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         _id: { | 
					
						
							|  |  |  |           $in: [ | 
					
						
							|  |  |  |             ObjectId('5fa2db00a25c1c1fa49ce067'), | 
					
						
							|  |  |  |             ObjectId('5bd30e0f1caf6ac3ddddddb5'), | 
					
						
							|  |  |  |             ObjectId('5bd30e0f1caf6ac3ddddddb9') | 
					
						
							|  |  |  |           ] | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       err => { | 
					
						
							|  |  |  |         handleError(err, client); | 
					
						
							| 
									
										
										
										
											2018-10-30 18:17:07 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-29 23:43:52 -06:00
										 |  |  |         try { | 
					
						
							|  |  |  |           user.insertOne(fullyCertifiedUser); | 
					
						
							|  |  |  |           user.insertOne(blankUser); | 
					
						
							|  |  |  |         } catch (e) { | 
					
						
							|  |  |  |           handleError(e, client); | 
					
						
							|  |  |  |         } finally { | 
					
						
							|  |  |  |           log('local auth user seed complete'); | 
					
						
							|  |  |  |           client.close(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-11-22 00:09:38 +06:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2021-01-29 23:43:52 -06:00
										 |  |  |     ); | 
					
						
							| 
									
										
										
										
											2020-12-03 15:45:45 +00:00
										 |  |  |   } else { | 
					
						
							|  |  |  |     user.deleteMany( | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         _id: { | 
					
						
							|  |  |  |           $in: [ | 
					
						
							| 
									
										
										
										
											2021-01-29 23:43:52 -06:00
										 |  |  |             ObjectId('5fa2db00a25c1c1fa49ce067'), | 
					
						
							| 
									
										
										
										
											2020-12-03 15:45:45 +00:00
										 |  |  |             ObjectId('5bd30e0f1caf6ac3ddddddb5'), | 
					
						
							|  |  |  |             ObjectId('5bd30e0f1caf6ac3ddddddb9') | 
					
						
							|  |  |  |           ] | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       err => { | 
					
						
							|  |  |  |         handleError(err, client); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |           user.insertOne(authUser); | 
					
						
							|  |  |  |           user.insertOne(blankUser); | 
					
						
							|  |  |  |         } catch (e) { | 
					
						
							|  |  |  |           handleError(e, client); | 
					
						
							|  |  |  |         } finally { | 
					
						
							|  |  |  |           log('local auth user seed complete'); | 
					
						
							|  |  |  |           client.close(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2019-02-18 19:32:49 +00:00
										 |  |  | }); |