diff --git a/app/Http/Controllers/Admin/PaymentController.php b/app/Http/Controllers/Admin/PaymentController.php index 295be06b..3b2a8ad9 100644 --- a/app/Http/Controllers/Admin/PaymentController.php +++ b/app/Http/Controllers/Admin/PaymentController.php @@ -270,7 +270,7 @@ class PaymentController extends Controller ], 'mode' => 'payment', - "payment_method_types" => str_getcsv(Settings::getValueByKey("SETTINGS::PAYMENTS:STRIPE:METHODS")), + "payment_method_types" => str_getcsv(config("SETTINGS::PAYMENTS:STRIPE:METHODS")), 'success_url' => route('payment.StripeSuccess', ['product' => $creditProduct->id]) . '&session_id={CHECKOUT_SESSION_ID}', 'cancel_url' => route('payment.Cancel'), ]); diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 68757c00..b2b6c921 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -88,10 +88,25 @@ class UserController extends Controller "role" => ['sometimes', Rule::in(['admin', 'mod', 'client', 'member'])], ]); - $user->update($request->all()); - event(new UserUpdateCreditsEvent($user)); + //Update Users Password on Pterodactyl + //Username,Mail,First and Lastname are required aswell + $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [ + "username" => $request->name, + "first_name" => $request->name, + "last_name" => $request->name, + "email" => $request->email, + + ]); + if ($response->failed()) { + throw ValidationException::withMessages([ + 'pterodactyl_error_message' => $response->toException()->getMessage(), + 'pterodactyl_error_status' => $response->toException()->getCode() + ]); + } + $user->update($request->all()); + return $user; } @@ -166,6 +181,53 @@ class UserController extends Controller return $user; } + /** + * Suspends the user + * + * @param Request $request + * @param int $id + * @return bool + * @throws ValidationException + */ + public function suspend(Request $request, int $id) + { + $discordUser = DiscordUser::find($id); + $user = $discordUser ? $discordUser->user : User::findOrFail($id); + + if ($user->isSuspended()) { + throw ValidationException::withMessages([ + 'error' => 'The user is already suspended', + ]); + } + $user->suspend(); + + return $user; + } + + /** + * Unsuspend the user + * + * @param Request $request + * @param int $id + * @return bool + * @throws ValidationException + */ + public function unsuspend(Request $request, int $id) + { + $discordUser = DiscordUser::find($id); + $user = $discordUser ? $discordUser->user : User::findOrFail($id); + + if (!$user->isSuspended()) { + throw ValidationException::withMessages([ + 'error' => "You cannot unsuspend an User who is not suspended." + ]); + } + + $user->unSuspend(); + + return $user; + } + /** * @throws ValidationException */ diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index f457cc80..c4c3ba2a 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -12,6 +12,7 @@ use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; +use Illuminate\Validation\ValidationException; class RegisterController extends Controller { @@ -68,9 +69,9 @@ class RegisterController extends Controller $data['ip'] = session()->get('ip') ?? request()->ip(); if (User::where('ip', '=', request()->ip())->exists()) session()->put('ip', request()->ip()); $validationRules['ip'] = ['unique:users']; - return Validator::make($data, $validationRules, [ 'ip.unique' => "You have already made an account! Please contact support if you think this is incorrect." + ]); } @@ -106,13 +107,17 @@ class RegisterController extends Controller if ($response->failed()) { $user->delete(); - return $user; + throw ValidationException::withMessages([ + 'ptero_registration_error' => [__('Account already exists on Pterodactyl. Please contact the Support!')], + ]); } $user->update([ 'pterodactyl_id' => $response->json()['attributes']['id'] ]); + + return $user; } } diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index c03ebd7d..57709b62 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -2,12 +2,14 @@ namespace App\Http\Controllers; -use App\Models\Settings; + +use App\Classes\Pterodactyl; use App\Models\User; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; +use Illuminate\Validation\ValidationException; class ProfileController extends Controller { @@ -50,10 +52,27 @@ class ProfileController extends Controller 'new_password_confirmation' => 'required|same:new_password' ]); + //Update Users Password on Pterodactyl + //Username,Mail,First and Lastname are required aswell + $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [ + "password" => $request->input('new_password'), + "username" => $request->input('name'), + "first_name" => $request->input('name'), + "last_name" => $request->input('name'), + "email" => $request->input('email'), + + ]); + if ($response->failed()) { + throw ValidationException::withMessages([ + 'pterodactyl_error_message' => $response->toException()->getMessage(), + 'pterodactyl_error_status' => $response->toException()->getCode() + ]); + } //update password $user->update([ 'password' => Hash::make($request->input('new_password')), ]); + } //validate request @@ -77,11 +96,27 @@ class ProfileController extends Controller ]); } + //update name and email on Pterodactyl + $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [ + "username" => $request->input('name'), + "first_name" => $request->input('name'), + "last_name" => $request->input('name'), + "email" => $request->input('email'), + ]); + + if ($response->failed()) { + throw ValidationException::withMessages([ + 'pterodactyl_error_message' => $response->toException()->getMessage(), + 'pterodactyl_error_status' => $response->toException()->getCode() + ]); + } + //update name and email $user->update([ 'name' => $request->input('name'), 'email' => $request->input('email'), ]); + $user->sendEmailVerificationNotification(); return redirect()->route('profile.index')->with('success', __('Profile updated')); } diff --git a/database/migrations/2021_05_08_081218_create_credit_products_table.php b/database/migrations/2021_05_08_081218_create_paypal_products_table.php similarity index 76% rename from database/migrations/2021_05_08_081218_create_credit_products_table.php rename to database/migrations/2021_05_08_081218_create_paypal_products_table.php index 2c4d1394..207e4313 100644 --- a/database/migrations/2021_05_08_081218_create_credit_products_table.php +++ b/database/migrations/2021_05_08_081218_create_paypal_products_table.php @@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -class CreateCreditProductsTable extends Migration +class CreatePaypalProductsTable extends Migration { /** * Run the migrations. @@ -13,13 +13,13 @@ class CreateCreditProductsTable extends Migration */ public function up() { - Schema::create('credit_products', function (Blueprint $table) { + Schema::create('paypal_products', function (Blueprint $table) { $table->uuid('id')->primary(); $table->string('type'); $table->decimal('price')->default(0); $table->unsignedInteger('quantity'); $table->string('description'); - $table->string('currency_code' , 3); + $table->string('currency_code', 3); $table->boolean('disabled')->default(true); $table->timestamps(); }); @@ -32,6 +32,6 @@ class CreateCreditProductsTable extends Migration */ public function down() { - Schema::dropIfExists('credit_products'); + Schema::dropIfExists('paypal_products'); } } diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index ad4e4d70..30396d5e 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -23,6 +23,13 @@ {{ $message }} @enderror + @if( $errors->has('ptero_registration_error') ) + @foreach( $errors->get('ptero_registration_error') as $err ) + + {{ $err }} + + @endforeach + @endif @csrf
diff --git a/resources/views/layouts/main.blade.php b/resources/views/layouts/main.blade.php index 1cd31070..dd117f0d 100644 --- a/resources/views/layouts/main.blade.php +++ b/resources/views/layouts/main.blade.php @@ -36,6 +36,24 @@ + + + + + + + + + + + + + + + + + +
@endif @if (is_null(Auth::user()->discordUser) && strtolower($force_discord_verification) == 'true') @if (!empty(config('SETTINGS::DISCORD:CLIENT_ID')) && !empty(config('SETTINGS::DISCORD:CLIENT_SECRET')))
-
{{ __('Required Discord verification!') }} +
{{ __('Required Discord verification!') }}
{{ __('You have not yet verified your discord account') }} @else
-
{{ __('Required Discord verification!') }} +
{{ __('Required Discord verification!') }}
{{ __('Due to system settings you are required to verify your discord account!') }}
{{ __('It looks like this hasnt been set-up correctly! Please contact support.') }}' @@ -117,7 +116,21 @@
-
has('pterodactyl_error_message') ) + @foreach( $errors->get('pterodactyl_error_message') as $err ) + + {{ $err }} + + @endforeach + @endif + @if( $errors->has('pterodactyl_error_status') ) + @foreach( $errors->get('pterodactyl_error_status') as $err ) + + {{ $err }} + + @endforeach + @endif +
diff --git a/resources/views/store/index.blade.php b/resources/views/store/index.blade.php index f7399165..0b6220b2 100644 --- a/resources/views/store/index.blade.php +++ b/resources/views/store/index.blade.php @@ -81,4 +81,23 @@ + + + @endsection diff --git a/routes/api.php b/routes/api.php index bf9bc7d0..0de04de6 100644 --- a/routes/api.php +++ b/routes/api.php @@ -20,6 +20,8 @@ use Illuminate\Support\Facades\Route; Route::middleware('api.token')->group(function () { Route::patch('/users/{user}/increment', [UserController::class, 'increment']); Route::patch('/users/{user}/decrement', [UserController::class, 'decrement']); + Route::patch('/users/{user}/suspend', [UserController::class, 'suspend']); + Route::patch('/users/{user}/unsuspend', [UserController::class, 'unsuspend']); Route::resource('users', UserController::class)->except(['create']); Route::patch('/servers/{server}/suspend', [ServerController::class, 'suspend']);