api: send some user data alongside the verified token
Pedro Lucas Porcellis porcellis@eletrotupi.com · 5 months ago
862e8d751ca17f54340c4c9596290db7c8da6826 Browse filesParents
2674ddeChanged files
1
Additions
+11
Deletions
-2
api/src/controllers/auth.ts
1 1
import { Request, Response, NextFunction } from 'express';
2 2
import {
3 3
authenticateUser,
4 4
generateToken,
5 5
initiatePasswordReset,
6 -
resetPassword
6 +
resetPassword,
7 +
findUserByEmail
7 8
} from '@app/models/user';
8 9
import {
9 10
validateRequiredFields
10 11
} from '@app/utils/validators';
11 12
import { verifyToken } from '@app/lib/jwt';
106 107
return res.status(401).json({ error: 'No token provided' });
107 108
}
108 109
109 110
const token = authHeader.substring(7);
110 111
const payload = verifyToken(token);
112 +
const user = await findUserByEmail(payload.email);
111 113
112 114
res.json({
113 115
valid: true,
114 116
userId: payload.userId,
115 -
email: payload.email
117 +
email: payload.email,
118 +
user: {
119 +
firstName: user?.firstName,
120 +
email: user?.email,
121 +
lastName: user?.lastName,
122 +
updatedAt: user?.updatedAt
123 +
}
116 124
});
117 125
} catch (err: any) {
118 126
if (err.name === 'JsonWebTokenError' || err.name === 'TokenExpiredError') {
119 127
return res.status(401).json({ error: 'Invalid or expired token' });
120 128
}
121 129
next(err);
122 130
}
123 131
}
124 -
}; 132 +
};