api: handle missing user on verify token
Pedro Lucas Porcellis porcellis@eletrotupi.com · 5 months ago
bbb80036d1fb95c004d43f4a3ce3e71029997027 Browse filesParents
c50ef5dChanged files
1
Additions
+13
Deletions
-4
api/src/controllers/auth.ts
1 1
import { Request, Response, NextFunction } from 'express';
2 2
import {
3 3
login,
4 4
generateToken,
5 5
requestPasswordReset,
93 93
94 94
const token = authHeader.substring(7);
95 95
const payload = verifyToken(token);
96 96
const user = await findUserByEmail(payload.email);
97 97
98 +
if (!user) {
99 +
// XXX: Investigate which actual cases this would happen
100 +
// But the possible reason is that a token is living inside
101 +
// the user's phone, but somehow he was banned/deleted
102 +
return res.status(404).json({
103 +
errors: "User does not exist anymore"
104 +
});
105 +
}
106 +
98 107
res.json({
99 108
valid: true,
100 109
userId: payload.userId,
101 110
email: payload.email,
102 111
user: {
103 -
firstName: user?.firstName,
104 -
email: user?.email,
105 -
lastName: user?.lastName,
106 -
updatedAt: user?.updatedAt
112 +
firstName: user.firstName,
113 +
email: user.email,
114 +
lastName: user.lastName,
115 +
updatedAt: user.updatedAt
107 116
}
108 117
});
109 118
} catch (err: any) {
110 119
if (err.name === 'JsonWebTokenError' || err.name === 'TokenExpiredError') {
111 120
return res.status(401).json({ error: 'Invalid or expired token' });
112 121
}
113 122
next(err);
114 123
}
115 124
}
116 125
};