Andreas Schaafsma 8c56a9421e changes
2024-05-25 01:17:39 +02:00

85 lines
1.8 KiB
TypeScript

'use server'
import { cookies } from "next/headers";
import { APIError} from "@/util/api/error"
import { UserAuth, parseBasicAuth, getAssociatedUser } from "@/util/api/user"
import { Auth, User } from "@/model/Models";
async function tryAuth(request:Request){
// await User.sync();
await Auth.sync();
const auth:string|null = request.headers.get("authorization");
if(!auth){
return new Response("unauthorized",{status:403});
}
const userAuth = parseBasicAuth(auth);
const user = await getAssociatedUser(userAuth);
if (!user || !user.id)
return new Response("error",{status:500});
const authentication = await Auth.create({
user_id: user.id,
})
console.log('ok');
const foundAuth = await Auth.findOne({
include: {
model: User,
as: 'user'
},
where: {
user_id: user.id
}
})
console.log('ok2');
if(!foundAuth)
return new Response("error",{status:500});
const usr = foundAuth.user;
const authUser = await authentication.getUser();
// @ts-ignore
cookies().set('auth', JSON.stringify(authentication));
return new Response(
JSON.stringify(
{
credentials: userAuth,
auth: authentication,
user: authUser,
foundAuth: foundAuth
}),
{
status: 200,
headers:{
"Content-Type": "text/JSON"
}
}
);
}
export async function POST(request:Request){
try{
return await tryAuth(request);
}
catch(e){
if (e instanceof APIError){
return new Response(e.info.responseText,{status:e.info.status});
}
else{
throw e;
}
}
}