Browse Source

feat(api): auth and profile endpoints, remove public hello

Made-with: Cursor
feat/auth-user
npmrun 6 days ago
parent
commit
36e1579867
  1. 7
      server/api/auth/forgot-password.post.ts
  2. 10
      server/api/auth/login.post.ts
  3. 3
      server/api/auth/logout.post.ts
  4. 3
      server/api/auth/register.post.ts
  5. 13
      server/api/auth/reset-password.post.ts
  6. 7
      server/api/auth/verify-email.post.ts
  7. 15
      server/api/hello.ts
  8. 3
      server/api/me.get.ts
  9. 7
      server/api/me.patch.ts
  10. 17
      server/plugins/05.api-error-json.ts

7
server/api/auth/forgot-password.post.ts

@ -0,0 +1,7 @@
import { readBody } from "h3";
import { forgotPassword } from "../../services/auth";
export default defineEventHandler(async (event) => {
const body = await readBody<{ email?: string }>(event);
return forgotPassword(event, body.email ?? "");
});

10
server/api/auth/login.post.ts

@ -0,0 +1,10 @@
import { readBody } from "h3";
import { loginWithSession } from "../../services/auth";
export default defineEventHandler(async (event) => {
const body = await readBody<{ email?: string; password?: string }>(event);
return loginWithSession(event, {
email: body.email ?? "",
password: body.password ?? "",
});
});

3
server/api/auth/logout.post.ts

@ -0,0 +1,3 @@
import { logoutSession } from "../../services/auth";
export default defineEventHandler((event) => logoutSession(event));

3
server/api/auth/register.post.ts

@ -0,0 +1,3 @@
import { registerWithSession } from "../../services/auth";
export default defineEventHandler((event) => registerWithSession(event));

13
server/api/auth/reset-password.post.ts

@ -0,0 +1,13 @@
import { readBody } from "h3";
import { resetPassword } from "../../services/auth";
export default defineEventHandler(async (event) => {
const body = await readBody<{
token?: string;
new_password?: string;
}>(event);
return resetPassword(event, {
token: body.token ?? "",
new_password: body.new_password ?? "",
});
});

7
server/api/auth/verify-email.post.ts

@ -0,0 +1,7 @@
import { readBody } from "h3";
import { verifyEmail } from "../../services/auth";
export default defineEventHandler(async (event) => {
const body = await readBody<{ token?: string }>(event);
return verifyEmail(event, body.token ?? "");
});

15
server/api/hello.ts

@ -1,15 +0,0 @@
import { usersTable } from "drizzle-pkg/lib/schema/schema";
import { dbGlobal } from "drizzle-pkg/lib/db";
import log4js from "logger";
const logger = log4js.getLogger("APP")
export default defineEventHandler(async (event) => {
logger.info("hello: world");
const users = await dbGlobal.select().from(usersTable)
logger.info("users (formatted): %s \n", JSON.stringify(users, null, 2));
return {
hello: 'world',
users: users,
}
})

3
server/api/me.get.ts

@ -0,0 +1,3 @@
import { getCurrentUser } from "../services/auth";
export default defineEventHandler((event) => getCurrentUser(event));

7
server/api/me.patch.ts

@ -0,0 +1,7 @@
import { readBody } from "h3";
import { patchMe } from "../services/auth";
export default defineEventHandler(async (event) => {
const body = await readBody<{ name?: string; age?: number }>(event);
return patchMe(event, body ?? {});
});

17
server/plugins/05.api-error-json.ts

@ -0,0 +1,17 @@
import { send, setResponseStatus } from "h3";
/**
* API `createError({ data: { error } })` body JSON
*/
export default defineNitroPlugin((nitroApp) => {
nitroApp.hooks.hook("error", async (error, ctx) => {
const event = ctx.event;
if (!event?.path?.startsWith("/api/")) return;
const err = error as { statusCode?: number; data?: unknown };
const data = err.data as { error?: { code: string; message: string } } | undefined;
if (!data?.error) return;
if (event.node.res.headersSent) return;
setResponseStatus(event, err.statusCode ?? 500);
await send(event, JSON.stringify(data), "application/json");
});
});
Loading…
Cancel
Save