Spaces:
Running
Running
| import { json, type RequestEvent } from '@sveltejs/kit'; | |
| import prisma from '$lib/prisma'; | |
| /** @type {import('./$types').RequestHandler} */ | |
| export async function GET(request : RequestEvent) { | |
| if (!request.cookies.get('hf_access_token')) { | |
| return json({ | |
| error: { | |
| token: "You must be logged" | |
| } | |
| }, { status: 401 }) | |
| } | |
| const response = await fetch("https://huggingface.co/oauth/userinfo", { | |
| method: "GET", | |
| headers: { | |
| Authorization: `Bearer ${request.cookies.get('hf_access_token')}`, | |
| }, | |
| }) | |
| const me = await response.clone().json().catch(() => ({})); | |
| if (!me?.sub) { | |
| return json({ | |
| error: { | |
| token: "Token is invalid" | |
| } | |
| }, { status: 401 }) | |
| } | |
| const userExist = await prisma.user.findFirst({ | |
| where: { | |
| sub: me.sub | |
| } | |
| }) | |
| let user; | |
| if (!userExist) { | |
| user = await prisma.user.create({ | |
| data: { | |
| sub: me.sub, | |
| name: me.name, | |
| preferred_username: me.preferred_username, | |
| picture: me.picture | |
| } | |
| }) | |
| } else { | |
| user = await prisma.user.update({ | |
| where: { | |
| sub: me.sub | |
| }, | |
| data: { | |
| name: me.name, | |
| preferred_username: me.preferred_username, | |
| picture: me.picture | |
| } | |
| }) | |
| } | |
| return json({ | |
| user: { | |
| ...user, | |
| is_admin: process?.env?.SECRET_HF_ADMIN?.includes(user.sub) | |
| } | |
| }) | |
| } | |