System.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace App\Classes\Settings;
  3. use App\Classes\Pterodactyl;
  4. use App\Models\Settings;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Cache;
  7. use Illuminate\Support\Facades\Validator;
  8. class System
  9. {
  10. public function __construct()
  11. {
  12. return;
  13. }
  14. public function checkPteroClientkey(){
  15. $response = Pterodactyl::getClientUser();
  16. if ($response->failed()){ return redirect()->back()->with('error', __('Your Key or URL is not correct')); }
  17. return redirect()->back()->with('success', __('Everything is good!'));
  18. }
  19. public function updateSettings(Request $request)
  20. {
  21. $validator = Validator::make($request->all(), [
  22. "register-ip-check" => "string",
  23. "server-create-charge-first-hour" => "string",
  24. "credits-display-name" => "required|string",
  25. "allocation-limit" => "required|min:0|integer",
  26. "force-email-verification" => "string",
  27. "force-discord-verification" => "string",
  28. "initial-credits" => "required|min:0|integer",
  29. "initial-server-limit" => "required|min:0|integer",
  30. "credits-reward-amount-discord" => "required|min:0|integer",
  31. "credits-reward-amount-email" => "required|min:0|integer",
  32. "server-limit-discord" => "required|min:0|integer",
  33. "server-limit-email" => "required|min:0|integer",
  34. "server-limit-purchase" => "required|min:0|integer",
  35. "pterodactyl-api-key" => "required|string",
  36. "pterodactyl-url" => "required|string",
  37. "per-page-limit" => "required|min:0|integer",
  38. "pterodactyl-admin-api-key" => "required|string",
  39. "enable-upgrades" => "string",
  40. ]);
  41. $validator->after(function ($validator) use ($request) {
  42. // if enable-recaptcha is true then recaptcha-site-key and recaptcha-secret-key must be set
  43. if ($request->get('enable-upgrades') == 'true' && (!$request->get('pterodactyl-admin-api-key'))) {
  44. $validator->errors()->add('pterodactyl-admin-api-key', 'The admin api key is required when upgrades are enabled.');
  45. }
  46. });
  47. if ($validator->fails()) {
  48. return redirect(route('admin.settings.index') . '#system')->with('error', __('System settings have not been updated!'))->withErrors($validator)
  49. ->withInput();
  50. }
  51. // update Icons from request
  52. $this->updateIcons($request);
  53. $values = [
  54. "SETTINGS::SYSTEM:REGISTER_IP_CHECK" => "register-ip-check",
  55. "SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR" => "server-create-charge-first-hour",
  56. "SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME" => "credits-display-name",
  57. "SETTINGS::SERVER:ALLOCATION_LIMIT" => "allocation-limit",
  58. "SETTINGS::USER:FORCE_DISCORD_VERIFICATION" => "force-discord-verification",
  59. "SETTINGS::USER:FORCE_EMAIL_VERIFICATION" => "force-email-verification",
  60. "SETTINGS::USER:INITIAL_CREDITS" => "initial-credits",
  61. "SETTINGS::USER:INITIAL_SERVER_LIMIT" => "initial-server-limit",
  62. "SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD" => "credits-reward-amount-discord",
  63. "SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_EMAIL" => "credits-reward-amount-email",
  64. "SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD" => "server-limit-discord",
  65. "SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL" => "server-limit-email",
  66. "SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE" => "server-limit-purchase",
  67. "SETTINGS::MISC:PHPMYADMIN:URL" => "phpmyadmin-url",
  68. "SETTINGS::SYSTEM:PTERODACTYL:URL" => "pterodactyl-url",
  69. 'SETTINGS::SYSTEM:PTERODACTYL:PER_PAGE_LIMIT' => "per-page-limit",
  70. "SETTINGS::SYSTEM:PTERODACTYL:TOKEN" => "pterodactyl-api-key",
  71. "SETTINGS::SYSTEM:ENABLE_LOGIN_LOGO" => "enable-login-logo",
  72. "SETTINGS::SYSTEM:PTERODACTYL:ADMIN_USER_TOKEN" => "pterodactyl-admin-api-key",
  73. "SETTINGS::SYSTEM:ENABLE_UPGRADE" => "enable-upgrade",
  74. ];
  75. foreach ($values as $key => $value) {
  76. $param = $request->get($value);
  77. Settings::where('key', $key)->updateOrCreate(['key' => $key], ['value' => $param]);
  78. Cache::forget("setting" . ':' . $key);
  79. }
  80. return redirect(route('admin.settings.index') . '#system')->with('success', __('System settings updated!'));
  81. }
  82. private function updateIcons(Request $request)
  83. {
  84. $request->validate([
  85. 'icon' => 'nullable|max:10000|mimes:jpg,png,jpeg',
  86. 'logo' => 'nullable|max:10000|mimes:jpg,png,jpeg',
  87. 'favicon' => 'nullable|max:10000|mimes:ico',
  88. ]);
  89. if ($request->hasFile('icon')) {
  90. $request->file('icon')->storeAs('public', 'icon.png');
  91. }
  92. if ($request->hasFile('logo')) {
  93. $request->file('logo')->storeAs('public', 'logo.png');
  94. }
  95. if ($request->hasFile('favicon')) {
  96. $request->file('favicon')->storeAs('public', 'favicon.ico');
  97. }
  98. }
  99. }