diff --git a/app/app/api/stats/route.ts b/app/app/api/stats/route.ts new file mode 100644 index 0000000..4076754 --- /dev/null +++ b/app/app/api/stats/route.ts @@ -0,0 +1,41 @@ +import { NextResponse, NextRequest } from 'next/server' +import { validateToken, decryptToken } from '@/lib/jwt' +import { db } from "@/lib/db" + +export async function GET(req: NextRequest) { + try { + const token = req?.headers.get("authorization")?.split(" ")[1] + + if (token == undefined || !validateToken(token)) { + return NextResponse.json({"message": "You did not provide token or it is in the wrong format"},{ + status: 401, + }); + } + + const tokenData = decryptToken(token) + + if (!tokenData.admin) { + return NextResponse.json({"message": "You need to be an admin to use this endpoint."},{ + status: 401, + }); + } + + const decks = await db.deck.findMany() + const bsets = await db.bset.findMany() + const users = await db.utilisateurice.findMany() + + + return NextResponse.json({"data": { "decks": decks.length, "bsets": bsets.length, "users": users.length },"message": "Here are the stats"},{ + status: 200, + }); + + } catch (error) { + console.log(error) + return NextResponse.json( + { error: "Failed, check console" }, + { + status: 500, + } + ); + } +} diff --git a/docs/api.md b/docs/api.md new file mode 100644 index 0000000..05b3cff --- /dev/null +++ b/docs/api.md @@ -0,0 +1,55 @@ +# Documentation de l'API Brawlset + +Cette page de documentation est potentiellement pas à jour. Vérifiez la date de dernière édition si quelque chose ne fonctionne pas comme indiqué ici, et le cas échéant contactez l'administrateur de ce dépot. + + + +## POST: /api/auth/signin + +Ce chemin permet de récupérer le token [JWT](https://jwt.io/) permettant de vous authentifier pour les requêtes API nécessitant authentification. + +Données à envoyer : +``` +{ + email: , + password: +} +``` + +Réponse : +``` +{ + JWT: // Données encodées dans le token : username (string), admin (boolean), id (uuid) +} +``` + +## GET: /api/account/decks + +Ce chemin permet de recupérer les decks appartenant à l'utilisateur-rice reconnue grace au Token d'authentification. +Aucune données ne sont à envoyer par contre il faut spécifier l'entête `Authorization: Bearer ` voir doc [JWT](https://jwt.io/introduction). + +Réponse : +``` +{ + data: [ + { + id: "e1cf4964-e187-407c-acc8-cc47199b208d", + url: "", + name: "Kellan, the kid", + utilisateurice_id: "2670aac4-f8e9-4952-9ec5-4c246abe2401", + bset_id: "b694338e-8514-47ea-8e86-27e73d463e56", + color_identity: ["G","U","W"], + commander: , + cartes: [ + { amount: 1, carte: }, + { amount: 1, carte: }, + { amount: 1, carte: }, + { amount: 1, carte: }, + ... + { amount: 1, carte: }, + ] + }, + ... + ] +} +```