Skip to content

Instantly share code, notes, and snippets.

@funador
Created February 17, 2019 16:28
Show Gist options
  • Save funador/261b7d17f64016820c6881153a7fa745 to your computer and use it in GitHub Desktop.
Save funador/261b7d17f64016820c6881153a7fa745 to your computer and use it in GitHub Desktop.
const jwt = require('jsonwebtoken')
const User = require('./user.model')
const { providers, JWT_EXPIRY, JWT_SECRET } = require('../config')
const createAuthToken = user =>
jwt.sign({user}, JWT_SECRET, {
subject: user.email,
expiresIn: JWT_EXPIRY,
algorithm: 'HS256'
})
providers.forEach(provider => {
exports[provider] = (req, res) => {
const io = req.app.get('io')
const providerData = req.user[provider]
const { email } = req.user
io.in(req.session.socketId).emit(provider, { providerData, email })
res.end()
}
})
exports.refresh = (req, res) => {
res.json(createAuthToken(req.user))
}
exports.unlink = (req, res) => {
const { email } = req.user
const update = {
[req.params.provider]: {}
}
User.findOneAndUpdate(email, update)
.then(() => res.status(204).end())
}
exports.logout = (req, res) => {
req.session.sessionEmail = ''
req.session.passport = {}
res.status(204).end()
}
exports.deleteAccount = (req, res) => {
const { email } = req.user
User.findOneAndRemove(email)
.then(() => res.status(204).end())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment