Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
19efc18
new landingpage
Unix-User Mar 22, 2025
7dccfba
new vip layout
Unix-User Mar 22, 2025
59ca861
new layout
Unix-User Mar 22, 2025
f55506f
new applayout
Unix-User Mar 23, 2025
006b148
minimal style class fix
Unix-User Mar 23, 2025
ca42352
updates
Unix-User Mar 23, 2025
ff5c73b
secure admin tools
Unix-User Mar 23, 2025
133789e
fixed routes
Unix-User Mar 24, 2025
cbf6a7b
filemanager fixes
Unix-User Mar 24, 2025
d518934
deploy optimizations
Unix-User Mar 24, 2025
070a1f8
google drive update
Unix-User Mar 24, 2025
8216c6f
fixe google drive api connection
Unix-User Mar 24, 2025
718a001
webhook added
Unix-User Mar 24, 2025
4a3e3b1
routes fixes
Unix-User Mar 24, 2025
54dd51c
Merge pull request #25 from Unix-User/payment-gateway-integrations
Unix-User Mar 24, 2025
24fbc35
fixes
Unix-User Mar 24, 2025
1cea9bc
logging
Unix-User Mar 24, 2025
4ff0f18
Merge pull request #26 from Unix-User/main
Unix-User Mar 24, 2025
a37ec2b
Merge pull request #27 from Unix-User/payment-gateway-integrations
Unix-User Mar 24, 2025
a84b386
better logs
Unix-User Mar 24, 2025
06127b2
Merge branch 'payment-gateway-integrations' of https://github.com/Uni…
Unix-User Mar 24, 2025
a9d01a4
Merge pull request #28 from Unix-User/payment-gateway-integrations
Unix-User Mar 24, 2025
4c3b487
webhook fixes
Unix-User Mar 25, 2025
d43dbb9
webhook fixed, database table structure changed
Unix-User Mar 25, 2025
b1619ce
migration fix
Unix-User Mar 25, 2025
56a1465
migration fixes
Unix-User Mar 25, 2025
fa23308
better logging
Unix-User Mar 25, 2025
56dda4a
some fixes
Unix-User Mar 25, 2025
8399a3b
vip system updates
Unix-User Mar 25, 2025
6b128ef
Merge branch 'main' into landingpage-refactor
Unix-User Mar 25, 2025
290f0ce
welcome page refactor
Unix-User Mar 25, 2025
e76e41d
Merge pull request #29 from Unix-User/landingpage-refactor
Unix-User Mar 25, 2025
f295674
Bump vite in the npm_and_yarn group across 1 directory
dependabot[bot] Mar 25, 2025
81a7230
links added
Unix-User Mar 25, 2025
f7e8cef
color fixed
Unix-User Mar 25, 2025
feb391a
fix
Unix-User Mar 25, 2025
c350419
countdown fixes
Unix-User Mar 25, 2025
877cba9
tracking purchase parameter and logic added
Unix-User Mar 25, 2025
0ffdc45
uuid fix
Unix-User Mar 25, 2025
500fde6
fixes
Unix-User Mar 25, 2025
8a5667a
purchases panel for admin
Unix-User Mar 25, 2025
a7dfe5c
fixes
Unix-User Mar 25, 2025
d40e394
vip check schedule
Unix-User Mar 25, 2025
2358918
fix prices
Unix-User Mar 25, 2025
e1738c4
home link fixed
Unix-User Mar 26, 2025
643e544
opengraph tags
Unix-User Mar 26, 2025
4b2e528
Merge pull request #31 from Unix-User/opengraph-meta-tags
Unix-User Mar 26, 2025
7e955d8
Merge pull request #30 from Unix-User/dependabot/npm_and_yarn/npm_and…
Unix-User Mar 26, 2025
19df961
opengraph fixes
Unix-User Mar 26, 2025
8ac843e
Merge pull request #32 from Unix-User/main
Unix-User Mar 26, 2025
984ea10
Merge pull request #33 from Unix-User/opengraph-meta-tags
Unix-User Mar 26, 2025
5019470
opengraph fixes
Unix-User Mar 26, 2025
a4dc2c9
xwitter opengraph fixes
Unix-User Mar 26, 2025
4a76cf8
moderation system prototype
Unix-User Mar 27, 2025
78f23b6
Merge pull request #34 from Unix-User:minecraft-server-chat-moderatio…
Unix-User Mar 27, 2025
f07e727
fixes
Unix-User Mar 27, 2025
7b7a912
Merge pull request #35 from Unix-User/minecraft-server-chat-moderatio…
Unix-User Mar 27, 2025
56625bb
frontend counter and status fixes
Unix-User Mar 27, 2025
7c24557
optimizations
Unix-User Mar 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .scripts/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ fi
echo "Running database migrations..."
php artisan migrate --force

