Created the /session route
This commit is contained in:
parent
0555645573
commit
bc5c62a8b9
40
api/routes/session.ts
Normal file
40
api/routes/session.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import Router, {Request, Response} from 'express';
|
||||
import {createTokenByCode, getUser} from "../../controller/discord";
|
||||
import {User} from "../../models/User";
|
||||
import {Token} from "../../models/Token";
|
||||
|
||||
const app = Router();
|
||||
|
||||
app.post("/create", async (req: Request, res: Response) => {
|
||||
// Check if a code has been provided
|
||||
if (!req.body.code) return res.status(400).json({message: "You need to provide a code"});
|
||||
|
||||
// Check if the provided token is valid
|
||||
const token = await createTokenByCode(req.body.code).catch(() => undefined);
|
||||
if (!token) return res.status(400).json({message: "The provided token is wrong"});
|
||||
|
||||
// Check if all scopes have been provided
|
||||
const scopes = token.scope.split(" ");
|
||||
if (!(scopes.includes("identify") && scopes.includes("guilds"))) return res.status(400).json({message: "The provided token is wrong"});
|
||||
|
||||
// Get user data
|
||||
const userData = await getUser(token.access_token).catch(() => undefined);
|
||||
if (!userData) return res.status(400).json({message: "The provided token is wrong"});
|
||||
|
||||
// Update or insert user
|
||||
await User.updateOne({clientId: userData.id}, {
|
||||
username: userData.username + "#" + userData.discriminator,
|
||||
avatarId: userData.avatar, locale: userData.locale,
|
||||
accessToken: token.access_token, refreshToken: token.refresh_token,
|
||||
}, {upsert: true});
|
||||
|
||||
// Create token
|
||||
const appToken = await Token.create({clientId: userData.id, userAgent: req.headers['user-agent']});
|
||||
|
||||
// Return token
|
||||
res.json({token: appToken.token});
|
||||
});
|
||||
|
||||
// TODO: Route to delete a session & list all current sessions
|
||||
|
||||
module.exports = app;
|
Loading…
x
Reference in New Issue
Block a user