47 lines
1.4 KiB
TypeScript

import { serverSupabaseClient } from "../../utils/useSupabase";
import { getProfile } from "../../db/profile";
export default defineEventHandler(async (event) => {
const { username, password } = await readBody(event);
if (!username || !password) {
throw createError({
statusCode: 400,
message: "username und password erforderlich",
});
}
const email = `${username.toLowerCase()}@rebreak.internal`;
const supabase = serverSupabaseClient(event);
const { data, error } = await supabase.auth.signInWithPassword({
email,
password,
});
if (error) throw createError({ statusCode: 401, message: error.message });
const dbProfile = await getProfile(data.user.id);
return {
session: {
access_token: data.session.access_token,
refresh_token: data.session.refresh_token,
expires_at: data.session.expires_at,
},
profile: {
id: data.user.id,
email: data.user.email ?? "",
username: dbProfile?.username ?? "",
nickname: dbProfile?.nickname ?? null,
avatar: dbProfile?.avatar ?? null,
plan: (dbProfile?.plan === "premium"
? "legend"
: dbProfile?.plan === "standard"
? "pro"
: dbProfile?.plan ?? "free") as "free" | "pro" | "legend",
streak: dbProfile?.streak ?? 0,
created_at: dbProfile?.createdAt?.toISOString() ?? data.user.created_at,
},
};
});