Fix getBotsData + Routes dans les controllers
This commit is contained in:
@@ -4,24 +4,6 @@ controllers:
|
||||
namespace: App\Controller
|
||||
type: attribute
|
||||
|
||||
slash:
|
||||
path: /
|
||||
controller: App\Controller\RootController::redirectToFrontend
|
||||
|
||||
discord_auth_redirect:
|
||||
path: /discord/auth/redirect
|
||||
controller: App\Controller\AuthController::redirectToDiscord
|
||||
discord_auth_callback:
|
||||
path: /discord/auth/callback
|
||||
controller: App\Controller\AuthController::handleDiscordCallback
|
||||
|
||||
discord_user:
|
||||
path: /discord/user
|
||||
controller: App\Controller\UserController::getUserDetails
|
||||
discord_user_guilds:
|
||||
path: /discord/user/guilds
|
||||
controller: App\Controller\UserController::getUserGuilds
|
||||
|
||||
discord_bots:
|
||||
path: /discord/bots
|
||||
controller: App\Controller\BotController::getBotsDetails
|
||||
kernel:
|
||||
resource: App\Kernel
|
||||
type: attribute
|
||||
@@ -12,6 +12,8 @@ use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class AuthController extends AbstractController
|
||||
{
|
||||
@@ -22,9 +24,7 @@ class AuthController extends AbstractController
|
||||
$this->discordApiService = $discordApiService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/discord/auth/redirect", name="discord_auth_redirect")
|
||||
*/
|
||||
#[Route('/discord/auth/redirect', name: 'discord_auth_redirect')]
|
||||
public function redirectToDiscord(): RedirectResponse
|
||||
{
|
||||
$clientId = $_ENV['DISCORD_CLIENT_ID'];
|
||||
@@ -36,9 +36,7 @@ class AuthController extends AbstractController
|
||||
return $this->redirect($discordAuthUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/discord/auth/callback", name="discord_auth_callback")
|
||||
*/
|
||||
#[Route('/discord/auth/callback', name: 'discord_auth_callback')]
|
||||
public function handleDiscordCallback(Request $request, EntityManagerInterface $entityManager, SessionInterface $session): Response
|
||||
{
|
||||
$code = $request->query->get('code');
|
||||
@@ -83,4 +81,28 @@ class AuthController extends AbstractController
|
||||
// Redirection vers le frontend
|
||||
return $this->redirect($_ENV['DISCORD_FRONTEND_REDIRECT_URI']);
|
||||
}
|
||||
|
||||
#[Route('/discord/auth/logout', name: 'discord_auth_logout')]
|
||||
public function userLogout(EntityManagerInterface $entityManager, SessionInterface $session): Response
|
||||
{
|
||||
// Vérifier si une session est en cours
|
||||
if (!$session->has('user_id')) throw $this->createNotFoundException('Non authentifié');
|
||||
|
||||
$user = $entityManager->getRepository(User::class)->find($session->get('user_id'));
|
||||
if (!$user) throw $this->createNotFoundException('Utilisateur non trouvé');
|
||||
|
||||
// Supprimer le token d'accès et de refresh de l'utilisateur
|
||||
$user->setAccessToken('');
|
||||
$user->setRefreshToken('');
|
||||
$user->setTokenExpiresAt(new DateTime());
|
||||
|
||||
$entityManager->persist($user);
|
||||
$entityManager->flush();
|
||||
|
||||
// Supprimer la session de l'utilisateur
|
||||
$session->remove('user_id');
|
||||
|
||||
// Réponse HTTP 204 No Content
|
||||
return new Response('User disconnected.', Response::HTTP_NO_CONTENT);
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class BotController extends AbstractController
|
||||
{
|
||||
@@ -45,19 +46,17 @@ class BotController extends AbstractController
|
||||
return $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/discord/bots", name="discord_bots")
|
||||
*/
|
||||
#[Route('/discord/bots', name: 'discord_bots')]
|
||||
public function getBotsDetails(SessionInterface $session, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
try { $user = $this->getUserToken($session, $entityManager); }
|
||||
catch (DiscordApiException $e) { return new JsonResponse(['error' => $e->getMessage()], $e->getStatusCode());}
|
||||
|
||||
// Obtenir les informations utilisateur supplémentaires depuis Discord
|
||||
try { $discordBots = $this->discordApiService->getBotsData($user->getAccessToken()); }
|
||||
// Obtenir les informations des bots depuis Discord
|
||||
try { $discordBots = $this->discordApiService->getBotsData(); }
|
||||
catch (DiscordApiException $e) { return new JsonResponse(['error' => $e->getMessage()], $e->getStatusCode());}
|
||||
|
||||
// Renvoyer les détails de l'utilisateur en JSON
|
||||
return new JsonResponse($discordUser);
|
||||
return new JsonResponse($discordBots);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,11 @@ namespace App\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class RootController extends AbstractController
|
||||
{
|
||||
/**
|
||||
* @Route("/", name="slash")
|
||||
*/
|
||||
#[Route('/', name: 'slash')]
|
||||
public function redirectToFrontend(): RedirectResponse
|
||||
{
|
||||
return $this->redirect($_ENV['FRONTEND_REDIRECT_URI']);
|
||||
|
||||
@@ -13,6 +13,7 @@ use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class UserController extends AbstractController
|
||||
{
|
||||
@@ -45,9 +46,7 @@ class UserController extends AbstractController
|
||||
return $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/discord/user", name="discord_user")
|
||||
*/
|
||||
#[Route('/discord/user', name: 'discord_user')]
|
||||
public function getUserDetails(SessionInterface $session, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
try { $user = $this->getUserToken($session, $entityManager); }
|
||||
@@ -68,9 +67,7 @@ class UserController extends AbstractController
|
||||
return new JsonResponse($discordUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/discord/user/guilds", name="discord_user_guilds")
|
||||
*/
|
||||
#[Route('/discord/user/guilds', name: 'discord_user_guilds')]
|
||||
public function getUserGuilds(SessionInterface $session, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
try { $user = $this->getUserToken($session, $entityManager); }
|
||||
|
||||
@@ -14,6 +14,7 @@ class DiscordApiService
|
||||
private $client;
|
||||
private $clientId;
|
||||
private $clientSecret;
|
||||
private $clientToken;
|
||||
private $redirectUri;
|
||||
private $baseUrl;
|
||||
|
||||
@@ -22,6 +23,7 @@ class DiscordApiService
|
||||
$this->client = $client;
|
||||
$this->clientId = $_ENV['DISCORD_CLIENT_ID'];
|
||||
$this->clientSecret = $_ENV['DISCORD_CLIENT_SECRET'];
|
||||
$this->clientToken = $_ENV['DISCORD_CLIENT_TOKEN'];
|
||||
$this->redirectUri = $_ENV['DISCORD_BACKEND_REDIRECT_URI'];
|
||||
$this->baseUrl = $_ENV['DISCORD_API_BASE_URL'];
|
||||
}
|
||||
@@ -62,9 +64,8 @@ class DiscordApiService
|
||||
}
|
||||
}
|
||||
|
||||
public function getBotsData(string $accessToken): array
|
||||
public function getBotsData(): array
|
||||
{
|
||||
/**
|
||||
$output = array();
|
||||
$botsId = [$_ENV['DISCORD_BOT_TAMISEUR_ID'], $_ENV['DISCORD_BOT_GROOVE_ID'], $_ENV['DISCORD_BOT_FUNKY_ID'], $_ENV['DISCORD_BOT_JUJUL_ID'], $_ENV['DISCORD_BOT_CHANTIER_ID']];
|
||||
|
||||
@@ -73,7 +74,7 @@ class DiscordApiService
|
||||
try {
|
||||
$response = $this->client->request('GET', $this->baseUrl . '/users/' . $botId, [
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer ' . $accessToken,
|
||||
'Authorization' => 'Bot ' . $this->clientToken,
|
||||
],
|
||||
]);
|
||||
array_push($output, $response->toArray());
|
||||
@@ -81,18 +82,20 @@ class DiscordApiService
|
||||
throw new DiscordApiException($e->getCode(), 'Erreur lors de la requête à l\'API Discord: ' . $e->getMessage(), $e);
|
||||
}
|
||||
}
|
||||
return new JsonResponse($output);
|
||||
*/
|
||||
return $output;
|
||||
/*
|
||||
try {
|
||||
$response = $this->client->request('GET', $this->baseUrl . '/users/' . '262299921082875904', [
|
||||
$response = $this->client->request('GET', $this->baseUrl . '/users/' . '223831938346123275', [
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer ' . $accessToken,
|
||||
//'Authorization' => 'Bearer ' . $accessToken,
|
||||
'Authorization' => 'Bot ' . $this->clientToken,
|
||||
],
|
||||
]);
|
||||
return $response->toArray();
|
||||
} catch (ClientExceptionInterface | ServerExceptionInterface | RedirectionExceptionInterface | TransportExceptionInterface $e) {
|
||||
throw new DiscordApiException($e->getCode(), 'Erreur lors de la requête à l\'API Discord: ' . $e->getMessage(), $e);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
public function getUserData(string $accessToken): array
|
||||
|
||||
Reference in New Issue
Block a user