api: introduce a GET /me endpoint
Parents:
fd01c042 file(s) changed
- api/src/controllers/users.ts +27 -0
- api/src/routes/users.ts +1 -0
api/src/controllers/users.ts
1 1
import { Request, Response, NextFunction } from 'express';
2 2
import {
3 3
generateToken
4 4
} from '@app/services/auth.service';
5 5
▸ 151 unchanged lines
157 157
} catch (err) {
158 158
next(err);
159 159
}
160 160
},
161 161
162 +
me: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
163 +
try {
164 +
const user = await prisma.user.findUnique({
165 +
where: { id: req.userId! },
166 +
select: {
167 +
id: true,
168 +
email: true,
169 +
firstName: true,
170 +
lastName: true,
171 +
updatedAt: true,
172 +
avatarKey: true,
173 +
avatarURL: true,
174 +
active: true,
175 +
pushToken: true,
176 +
notificationsEnabled: true,
177 +
dailyReminderTime: true,
178 +
},
179 +
});
180 +
181 +
if (!user) return res.status(404).json({ error: "User not found" });
182 +
183 +
return res.json({ user });
184 +
} catch (err) {
185 +
next(err);
186 +
}
187 +
},
188 +
162 189
removeAvatar: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
163 190
const currentUser = await findUserById(Number(req.userId));
164 191
165 192
if (currentUser && currentUser?.avatarKey == null) {
166 193
return res.json({ user: currentUser })
▸ 17 unchanged lines
184 211
return res.json({
185 212
user
186 213
})
187 214
}
188 215
}
api/src/routes/users.ts
1 1
import { Router } from "express";
2 2
import { UsersController } from '@app/controllers/users';
3 3
import multer from '@app/services/avatar';
4 4
import { requireAuth } from '@app/middleware/auth';
5 5
6 6
const router = Router();
7 7
8 8
router.post('/', UsersController.create);
9 +
router.get('/me', requireAuth, UsersController.me);
9 10
router.patch('/me', requireAuth, UsersController.updatePreferences);
10 11
router.put('/:id', UsersController.update);
11 12
router.post('/me/avatar', requireAuth, multer.single('avatar'), UsersController.updateAvatar);
12 13
router.delete('/me/avatar', requireAuth, UsersController.removeAvatar);
13 14
14 15
export default router;