add GET for users

This commit is contained in:
mrjvs
2023-10-29 17:22:57 +01:00
parent b6b6288a7a
commit dc683a9872
2 changed files with 33 additions and 0 deletions

View File

@@ -5,6 +5,7 @@ import { sessionsRouter } from '@/routes/sessions';
import { userBookmarkRouter } from '@/routes/users/bookmark'; import { userBookmarkRouter } from '@/routes/users/bookmark';
import { userDeleteRouter } from '@/routes/users/delete'; import { userDeleteRouter } from '@/routes/users/delete';
import { userEditRouter } from '@/routes/users/edit'; import { userEditRouter } from '@/routes/users/edit';
import { userGetRouter } from '@/routes/users/get';
import { userProgressRouter } from '@/routes/users/progress'; import { userProgressRouter } from '@/routes/users/progress';
import { userSessionsRouter } from '@/routes/users/sessions'; import { userSessionsRouter } from '@/routes/users/sessions';
import { userSettingsRouter } from '@/routes/users/settings'; import { userSettingsRouter } from '@/routes/users/settings';
@@ -21,4 +22,5 @@ export async function setupRoutes(app: FastifyInstance) {
await app.register(userProgressRouter.register); await app.register(userProgressRouter.register);
await app.register(userBookmarkRouter.register); await app.register(userBookmarkRouter.register);
await app.register(userSettingsRouter.register); await app.register(userSettingsRouter.register);
await app.register(userGetRouter.register);
} }

31
src/routes/users/get.ts Normal file
View File

@@ -0,0 +1,31 @@
import { User, formatUser } from '@/db/models/User';
import { StatusError } from '@/services/error';
import { handle } from '@/services/handler';
import { makeRouter } from '@/services/router';
import { z } from 'zod';
export const userGetRouter = makeRouter((app) => {
app.get(
'/users/:uid',
{
schema: {
params: z.object({
uid: z.string(),
}),
},
},
handle(async ({ auth, params, em }) => {
await auth.assert();
let uid = params.uid;
if (uid === '@me') uid = auth.user.id;
if (auth.user.id !== uid)
throw new StatusError('Cannot access users other than yourself', 403);
const user = await em.findOne(User, { id: uid });
if (!user) throw new StatusError('User does not exist', 404);
return formatUser(user);
}),
);
});