You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

38 lines
1.1 KiB

import { dbGlobal } from "drizzle-pkg/lib/db";
import { users } from "drizzle-pkg/lib/schema/auth";
import { eq } from "drizzle-orm";
import { UNAUTHORIZED_MESSAGE } from "#server/constants/auth";
import { clearSessionCookie } from "#server/service/auth/cookie";
import { toPublicAuthError } from "#server/service/auth/errors";
export default defineWrappedResponseHandler(async (event) => {
try {
const user = await event.context.auth.requireUser();
if (!user) {
clearSessionCookie(event);
throw createError({
statusCode: 401,
statusMessage: UNAUTHORIZED_MESSAGE,
});
}
const [row] = await dbGlobal
.select({
nickname: users.nickname,
avatar: users.avatar,
})
.from(users)
.where(eq(users.id, user.id))
.limit(1);
return R.success({
user: {
...user,
nickname: row?.nickname ?? null,
avatar: row?.avatar ?? null,
},
});
} catch (err) {
throw toPublicAuthError(err);
}
});