import React from 'react'; import _ from 'lodash'; import { Users } from '/imports/collections/users/index'; const finishWithMessage = (res, message, redirect = "/") => { const output = `

Congrats!

${message}

`; res.writeHead(200, { 'Content-Length': output.length, 'Content-Type': 'text/html', }); res.end(output); }; Picker.route('/back/verifyEmail/:token', function(params, req, res, next) { const user = Users.findOne({'services.email.verificationTokens.token': params.token}); if(!user) return finishWithMessage(res, 'Invalid or outdated token.'); const token = _.find(user.services.email.verificationTokens, x => x.token === params.token); if(new Date().getTime() - token.when.getTime() > 2 * 24 * 60 * 60 * 1000) return finishWithMessage(res, 'Invalid or outdated token.'); finishWithMessage(res, 'Email has been verified.',"/"); const idx = _.findIndex(user.emails, x => x.address === token.address); Users.update({_id: user._id}, {$set: { [`emails.${idx}.verified`]: true, }}); // "services": { // "password": { // "bcrypt": "$2a$10$FqOvMve/MonERrLIOCJbruvS9iHoz5ixknGfm/ZAiOt9EiF43W4Z6" // }, // "email": { // "verificationTokens": [ // { // "token": "05T-Ht_BzprDSAOVIYC-yUvDQ3Hp0wNym4eTx2g1VmI", // "address": "krowa@druga.je", // "when": new Date(1479502106631) // } // ] // }, });