38 lines
818 B
JavaScript
38 lines
818 B
JavaScript
|
const jwt = require('jsonwebtoken');
|
||
|
|
||
|
|
||
|
class Auth {
|
||
|
/**
|
||
|
* Create a verification token using jwt
|
||
|
*/
|
||
|
createVerificationToken(email, fromEmail) {
|
||
|
return jwt.sign({
|
||
|
email,
|
||
|
fromEmail,
|
||
|
}, process.env.SECRET_TOKEN, {
|
||
|
expiresIn: '1 day',
|
||
|
subject: 'email-verification',
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Verify token
|
||
|
*/
|
||
|
verifyEmailToken(token) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
jwt.verify(token, process.env.SECRET_TOKEN, (err, data) => {
|
||
|
if (err) {
|
||
|
if (err.name === 'TokenExpiredError') {
|
||
|
reject('The verification link has expired');
|
||
|
} else if (err.name === 'JsonWebTokenError') {
|
||
|
reject('Verification link is malformend');
|
||
|
}
|
||
|
}
|
||
|
resolve(data);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default new Auth();
|