# Run optimizations and clearing
echo "Bringing application out of maintenance mode..."
php artisan optimize:clear

# Exit maintenance mode
echo "Bringing application out of maintenance mode..."
php artisan up
Expand Down
123 changes: 123 additions & 0 deletions app/Console/Commands/CheckMinecraftChat.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
<?php

namespace App\Console\Commands;

use Exception;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use App\Services\{
OllamaService,
MinecraftChatService,
ChatMessageAnalysisService,
WarningMessageService
};

class CheckMinecraftChat extends Command
{
protected $signature = 'minecraft:check-chat {--print}';
protected $description = 'Exibe e verifica as últimas mensagens do chat do Minecraft';

public function handle(
OllamaService $ollamaService,
MinecraftChatService $minecraftChatService,
ChatMessageAnalysisService $chatMessageAnalysisService,
WarningMessageService $warningMessageService
): void {
try {
$this->processChatMessages(
$minecraftChatService,
$chatMessageAnalysisService,
$warningMessageService
);
} catch (Exception $e) {
$this->handleGlobalError($e);
}
}

private function processChatMessages(
MinecraftChatService $minecraftChatService,
ChatMessageAnalysisService $chatMessageAnalysisService,
WarningMessageService $warningMessageService
): void {
$messages = $minecraftChatService->fetchChatMessages();
$this->displayChatMessagesIfRequested($messages);

$chatAnalysisResult = $chatMessageAnalysisService->analyzeMessagesWithRetry($messages);
$this->processAnalysisResults($chatAnalysisResult, $warningMessageService);
}

private function displayChatMessagesIfRequested(array $messages): void
{
if ($this->option('print')) {
$this->displayChatMessages($messages);
}
}

private function displayChatMessages(array $messages): void
{
$this->info("<fg=cyan>Últimas mensagens do chat (últimos 5 minutos):</>");
$this->newLine();

$rows = array_map(fn($message) => [
date('H:i:s', $message['time'] ?? time()),
$message['player'] ?? 'Desconhecido',
$message['message'] ?? 'Mensagem inválida',
], $messages);

$this->table(['Hora', 'Jogador', 'Mensagem'], $rows);
}

private function handleGlobalError(Exception $e): void
{
Log::error('Erro no processo de verificação de chat', [
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);

$this->error("<fg=red>Erro:</> {$e->getMessage()}");
}

private function processAnalysisResults(array $chatAnalysisResult, WarningMessageService $warningMessageService): void
{
empty($chatAnalysisResult['infracoes'])
? $this->handleNoViolationsDetected()
: $this->handleViolations($chatAnalysisResult['infracoes'], $warningMessageService);
}

private function handleNoViolationsDetected(): void
{
if ($this->option('print')) {
$this->info("<fg=green>✅ Checagem concluída. Nenhuma mensagem inadequada detectada.</>");
}
}

private function handleViolations(array $violations, WarningMessageService $warningMessageService): void
{
$this->displayViolationsIfRequested($violations);
$warningMessageService->sendPlayerWarnings($violations);
}

private function displayViolationsIfRequested(array $violations): void
{
if ($this->option('print')) {
$this->displayViolations($violations);
}
}

private function displayViolations(array $violations): void
{
$this->info("<fg=yellow>⚠️ Infrações detectadas:</>");
$this->newLine();

$rows = array_map(fn($violation) => [
date('H:i:s', strtotime($violation['timestamp']) ?: time()),
$violation['jogador'] ?? 'Desconhecido',
$violation['mensagem'] ?? 'Mensagem inválida',
implode(', ', $violation['problemas'] ?? []),
implode(', ', $violation['categorias'] ?? []),
$violation['gravidade'] ?? 'N/A',
], $violations);

$this->table(['Hora', 'Jogador', 'Mensagem', 'Problemas', 'Categorias', 'Gravidade'], $rows);
}
}
81 changes: 81 additions & 0 deletions app/Console/Commands/CheckVipActivation.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Models\Purchase;
use App\Models\User;
use Illuminate\Support\Facades\DB;

class CheckVipActivation extends Command
{
/**
* O nome e assinatura do comando do console.
*
* @var string
*/
protected $signature = 'vip:check-activation';

/**
* A descrição do comando do console.
*
* @var string
*/
protected $description = 'Verifica e ativa o VIP para compras aprovadas';

/**
* Executa o comando do console.
*/
public function handle()
{
$this->line('Iniciando verificação de ativação de VIP...');

// Busca todas as compras aprovadas, independente da data
$approvedPurchases = Purchase::where('status', 'approved')
->orderBy('created_at', 'desc')
->get();

$this->info('Total de compras aprovadas encontradas: '.$approvedPurchases->count());

foreach ($approvedPurchases as $purchase) {
$this->line("Processando compra ID: {$purchase->id}");

// Busca o usuário dono da compra
$user = User::find($purchase->user_id);

if ($user) {
$this->line("Usuário encontrado: ID {$user->id}");

// Busca o nickname do usuário
$nickname = $user->minecraft_id;

if ($nickname) {
$this->line("Nickname do usuário: {$nickname}");

// Monta o comando para adicionar o VIP temporário
$command = "lp user {$nickname} parent addtemp vip 30d";

$this->line("Enviando comando: {$command}");

// Envia o comando usando o SendJsonApiCommand
$this->call('minecraft:send-json-api-command', [
'jsonCommand' => $command
]);

// Atualiza o status da compra para 'closed'
$purchase->status = 'closed';
$purchase->save();

$this->info("VIP ativado com sucesso para o usuário: {$nickname}");
$this->line("Status da compra atualizado para 'closed'");
} else {
$this->error("Nickname não encontrado para o usuário ID: {$user->id}");
}
} else {
$this->error("Usuário não encontrado para a compra ID: {$purchase->id}");
}
}

$this->info('Verificação de ativação de VIP concluída com sucesso.');
}
}
6 changes: 4 additions & 2 deletions app/Console/Kernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,17 @@ class Kernel extends ConsoleKernel
protected function schedule(Schedule $schedule): void
{
$schedule->command('discord:check-messages')->everyMinute();
$schedule->command('vip:check-activation')->everyFiveMinutes();
$schedule->command('minecraft:check-chat')->everyFiveMinutes();
}

/**
* Register the commands for the application.
*/
protected function commands(): void
{
$this->load(__DIR__.'/Commands');
$this->load(__DIR__ . '/Commands');

require base_path('routes/console.php');
}
}
}
2 changes: 1 addition & 1 deletion app/Http/Controllers/Auth/LoginController.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public function handleProviderCallback(Request $request, $provider)
$user = Socialite::driver($provider)->user();
$this->handleUser($user);

return redirect('/dashboard');
return redirect('/home');
}

private function handleUser($user)
Expand Down
Loading