@uppy/companion
Version:
OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:
42 lines (41 loc) • 1.16 kB
JavaScript
;
const tokenService = require('../helpers/jwt');
const { respondWithError } = require('../provider/error');
/**
*
* @param {object} req
* @param {object} res
*/
async function logout(req, res, next) {
const cleanSession = () => {
if (req.session.grant) {
req.session.grant.state = null;
req.session.grant.dynamic = null;
}
};
const { companion } = req;
const { providerUserSession } = companion;
if (!providerUserSession) {
cleanSession();
res.json({ ok: true, revoked: false });
return;
}
try {
const { accessToken } = providerUserSession;
const data = await companion.provider.logout({
token: accessToken,
providerUserSession,
companion,
});
delete companion.providerUserSession;
tokenService.removeFromCookies(res, companion.options, companion.providerClass.oauthProvider);
cleanSession();
res.json({ ok: true, ...data });
}
catch (err) {
if (respondWithError(err, res))
return;
next(err);
}
}
module.exports = logout;