feat: return more info
parent
07dcb9b529
commit
54ee61d537
104
index.mjs
104
index.mjs
|
@ -1,60 +1,74 @@
|
||||||
import { config } from 'dotenv';
|
import { config } from "dotenv";
|
||||||
config();
|
config();
|
||||||
|
|
||||||
import express from 'express';
|
import express from "express";
|
||||||
import jwt from 'jsonwebtoken';
|
import jwt from "jsonwebtoken";
|
||||||
import { MongoClient } from 'mongodb';
|
import { MongoClient } from "mongodb";
|
||||||
|
|
||||||
const client = new MongoClient(process.env.MONGODB);
|
const client = new MongoClient(process.env.MONGODB);
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
app.get('/', (_, res) => res.send('social login api\nsource code: https://git.revolt.chat/revolt/social-login-api'));
|
app.get("/", (_, res) =>
|
||||||
|
res.send(
|
||||||
|
"social login api\nsource code: https://git.revolt.chat/revolt/social-login-api"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
app.get('/jwt', async (req, res) => {
|
app.get("/jwt", async (req, res) => {
|
||||||
const token = req.headers['x-session-token'];
|
const token = req.headers["x-session-token"];
|
||||||
if (typeof token === 'string') {
|
if (typeof token === "string") {
|
||||||
const session = await client.db('revolt')
|
const session = await client.db("revolt").collection("sessions").findOne({
|
||||||
.collection('sessions')
|
token,
|
||||||
.findOne({
|
});
|
||||||
token
|
|
||||||
});
|
|
||||||
|
|
||||||
if (session) {
|
if (session) {
|
||||||
const user = await client.db('revolt')
|
const user = await client.db("revolt").collection("users").findOne({
|
||||||
.collection('users')
|
_id: session.user_id,
|
||||||
.findOne({
|
});
|
||||||
_id: session.user_id
|
|
||||||
});
|
if (user) {
|
||||||
|
res.send(
|
||||||
if (user) {
|
jwt.sign(
|
||||||
res.send(jwt.sign({
|
{
|
||||||
id: user._id,
|
id: user._id,
|
||||||
username: user.username
|
},
|
||||||
}, process.env.JWT_SECRET, {
|
process.env.JWT_SECRET
|
||||||
expiresIn: '1h'
|
)
|
||||||
}));
|
);
|
||||||
} else {
|
} else {
|
||||||
res.status(400).send('No user.');
|
res.status(400).send("No user.");
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
res.status(403).send('No session.');
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
res.status(400).send('No token.');
|
res.status(403).send("No session.");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
res.status(400).send("No token.");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/info', (req, res) => {
|
app.post("/info", async (req, res) => {
|
||||||
const token = req.headers['x-jwt'];
|
const token = req.headers["x-jwt"];
|
||||||
if (token) {
|
if (token) {
|
||||||
try {
|
try {
|
||||||
res.send(jwt.verify(token, process.env.JWT_SECRET));
|
const { id } = jwt.verify(token, process.env.JWT_SECRET);
|
||||||
} catch(err) {
|
|
||||||
res.status(400).send('Invalid JWT.');
|
const user = await client.db("revolt").collection("users").findOne({
|
||||||
}
|
_id: id,
|
||||||
} else {
|
});
|
||||||
res.status(400).send('No token.');
|
|
||||||
|
res.send({
|
||||||
|
id: user._id,
|
||||||
|
username: user.username,
|
||||||
|
displayName: user.display_name,
|
||||||
|
discriminator: user.discriminator,
|
||||||
|
avatar: user.avatar?._id ?? null,
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
res.status(400).send("Invalid JWT.");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
res.status(400).send("No token.");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.listen(50003, () => console.info('listening on :50003'));
|
app.listen(50003, () => console.info("listening on :50003"));
|
||||||
|
|
Loading…
Reference in New Issue