web/src/web/routes/internal.js

88 lines
2.2 KiB
JavaScript

var express = require('express');
var router = express.Router();
var path = require("path")
var auth = require("../../modules/sub-auth")
var log = require("../../modules/sub-log")
var uuid = require("uuid")
const wlog = log.getInstance("Web")
const alog = log.getInstance("Authentification")
router.get('/redirect', function(req, res, next) {
if(auth.checkUser(req.cookies.token)) {
res.redirect("/")
} else {
if(auth.getSession(req.cookies.session)) {
if(req.query.code) {
alog.step.init("get_discord_info_" + req.cookies.session , "Récupération des informations de l'utilisateur associé à l'autorisation : '" + req.cookies.sessionn + "'")
const user = auth.getDiscordUser(req.query.code, req.cookies.session)
user.then(data => {
alog.step.end("get_discord_info_" + req.cookies.session)
var user = data
const token = uuid.v4().toString()
user.token = token
auth.addUser(user)
res.cookie("token", token, { maxAge: 90000000000000, httpOnly: true })
auth.removeSession(req.cookies.session)
res.clearCookie("session")
res.redirect("/")
}).catch(error => {
alog.step.error("get_discord_info_" + req.cookies.session)
console.log(error)
res.redirect('/login?error=CANCEL_LOGIN')
})
} else {
res.redirect('/login?error=CANCEL_LOGIN')
}
} else {
res.redirect("/login")
}
}
});
router.get("/socketlink", (req,res,next) => {
if(process.env.DEV == true) {
res.send("ws://localhost:4000")
} else {
res.send("ws://subsonics.raphix.fr")
}
})
router.get("/logout", (req,res,next) => {
if(auth.checkUser(req.cookies.token)) {
auth.removeUser(req.cookies.token)
res.clearCookie("token")
res.redirect(302, "/login")
} else {
res.redirect(302, "/login")
}
})
module.exports = router;