207 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const fullyCertifiedUser = require('./certifiedUserData');
 | |
| 
 | |
| 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');
 | |
| 
 | |
| const envVariables = process.argv;
 | |
| 
 | |
| const log = debug('fcc:tools:seedLocalAuthUser');
 | |
| const { MONGOHQ_URL } = process.env;
 | |
| 
 | |
| const defaultUserImage = require('../../../config/misc').defaultUserImage;
 | |
| 
 | |
| 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);
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| /* 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
 | |
| };
 | |
| 
 | |
| MongoClient.connect(MONGOHQ_URL, { useNewUrlParser: true }, (err, client) => {
 | |
|   handleError(err, client);
 | |
| 
 | |
|   log('Connected successfully to mongo');
 | |
| 
 | |
|   const db = client.db('freecodecamp');
 | |
|   const user = db.collection('user');
 | |
| 
 | |
|   if (process.argv[2] === 'certUser') {
 | |
|     user.deleteMany(
 | |
|       {
 | |
|         _id: {
 | |
|           $in: [
 | |
|             ObjectId('5fa2db00a25c1c1fa49ce067'),
 | |
|             ObjectId('5bd30e0f1caf6ac3ddddddb5'),
 | |
|             ObjectId('5bd30e0f1caf6ac3ddddddb9')
 | |
|           ]
 | |
|         }
 | |
|       },
 | |
|       err => {
 | |
|         handleError(err, client);
 | |
| 
 | |
|         try {
 | |
|           user.insertOne(fullyCertifiedUser);
 | |
|           user.insertOne(blankUser);
 | |
|         } catch (e) {
 | |
|           handleError(e, client);
 | |
|         } finally {
 | |
|           log('local auth user seed complete');
 | |
|           client.close();
 | |
|         }
 | |
|       }
 | |
|     );
 | |
|   } else {
 | |
|     user.deleteMany(
 | |
|       {
 | |
|         _id: {
 | |
|           $in: [
 | |
|             ObjectId('5fa2db00a25c1c1fa49ce067'),
 | |
|             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();
 | |
|         }
 | |
|       }
 | |
|     );
 | |
|   }
 | |
| });
 |