mirror of
https://github.com/p-stream/backend.git
synced 2026-05-16 04:11:45 +00:00
add GET for users
This commit is contained in:
parent
b6b6288a7a
commit
dc683a9872
2 changed files with 33 additions and 0 deletions
|
|
@ -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);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
Loading…
Reference in a new issue