rework UI of mail settings page to allow for saving settings before testing

This commit is contained in:
ayan4m1 2018-09-15 22:49:16 -04:00
parent 561b3dd1e7
commit c5608b1827
2 changed files with 90 additions and 16 deletions

View file

@ -5,7 +5,7 @@ namespace Pterodactyl\Http\Controllers\Admin\Settings;
use Exception;
use Illuminate\View\View;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Response;
use Prologue\Alerts\AlertsMessageBag;
use Illuminate\Contracts\Console\Kernel;
use Pterodactyl\Notifications\MailTested;
@ -85,13 +85,13 @@ class MailController extends Controller
* Handle request to update SMTP mail settings.
*
* @param \Pterodactyl\Http\Requests\Admin\Settings\MailSettingsFormRequest $request
* @return \Illuminate\Http\RedirectResponse
* @return \Illuminate\Http\Response
*
* @throws DisplayException
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/
public function update(MailSettingsFormRequest $request): RedirectResponse
public function update(MailSettingsFormRequest $request): Response
{
if ($this->config->get('mail.driver') !== 'smtp') {
throw new DisplayException('This feature is only available if SMTP is the selected email driver for the Panel.');
@ -111,30 +111,25 @@ class MailController extends Controller
}
$this->kernel->call('queue:restart');
$this->alert->success('Mail settings have been updated successfully and the queue worker was restarted to apply these changes.')->flash();
return redirect()->route('admin.settings.mail');
return response('', 204);
}
/**
* Submit a request to send a test mail message.
*
* @param Request $request
* @return \Illuminate\Http\RedirectResponse
* @return \Illuminate\Http\Response
*/
public function test(Request $request): RedirectResponse
public function test(Request $request): Response
{
try {
Notification::route('mail', $request->user()->email)
->notify(new MailTested($request->user()));
} catch (Exception $exception) {
$this->alert->danger(trans('base.mail.test_failed') . ' ' . $exception->getMessage())->flash();
return redirect()->route('admin.settings.mail');
return response($exception->getMessage(), 500);
}
$this->alert->success(trans('base.mail.test_succeeded'))->flash();
return redirect()->route('admin.settings.mail');
return response('', 204);
}
}