From f8e98e9c9ea6d5729d0e940e7ac477e7c86a60bd Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Sat, 10 Mar 2018 14:44:21 -0600 Subject: [PATCH] Add ability to change server name, closes #563 --- CHANGELOG.md | 3 + .../Server/Settings/NameController.php | 59 +++++++++++++++++++ .../Settings/ChangeServerNameRequest.php | 31 ++++++++++ resources/lang/en/navigation.php | 1 + resources/lang/en/server.php | 5 ++ .../pterodactyl/layouts/master.blade.php | 3 + .../server/settings/name.blade.php | 50 ++++++++++++++++ routes/server.php | 7 ++- 8 files changed, 156 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/Server/Settings/NameController.php create mode 100644 app/Http/Requests/Server/Settings/ChangeServerNameRequest.php create mode 100644 resources/themes/pterodactyl/server/settings/name.blade.php diff --git a/CHANGELOG.md b/CHANGELOG.md index e6e4e33d..e8a60ce4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ This project follows [Semantic Versioning](http://semver.org) guidelines. * Fix data integrity exception thrown when attempting to store updated server egg variables. * Added missing permissions check on 'SFTP Configuration' page to ensure user has permission to access a server's SFTP server before showing a user credentials. +### Added +* Added ability for end users to change the name of their server through the UI. This option is only open to the server owner or an admin. + ### Changed * Panel now throws proper 504: Gateway Timeout errors on server listing when daemon is offline. * Sessions handled through redis now use a seperate database (default `1`) to store session database to avoid logging users out when flushing the cache. diff --git a/app/Http/Controllers/Server/Settings/NameController.php b/app/Http/Controllers/Server/Settings/NameController.php new file mode 100644 index 00000000..29cdb9ed --- /dev/null +++ b/app/Http/Controllers/Server/Settings/NameController.php @@ -0,0 +1,59 @@ +repository = $repository; + } + + /** + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + * @throws \Illuminate\Auth\Access\AuthorizationException + */ + public function index(Request $request) + { + $this->authorize('view-name', $request->attributes->get('server')); + $this->setRequest($request)->injectJavascript(); + + return view('server.settings.name'); + } + + /** + * Update the stored name for a specific server. + * + * @param \Pterodactyl\Http\Requests\Server\Settings\ChangeServerNameRequest $request + * @return \Illuminate\Http\RedirectResponse + * + * @throws \Pterodactyl\Exceptions\Model\DataValidationException + * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException + */ + public function update(ChangeServerNameRequest $request): RedirectResponse + { + $this->repository->update($request->getServer()->id, $request->validated()); + + return redirect()->route('server.settings.name', $request->getServer()->uuidShort); + } +} diff --git a/app/Http/Requests/Server/Settings/ChangeServerNameRequest.php b/app/Http/Requests/Server/Settings/ChangeServerNameRequest.php new file mode 100644 index 00000000..c969cb0e --- /dev/null +++ b/app/Http/Requests/Server/Settings/ChangeServerNameRequest.php @@ -0,0 +1,31 @@ + Server::getCreateRules()['name'], + ]; + } +} diff --git a/resources/lang/en/navigation.php b/resources/lang/en/navigation.php index f8a9deeb..c97c18a7 100644 --- a/resources/lang/en/navigation.php +++ b/resources/lang/en/navigation.php @@ -27,5 +27,6 @@ return [ 'edit_file' => 'Edit File', 'admin_header' => 'ADMINISTRATIVE', 'admin' => 'Server Configuration', + 'server_name' => 'Server Name', ], ]; diff --git a/resources/lang/en/server.php b/resources/lang/en/server.php index 76002aed..b84f7638 100644 --- a/resources/lang/en/server.php +++ b/resources/lang/en/server.php @@ -289,6 +289,11 @@ return [ ], ], 'config' => [ + 'name' => [ + 'header' => 'Server Name', + 'header_sub' => 'Change this server\'s name.', + 'details' => 'The server name is only a reference to this server on the panel, and will not affect any server specific configurations that may display to users in games.', + ], 'startup' => [ 'header' => 'Start Configuration', 'header_sub' => 'Control server startup arguments.', diff --git a/resources/themes/pterodactyl/layouts/master.blade.php b/resources/themes/pterodactyl/layouts/master.blade.php index 32b75823..020f8b63 100644 --- a/resources/themes/pterodactyl/layouts/master.blade.php +++ b/resources/themes/pterodactyl/layouts/master.blade.php @@ -184,6 +184,9 @@