eletrotupi / tcc/ commit / c8a77ef

api: introduce a GET /me endpoint

Pedro Lucas Porcellis porcellis@eletrotupi.com 1 month ago c8a77ef6e63a35c7a7af74242d3adfae09f4a1c7
Parents: fd01c04
2 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;