Files
BotsCord/website/routers/auth/index.js
T

69 lines
2.5 KiB
JavaScript
Raw Normal View History

2022-07-30 16:09:49 +02:00
var express = require('express'),
2022-08-01 12:04:48 +02:00
router = express.Router(),
passport = require('passport');
2022-08-05 14:59:15 +02:00
const request = require('request');
2022-08-06 18:16:45 +02:00
var url = require('url');
2022-08-19 21:03:14 +02:00
var users = require('../../../models/user.js');
2022-08-02 18:14:51 +02:00
const client = require('../../../index');
2022-08-05 14:59:15 +02:00
router.get("/", (req, res, next) => {
if (req.session.backURL) {
req.session.backURL = req.session.backURL;
} else if (req.headers.referer) {
const parsed = url.parse(req.headers.referer);
2022-08-06 18:16:45 +02:00
if (parsed.hostname === global.config.server.host) {
2022-08-05 14:59:15 +02:00
req.session.backURL = parsed.path;
}
} else {
req.session.backURL = "/";
}
next();
}, passport.authenticate('discord'))
2022-07-30 19:58:22 +02:00
router.get('/callback', passport.authenticate('discord', {
2022-08-05 20:09:35 +02:00
failureRedirect: '/',
keepSessionInfo: true
2022-07-30 16:19:58 +02:00
}), function (req, res) {
2022-08-05 14:59:15 +02:00
try {
2022-08-17 14:57:28 +02:00
request({
2022-08-16 16:51:42 +02:00
url: `https://discord.com/api/v10/guilds/${global.config.discord.id}/members/${req.user.id}`,
2022-08-05 14:59:15 +02:00
method: "PUT",
json: {
access_token: req.user.accessToken
},
headers: {
2022-08-16 16:51:42 +02:00
"Authorization": `Bot ${global.bsl.token}`,
'Content-Type': 'application/json',
2022-08-05 14:59:15 +02:00
}
2022-08-17 14:57:28 +02:00
})
2022-08-16 16:51:42 +02:00
} catch(e) {
};
2022-08-02 18:14:51 +02:00
const embed = new client.embed()
.setTitle('User logged in')
2022-09-07 17:29:29 +01:00
.setDescription(`${req.user.username}#${req.user.discriminator} logged in\nID: ${req.user.id}`)
2022-08-02 18:14:51 +02:00
.setColor('#0099ff')
.setTimestamp()
.setThumbnail("https://cdn.discordapp.com/avatars/" + req.user.id + "/" + req.user.avatar + ".png")
.setFooter({ text: 'Logged in', iconURL: "https://cdn.discordapp.com/avatars/" + req.user.id + "/" + req.user.avatar + ".png" });
client.client.channels.cache.get(client.client.config.bot.channels.login).send({ embeds: [embed] });
2022-08-05 14:59:15 +02:00
res.redirect(req.session.backURL || '/')
2022-08-19 21:03:14 +02:00
users.findOne({ id: req.user.id }, (err, user) => {
if (err) return console.log(err);
if (!user) {
var newUser = new users({
id: req.user.id,
username: req.user.username,
discriminator: req.user.discriminator,
avatar: req.user.avatar,
coins: 0
});
newUser.save();
}
});
2022-07-30 16:19:58 +02:00
});
2022-08-01 12:04:48 +02:00
router.get('/logout', function (req, res) {
req.logout(function (err) {
if (err) { return next(err); }
2022-08-02 18:14:51 +02:00
req.session.destroy();
2022-08-01 12:04:48 +02:00
res.redirect('/');
});
});
2022-09-07 17:29:29 +01:00
module.exports = router;