From bfa7a84e0bf458c8b96de856e27be31885a9c5dd Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 26 Jun 2021 22:04:23 +0200 Subject: [PATCH 1/2] Fix: Force Verification --- app/Http/Controllers/ServerController.php | 40 +++++++++++-------- app/Http/Controllers/StoreController.php | 22 ++++++---- .../seeders/Seeds/ConfigurationSeeder.php | 16 ++++++++ 3 files changed, 54 insertions(+), 24 deletions(-) diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 7151c41a..8a201f3d 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -12,11 +12,7 @@ use App\Models\Product; use App\Models\Server; use App\Notifications\ServerCreationError; use Exception; -use Illuminate\Contracts\View\Factory; -use Illuminate\Contracts\View\View; -use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Illuminate\Http\Response; use Illuminate\Support\Facades\Auth; @@ -38,18 +34,28 @@ class ServerController extends Controller return redirect()->route('servers.index')->with('error', "You've already reached your server limit!"); } + //Required Verification for creating an server + if (Configuration::getValueByKey('FORCE_EMAIL_VERIFICATION', false) === 'true' && !Auth::user()->hasVerifiedEmail()) { + return redirect()->route('profile.index')->with('error', "You havent verified your email! Thats required to create an server."); + } + + //Required Verification for creating an server + if (Configuration::getValueByKey('FORCE_DISCORD_VERIFICATION', false) === 'true' && !Auth::user()->discordUser) { + return redirect()->route('profile.index')->with('error', "You havent linked an Discord Account to your profile! Thats required to create an server"); + } + //minimum credits - if (Auth::user()->credits <= Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER' , 50)) { + if (Auth::user()->credits <= Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50)) { return redirect()->route('servers.index')->with('error', "You do not have the required amount of credits to create a new server!"); } return view('servers.create')->with([ - 'products' => Product::where('disabled' , '=' , false)->orderBy('price', 'asc')->get(), - 'locations' => Location::whereHas('nodes' , function ($query) { - $query->where('disabled' , '=' , false); + 'products' => Product::where('disabled', '=', false)->orderBy('price', 'asc')->get(), + 'locations' => Location::whereHas('nodes', function ($query) { + $query->where('disabled', '=', false); })->get(), - 'nests' => Nest::where('disabled' , '=' , false)->get(), + 'nests' => Nest::where('disabled', '=', false)->get(), ]); } @@ -57,11 +63,11 @@ class ServerController extends Controller public function store(Request $request) { $request->validate([ - "name" => "required|max:191", + "name" => "required|max:191", "description" => "nullable|max:191", - "node_id" => "required|exists:nodes,id", - "egg_id" => "required|exists:eggs,id", - "product_id" => "required|exists:products,id", + "node_id" => "required|exists:nodes,id", + "egg_id" => "required|exists:eggs,id", + "product_id" => "required|exists:products,id", ]); //limit validation @@ -70,7 +76,7 @@ class ServerController extends Controller } //minimum credits - if (Auth::user()->credits <= Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER' , 50)) { + if (Auth::user()->credits <= Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50)) { return redirect()->route('servers.index')->with('error', "You do not have the required amount of credits to create a new server!"); } @@ -80,7 +86,7 @@ class ServerController extends Controller $node = Node::findOrFail($request->input('node_id')); //create server on pterodactyl - $response = Pterodactyl::createServer($server , $egg , $node); + $response = Pterodactyl::createServer($server, $egg, $node); if (is_null($response)) return $this->serverCreationFailed($server); if ($response->failed()) return $this->serverCreationFailed($server); @@ -88,7 +94,7 @@ class ServerController extends Controller //update server with pterodactyl_id $server->update([ 'pterodactyl_id' => $response->json()['attributes']['id'], - 'identifier' => $response->json()['attributes']['identifier'] + 'identifier' => $response->json()['attributes']['identifier'] ]); return redirect()->route('servers.index')->with('success', 'server created'); @@ -109,7 +115,7 @@ class ServerController extends Controller try { $server->delete(); return redirect()->route('servers.index')->with('success', 'server removed'); - } catch (\Exception $e) { + } catch (Exception $e) { return redirect()->route('servers.index')->with('error', 'An exception has occurred while trying to remove a resource'); } } diff --git a/app/Http/Controllers/StoreController.php b/app/Http/Controllers/StoreController.php index 03d2668e..b6e9bb5c 100644 --- a/app/Http/Controllers/StoreController.php +++ b/app/Http/Controllers/StoreController.php @@ -2,12 +2,9 @@ namespace App\Http\Controllers; +use App\Models\Configuration; use App\Models\PaypalProduct; -use Illuminate\Contracts\Foundation\Application; -use Illuminate\Contracts\View\Factory; -use Illuminate\Contracts\View\View; -use Illuminate\Http\Request; -use Illuminate\Http\Response; +use Illuminate\Support\Facades\Auth; class StoreController extends Controller { @@ -16,10 +13,21 @@ class StoreController extends Controller { $isPaypalSetup = false; if (env('PAYPAL_SECRET') && env('PAYPAL_CLIENT_ID')) $isPaypalSetup = true; - if (env('APP_ENV' , 'local') == 'local') $isPaypalSetup = true; + if (env('APP_ENV', 'local') == 'local') $isPaypalSetup = true; + + + //Required Verification for creating an server + if (Configuration::getValueByKey('FORCE_EMAIL_VERIFICATION', false) === 'true' && !Auth::user()->hasVerifiedEmail()) { + return redirect()->route('profile.index')->with('error', "You havent verified your email! Thats required to buy credits."); + } + + //Required Verification for creating an server + if (Configuration::getValueByKey('FORCE_DISCORD_VERIFICATION', false) === 'true' && !Auth::user()->discordUser) { + return redirect()->route('profile.index')->with('error', "You havent linked an Discord Account to your profile! Thats required to buy credits"); + } return view('store.index')->with([ - 'products' => PaypalProduct::where('disabled' , '=' , false)->orderBy('price' , 'asc')->get(), + 'products' => PaypalProduct::where('disabled', '=', false)->orderBy('price', 'asc')->get(), 'isPaypalSetup' => $isPaypalSetup ]); } diff --git a/database/seeders/Seeds/ConfigurationSeeder.php b/database/seeders/Seeds/ConfigurationSeeder.php index 7f42f334..4d868deb 100644 --- a/database/seeders/Seeds/ConfigurationSeeder.php +++ b/database/seeders/Seeds/ConfigurationSeeder.php @@ -82,5 +82,21 @@ class ConfigurationSeeder extends Seeder 'type' => 'integer', 'description' => 'updates the users server limit to this amount (unless the user already has a higher server limit) after making a purchase with real money, set to 0 to ignore this.', ]); + + Configuration::firstOrCreate([ + 'key' => 'FORCE_EMAIL_VERIFICATION', + ] , [ + 'value' => 'false', + 'type' => 'boolean', + 'description' => 'Force an user to verify the email adress before creating a server / buying credits.' + ]); + + Configuration::firstOrCreate([ + 'key' => 'FORCE_DISCORD_VERIFICATION', + ] , [ + 'value' => 'false', + 'type' => 'boolean', + 'description' => 'Force an user to link an Discord Account before creating a server / buying credits.' + ]); } } From 19e34dee81b0d4333732772d88701b1c57ec3212 Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 26 Jun 2021 23:11:15 +0200 Subject: [PATCH 2/2] Small addition --- app/Http/Controllers/ServerController.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 8a201f3d..9cf3467e 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -80,6 +80,16 @@ class ServerController extends Controller return redirect()->route('servers.index')->with('error', "You do not have the required amount of credits to create a new server!"); } + //Required Verification for creating an server + if (Configuration::getValueByKey('FORCE_EMAIL_VERIFICATION', false) === 'true' && !Auth::user()->hasVerifiedEmail()) { + return redirect()->route('profile.index')->with('error', "You havent verified your email! Thats required to create an server."); + } + + //Required Verification for creating an server + if (Configuration::getValueByKey('FORCE_DISCORD_VERIFICATION', false) === 'true' && !Auth::user()->discordUser) { + return redirect()->route('profile.index')->with('error', "You havent linked an Discord Account to your profile! Thats required to create an server"); + } + //create server $egg = Egg::findOrFail($request->input('egg_id')); $server = Auth::user()->servers()->create($request->all());