mirror of
https://github.com/20kaushik02/spotify-manager.git
synced 2025-12-06 08:04:06 +00:00
tidying up redis' remains while shifting to sqlite, DRYer 500 responses
This commit is contained in:
parent
5803c997b2
commit
40cf0c2e2b
3
.gitignore
vendored
3
.gitignore
vendored
@ -104,3 +104,6 @@ dist
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# SQLite db
|
||||
*.db
|
||||
|
||||
@ -11,7 +11,7 @@ const __controller_func = async (req, res) => {
|
||||
|
||||
} catch (error) {
|
||||
logger.error('__controller_func', { error });
|
||||
return res.status(500).send({ message: "Server Error. Try again." });
|
||||
return res.sendStatus(500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ const login = (_req, res) => {
|
||||
);
|
||||
} catch (error) {
|
||||
logger.error('login', { error });
|
||||
return res.status(500).send({ message: "Server Error. Try again." });
|
||||
return res.sendStatus(500);
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ const callback = async (req, res) => {
|
||||
logger.info('New login.');
|
||||
req.session.accessToken = response.data.access_token;
|
||||
req.session.refreshToken = response.data.refresh_token;
|
||||
req.session.cookie.maxAge = 7776000000 // 90 days, arbitrary
|
||||
req.session.cookie.maxAge = 7 * 24 * 60 * 60 * 1000 // 1 week
|
||||
|
||||
req.session.save((err) => {
|
||||
if (err) {
|
||||
@ -87,7 +87,7 @@ const callback = async (req, res) => {
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error('callback', { error });
|
||||
return res.status(500).send({ message: "Server Error. Try again." });
|
||||
return res.sendStatus(500);
|
||||
}
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ const refresh = async (req, res) => {
|
||||
if (response.status === 200) {
|
||||
req.session.accessToken = response.data.access_token;
|
||||
req.session.refreshToken = response.data.refresh_token ?? req.session.refreshToken; // refresh token rotation
|
||||
req.session.cookie.maxAge = 7776000000 // 90 days, arbitrary
|
||||
req.session.cookie.maxAge = 7 * 24 * 60 * 60 * 1000 // 1 week
|
||||
|
||||
logger.info(`Access token refreshed${(response.data.refresh_token !== null) ? ' and refresh token updated' : ''}.`);
|
||||
return res.status(200).send({
|
||||
@ -122,7 +122,7 @@ const refresh = async (req, res) => {
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error('refresh', { error });
|
||||
return res.status(500).send({ message: "Server Error. Try again." });
|
||||
return res.sendStatus(500);
|
||||
}
|
||||
};
|
||||
|
||||
@ -134,7 +134,7 @@ const refresh = async (req, res) => {
|
||||
const logout = async (req, res) => {
|
||||
try {
|
||||
const delSession = req.session.destroy((err) => {
|
||||
if (Object.keys(err).length) { // err is empty obj if no error
|
||||
if (err) {
|
||||
logger.error("Error while logging out", { err });
|
||||
return res.sendStatus(500);
|
||||
} else {
|
||||
@ -145,7 +145,7 @@ const logout = async (req, res) => {
|
||||
})
|
||||
} catch (error) {
|
||||
logger.error('logout', { error });
|
||||
return res.status(500).send({ message: "Server Error. Try again." });
|
||||
return res.sendStatus(500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -73,7 +73,7 @@ const getUserPlaylists = async (req, res) => {
|
||||
return res.status(200).send(playlists);
|
||||
} catch (error) {
|
||||
logger.error('getUserPlaylists', { error });
|
||||
return res.status(500).send({ message: "Server Error. Try again." });
|
||||
return res.sendStatus(500);
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,7 +155,7 @@ const getPlaylistDetails = async (req, res) => {
|
||||
return res.status(200).send(playlist);
|
||||
} catch (error) {
|
||||
logger.error('getPlaylistDetails', { error });
|
||||
return res.status(500).send({ message: "Server Error. Try again." });
|
||||
return res.sendStatus(500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
25
index.js
25
index.js
@ -8,8 +8,7 @@ const cors = require('cors');
|
||||
const cookieParser = require('cookie-parser');
|
||||
const helmet = require("helmet");
|
||||
|
||||
const redis = require('redis');
|
||||
const RedisStore = require("connect-redis").default;
|
||||
const SQLiteStore = require("connect-sqlite3")(session);
|
||||
|
||||
const logger = require("./utils/logger")(module);
|
||||
|
||||
@ -18,26 +17,15 @@ const app = express();
|
||||
// Enable this if you run behind a proxy (e.g. nginx)
|
||||
app.set('trust proxy', process.env.TRUST_PROXY);
|
||||
|
||||
// Configure Redis client and connect
|
||||
const redisClient = redis.createClient({
|
||||
host: process.env.REDIS_HOST,
|
||||
port: process.env.REDIS_PORT,
|
||||
// Configure SQLite store file
|
||||
const sqliteStore = new SQLiteStore({
|
||||
table: "session_store",
|
||||
db: "spotify-manager.db"
|
||||
});
|
||||
|
||||
redisClient.connect()
|
||||
.then(() => {
|
||||
logger.info("Connected to Redis store");
|
||||
})
|
||||
.catch((error) => {
|
||||
logger.error("Redis connection error", { error });
|
||||
cleanupFunc();
|
||||
});
|
||||
|
||||
const redisStore = new RedisStore({ client: redisClient });
|
||||
|
||||
// Configure session middleware
|
||||
app.use(session({
|
||||
store: redisStore,
|
||||
store: sqliteStore,
|
||||
secret: process.env.SESSION_SECRET,
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
@ -84,7 +72,6 @@ const server = app.listen(port, () => {
|
||||
|
||||
const cleanupFunc = (signal) => {
|
||||
Promise.allSettled([
|
||||
redisClient.disconnect,
|
||||
util.promisify(server.close),
|
||||
]).then(() => {
|
||||
if (signal)
|
||||
|
||||
@ -13,9 +13,9 @@ const isAuthenticated = (req, res, next) => {
|
||||
next()
|
||||
} else {
|
||||
const delSession = req.session.destroy((err) => {
|
||||
if (Object.keys(err).length) {
|
||||
if (err) {
|
||||
logger.error("Error while destroying session.", { err });
|
||||
return res.status(500).send("Server error, try later.");
|
||||
return res.sendStatus(500);
|
||||
} else {
|
||||
logger.info("Session invalid, destroyed.", { sessionID: delSession.id });
|
||||
res.clearCookie("connect.sid");
|
||||
|
||||
1344
package-lock.json
generated
1344
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -19,7 +19,7 @@
|
||||
"homepage": "https://github.com/20kaushik02/spotify-manager#readme",
|
||||
"dependencies": {
|
||||
"axios": "^1.5.0",
|
||||
"connect-redis": "^7.1.0",
|
||||
"connect-sqlite3": "^0.9.15",
|
||||
"cookie-parser": "^1.4.6",
|
||||
"cors": "^2.8.5",
|
||||
"dotenv-flow": "^3.3.0",
|
||||
@ -27,7 +27,6 @@
|
||||
"express-session": "^1.17.3",
|
||||
"express-validator": "^7.0.1",
|
||||
"helmet": "^7.0.0",
|
||||
"redis": "^4.6.10",
|
||||
"winston": "^3.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user