Compare commits

...

2 commits

2 changed files with 96 additions and 0 deletions

View file

@ -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,
}
);
}
}

55
docs/api.md Normal file
View file

@ -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: <zuma@example.com>,
password: <gogaellego>
}
```
Réponse :
```
{
JWT: <token> // 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 <token>` 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: <card_object>,
cartes: [
{ amount: 1, carte: <card_object>},
{ amount: 1, carte: <card_object>},
{ amount: 1, carte: <card_object>},
{ amount: 1, carte: <card_object>},
...
{ amount: 1, carte: <card_object>},
]
},
...
]
}
```