Merge branch 'main' of https://github.com/ControlPanel-gg/dashboard into billing_system

This commit is contained in:
IceToast 2022-07-20 23:16:41 +02:00
commit 16eb9eeca6
17 changed files with 496 additions and 1088 deletions

View file

@ -33,6 +33,7 @@ class System
"credits-reward-amount-email" => "required|min:0|integer",
"server-limit-discord" => "required|min:0|integer",
"server-limit-email" => "required|min:0|integer",
"server-limit-purchase" => "required|min:0|integer",
"pterodactyl-api-key" => "required|string",
"pterodactyl-url" => "required|string",
@ -59,9 +60,11 @@ class System
"SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_EMAIL" => "credits-reward-amount-email",
"SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD" => "server-limit-discord",
"SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL" => "server-limit-email",
"SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE" => "server-limit-purchase",
"SETTINGS::MISC:PHPMYADMIN:URL" => "phpmyadmin-url",
"SETTINGS::SYSTEM:PTERODACTYL:URL" => "pterodactyl-url",
"SETTINGS::SYSTEM:PTERODACTYL:TOKEN" => "pterodactyl-api-key",
"SETTINGS::SYSTEM:ENABLE_LOGIN_LOGO" => "enable-login-logo",
];
@ -78,13 +81,16 @@ class System
{
$request->validate([
'icon' => 'nullable|max:10000|mimes:jpg,png,jpeg',
'logo' => 'nullable|max:10000|mimes:jpg,png,jpeg',
'favicon' => 'nullable|max:10000|mimes:ico',
]);
if ($request->hasFile('icon')) {
$request->file('icon')->storeAs('public', 'icon.png');
}
if ($request->hasFile('logo')) {
$request->file('logo')->storeAs('public', 'logo.png');
}
if ($request->hasFile('favicon')) {
$request->file('favicon')->storeAs('public', 'favicon.ico');
}

View file

@ -66,9 +66,12 @@ class ServerController extends Controller
* @param Server $server
* @return Response
*/
public function edit(Server $server)
{
//
return view('admin.servers.edit')->with([
'server' => $server
]);
}
/**
@ -80,7 +83,13 @@ class ServerController extends Controller
*/
public function update(Request $request, Server $server)
{
//
$request->validate([
"identifier" => "required|string",
]);
$server->update($request->all());
return redirect()->route('admin.servers.index')->with('success', 'Server updated!');
}
/**
@ -139,6 +148,7 @@ class ServerController extends Controller
$suspendText = $server->isSuspended() ? __("Unsuspend") : __("Suspend");
return '
<a data-content="' . __("Edit") . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.servers.edit', $server->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" method="post" action="' . route('admin.servers.togglesuspend', $server->id) . '">
' . csrf_field() . '
<button data-content="' . $suspendText . '" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm ' . $suspendColor . ' text-white mr-1"><i class="far ' . $suspendIcon . '"></i></button>

View file

@ -123,6 +123,7 @@ class UserController extends Controller
"credits" => "required|numeric|min:0|max:99999999",
"server_limit" => "required|numeric|min:0|max:1000000",
"role" => Rule::in(['admin', 'mod', 'client', 'member']),
"referral_code" => "required|string|min:2|max:32|unique:users,referral_code,{$user->id}",
]);
if (isset($this->pterodactyl->getUser($request->input('pterodactyl_id'))['errors'])) {

1390
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@ use App\Models\Settings;
return [
'version' => '0.7.6',
'version' => '0.7.7',
/*
|--------------------------------------------------------------------------
@ -17,7 +17,7 @@ return [
|
*/
'name' => env('APP_NAME', 'Laravel'),
'name' => env('APP_NAME', 'Controlpanel.gg'),
/*
|--------------------------------------------------------------------------

View file

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class DecimalsInPrice extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('products', function (Blueprint $table) {
$table->decimal('price',['11','2'])->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('products', function (Blueprint $table) {
$table->integer('price')->change();
});
}
}

View file

@ -72,7 +72,7 @@
serverSide: true,
stateSave: true,
ajax: "{{ route('admin.payments.datatable') }}",
order: [[ 9, "asc" ]],
order: [[ 9, "desc" ]],
columns: [
{data: 'id',name: 'payments.id'},
{data: 'type'},

View file

@ -64,7 +64,7 @@
<div class="form-group">
<label for="price">{{__('Price in')}} {{CREDITS_DISPLAY_NAME}}</label>
<input value="{{$product->price ?? old('price')}}" id="price" name="price"
<input value="{{$product->price ?? old('price')}}" id="price" name="price" step=".01"
type="number"
step="0.0001"
class="form-control @error('price') is-invalid @enderror"

View file

@ -0,0 +1,67 @@
@extends('layouts.main')
@section('content')
<!-- CONTENT HEADER -->
<section class="content-header">
<div class="container-fluid">
<div class="alert alert-danger p-2 m-2">
<h5><i class="icon fas fa-exclamation-circle"></i> {{ __('ATTENTION!') }}</h5>
{{ __('Only edit these settings if you know exactly what you are doing ')}}
<br>
{{ __('You usually do not need to change anything here') }}
</div>
<div class="row mb-2">
<div class="col-sm-6">
<h1>{{__('Edit Server')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.servers.index')}}">{{__('Servers')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.servers.edit' , $server->id)}}">{{__('Edit')}}</a></li>
</ol>
</div>
</div>
</div>
</section>
<!-- END CONTENT HEADER -->
<!-- MAIN CONTENT -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<form action="{{route('admin.servers.update', $server->id)}}" method="POST">
@csrf
@method('PATCH')
<div class="form-group">
<label for="name">{{__('Server identifier')}}</label>
<input value="{{$server->identifier}}" id="identifier" name="identifier" type="text"
class="form-control @error('identifier') is-invalid @enderror" required="required">
@error('identifier')
<div class="invalid-feedback">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">{{__('Submit')}}</button>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- END CONTENT -->
@endsection

View file

@ -4,6 +4,7 @@
<th width="20"></th>
<th>{{__('Name')}}</th>
<th>{{__('User')}}</th>
<th>{{__('Server id')}}</th>
<th>{{__('Config')}}</th>
<th>{{__('Suspended at')}}</th>
<th>{{__('Created at')}}</th>
@ -33,6 +34,7 @@
{data: 'status' , name : 'servers.suspended'},
{data: 'name'},
{data: 'user' , name : 'user.name'},
{data: 'identifier'},
{data: 'resources' , name : 'product.name'},
{data: 'suspended'},
{data: 'created_at'},

View file

@ -130,7 +130,7 @@
data-content="Tax Value that will be added to the total price of the order. <br><br> Example: 19 results in (19%)"
class="fas fa-info-circle"></i>
</div>
<input x-model="sales-tax" id="sales-tax" name="sales-tax" type="number"
<input x-model="sales-tax" id="sales-tax" name="sales-tax" type="number" step=".01"
value="{{ config('SETTINGS::PAYMENTS:SALES_TAX') }}"
class="form-control @error('sales-tax') is-invalid @enderror">
</div>

View file

@ -134,6 +134,13 @@
value="{{ config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL') }}"
class="form-control @error('server-limit-email') is-invalid @enderror" required>
</div>
<div class="custom-control mb-3 p-0">
<label for="server-limit-purchase">{{ __('Server Limit after Credits Purchase') }}</label>
<input x-model="server-limit-purchase" id="server-limit-purchase" name="server-limit-purchase"
type="number"
value="{{ config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE') }}"
class="form-control @error('server-limit-purchase') is-invalid @enderror" required>
</div>
</div>
</div>
@ -157,6 +164,21 @@
class="form-control @error('allocation-limit') is-invalid @enderror" required>
</div>
</div>
</div>
{{-- Design --}}
<div class="col-md-3 px-3">
<div class="row mb-2">
<div class="col text-center">
<h1>{{ __('Design') }}</h1>
</div>
</div>
<div class="custom-control mb-3 p-0">
<input value="true" id="enable-login-logo" name="enable-login-logo"
{{ config('SETTINGS::SYSTEM:ENABLE_LOGIN_LOGO') == 'true' ? 'checked' : '' }}
type="checkbox">
<label for="enable-login-logo">{{ __('Enable Logo on Loginpage') }} </label>
</div>
<div class="form-group">
<div class="custom-file mb-3 mt-3">
<input type="file" accept="image/png,image/jpeg,image/jpg" class="custom-file-input" name="icon"
@ -169,7 +191,19 @@
</span>
@enderror
<div class="form-group">
<div class="custom-file mb-3 mt-3">
<input type="file" accept="image/png,image/jpeg,image/jpg" class="custom-file-input" name="logo"
id="logo">
<label class="custom-file-label selected" for="logo">{{ __('Select Login-page Logo') }}</label>
</div>
@error('logo')
<span class="text-danger">
{{ $message }}
</span>
@enderror
</div>
<div class="form-group">
<div class="custom-file mb-3">
<input type="file" accept="image/x-icon" class="custom-file-input" name="favicon"
@ -184,7 +218,6 @@
@enderror
</div>
</div>
</div>
</div>
<div class="row">
<button class="btn btn-primary ml-3 mt-3">{{ __('Submit') }}</button>

View file

@ -114,12 +114,23 @@
</option>
</select>
</div>
</div>
<div class="form-group">
<label for="name">{{__('Referral-Code')}}</label>
<input value="{{$user->referral_code}}" id="referral_code" name="referral_code" type="text"
class="form-control @error('referral_code') is-invalid @enderror" required="required">
@error('referral_code')
<div class="invalid-feedback">
{{$message}}
</div>
@enderror
</div>
@error('role')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">{{__('Submit')}}</button>
</div>

View file

@ -80,7 +80,7 @@
serverSide: true,
stateSave: true,
ajax: "{{route('admin.users.datatable')}}",
order: [[ 10, "asc" ]],
order: [[ 11, "asc" ]],
columns: [
{data: 'discordId', visible: false, name: 'discordUser.id'},
{data: 'pterodactyl_id', visible: false},

View file

@ -7,6 +7,12 @@
<div class="card card-outline card-primary">
<div class="card-header text-center">
<a href="{{route('welcome')}}" class="h1"><b class="mr-1">{{config('app.name', 'Laravel')}}</b></a>
@if(config("SETTINGS::SYSTEM:ENABLE_LOGIN_LOGO"))
<img
src="{{ \Illuminate\Support\Facades\Storage::disk('public')->exists('logo.png')? asset('storage/logo.png'): asset('images/controlpanel_logo.png') }}"
alt="{{ config('app.name', 'Controlpanel.gg') }} Logo"
style="opacity: .8;max-width:100%">
@endif
</div>
<div class="card-body">
<p class="login-box-msg">{{__('Sign in to start your session')}}</p>

View file

@ -188,7 +188,7 @@
src="{{ \Illuminate\Support\Facades\Storage::disk('public')->exists('icon.png')? asset('storage/icon.png'): asset('images/controlpanel_logo.png') }}"
alt="{{ config('app.name', 'Laravel') }} Logo" class="brand-image img-circle"
style="opacity: .8">
<span class="brand-text font-weight-light">{{ config('app.name', 'Laravel') }}</span>
<span class="brand-text font-weight-light">{{ config('app.name', 'Controlpanel.gg') }}</span>
</a>
<!-- Sidebar -->

View file

@ -211,7 +211,7 @@
</div>
<div class="mt-2 mb-2">
<span class="card-text text-muted">{{ __('Description') }}</span>
<p class="card-text" x-text="product.description"></p>
<p class="card-text" style="white-space:pre" x-text="product.description"></p>
</div>
</div>
<div class="mt-auto border rounded border-secondary">