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
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);
|
|
}
|
|
});
|
|
|