mirror of
https://github.com/movie-web/backend.git
synced 2025-09-13 18:13:26 +00:00
add GET for users
This commit is contained in:
@@ -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
31
src/routes/users/get.ts
Normal 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);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
Reference in New Issue
Block a user