Skip to content

Commit ed4f242

Browse files
Add userid to logs
1 parent 24dd39d commit ed4f242

File tree

1 file changed

+30
-13
lines changed

1 file changed

+30
-13
lines changed

src/app.ts

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { StatusCodes } from "http-status-codes";
33
import { Config, EnvironmentEnum } from "./config";
44
import { isTest } from "./utilities";
55
import "./firebase";
6+
import jsonwebtoken, { TokenExpiredError } from "jsonwebtoken";
67

78
// import databaseMiddleware from "./middleware/database-middleware";
89
// import customCors from "./middleware/cors-middleware";
@@ -27,6 +28,7 @@ import shiftsRouter from "./services/shifts/shifts-router";
2728
import leaderboardRouter from "./services/leaderboard/leaderboard-router";
2829

2930
import cors from "cors";
31+
import { JwtPayloadValidator } from "./services/auth/auth-models";
3032

3133
const app = express();
3234
app.enable("trust proxy");
@@ -41,19 +43,34 @@ app.disable("etag");
4143
app.use(cors());
4244

4345
// Logs
44-
switch (Config.ENV) {
45-
case EnvironmentEnum.TESTING:
46-
break;
47-
case EnvironmentEnum.DEVELOPMENT:
48-
app.use(morgan("dev"));
49-
break;
50-
case EnvironmentEnum.PRODUCTION:
51-
app.use(
52-
morgan(
53-
':remote-addr - :remote-user ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'
54-
)
55-
);
56-
break;
46+
if (Config.ENV != EnvironmentEnum.TESTING) {
47+
morgan.token("userid", (req, _res) => {
48+
const jwt = req.headers.authorization;
49+
if (!jwt) {
50+
return "unauthorized";
51+
}
52+
53+
try {
54+
const payloadData = jsonwebtoken.verify(
55+
jwt,
56+
Config.JWT_SIGNING_SECRET
57+
);
58+
const payload = JwtPayloadValidator.parse(payloadData);
59+
return payload.userId;
60+
} catch (error) {
61+
if (error instanceof TokenExpiredError) {
62+
return "expired-token";
63+
}
64+
65+
return "invalid-token";
66+
}
67+
});
68+
69+
app.use(
70+
morgan(
71+
':remote-addr - :remote-user :userid ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'
72+
)
73+
);
5774
}
5875

5976
// Parsing

0 commit comments

Comments
 (0)