- add following three properties
- []x verificationToken - String
- isVerified - {type:Boolean, default:false}
- verified - Date
- setup fake verificationToken - 'fake token'
- remove everything after User.create()
- send back success message and token
- right after isPasswordCorrect
- check if user.isVerified, if not 401
- create verifyEmail in authController
- get verificationToken and email from req.body
- setup a '/verify-email' route in authRoutes
- test in a Postman
- check for user using email
- if no user 401
- if token does not match user token 401
- if correct set
- user.isVerified = true
- user.verified = Date.now()
- user.verificationToken = ''
- save use with instance method
- return msg:'email verified'
- re-watch project 08
- ethereal credentials (create account/login)
- install nodemailer
- create (nodemailerConfig, sendEmail, sendResetPasswordEmail, sendVerficationEmail) files in utils
- refactor sendEmail
- setup sendVerificationEmail.js
- pass arguments
- create Token.js in models
- refreshToken,ip,userAgent - all String and required
- isValid - Boolean, default:true
- ref user
- timestamps true
- User Model
- passwordToken {type:String}
- passwordTokenExpirationDate {type:Date}
- authController
- forgotPassword and resetPassword
- authRoutes
- post '/forgot-password' '/reset-password'