Fix: Force Verification

This commit is contained in:
Johannes 2021-06-26 22:04:23 +02:00
parent e65e3234de
commit bfa7a84e0b
3 changed files with 54 additions and 24 deletions

View file

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

View file

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

View file

@ -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.'
]);
}
}