Compare commits
2 commits
82928ea6df
...
d402c7f2d6
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d402c7f2d6 | ||
![]() |
78cd7df1c1 |
2 changed files with 96 additions and 0 deletions
41
app/app/api/stats/route.ts
Normal file
41
app/app/api/stats/route.ts
Normal 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
55
docs/api.md
Normal 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>},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
Loading…
Reference in a new issue