diff --git a/app/Http/Controllers/Gallery/UserController.php b/app/Http/Controllers/Gallery/UserController.php index f1bbecf..a8ae63f 100644 --- a/app/Http/Controllers/Gallery/UserController.php +++ b/app/Http/Controllers/Gallery/UserController.php @@ -7,6 +7,7 @@ use App\Facade\Theme; use App\Facade\UserConfig; use App\Helpers\DbHelper; use App\Http\Controllers\Controller; +use App\Http\Requests\SaveUserSettingsRequest; use App\User; use Illuminate\Support\Collection; use Illuminate\Support\Facades\App; @@ -15,9 +16,31 @@ use Symfony\Component\HttpFoundation\Request; class UserController extends Controller { + public function saveSettings(SaveUserSettingsRequest $request) + { + $data = $request->only(['name', 'email', 'profile_alias', 'enable_profile_page']); + + if (UserConfig::get('require_email_verification')) + { + // Can't update the e-mail directly until the new e-mail address has been verified. + // TODO - send e-mail and handle response, flag e-mail as being "change in-progress" + unset($data['email']); + } + + $user = $this->getUser(); + $user->fill($data); + $user->enable_profile_page = (isset($data['enable_profile_page']) && strtolower($data['enable_profile_page']) == 'on'); + $user->save(); + + $request->session()->flash('success', trans('gallery.user_settings.settings_saved')); + + return redirect(route('userSettings')); + } + public function settings(Request $request) { return Theme::render('gallery.user_settings', [ + 'success' => $request->session()->get('success'), 'user' => $this->getUser() ]); } diff --git a/app/Http/Requests/SaveUserSettingsRequest.php b/app/Http/Requests/SaveUserSettingsRequest.php new file mode 100644 index 0000000..0c664f2 --- /dev/null +++ b/app/Http/Requests/SaveUserSettingsRequest.php @@ -0,0 +1,33 @@ + 'required|max:255', + 'email' => 'required|email|max:255|unique:users,email,' . Auth::user()->id + // TODO include user profile alias + ]; + } +} \ No newline at end of file diff --git a/resources/lang/en/gallery.php b/resources/lang/en/gallery.php index b782b31..b1f1b6b 100644 --- a/resources/lang/en/gallery.php +++ b/resources/lang/en/gallery.php @@ -80,6 +80,7 @@ return [ ], 'user_settings' => [ 'change_password' => 'Change password', + 'settings_saved' => 'Your settings were updated successfully.', 'title' => 'Change my settings' ] ]; \ No newline at end of file diff --git a/resources/views/themes/base/gallery/user_settings.blade.php b/resources/views/themes/base/gallery/user_settings.blade.php index 962ce1e..5c8e8b8 100644 --- a/resources/views/themes/base/gallery/user_settings.blade.php +++ b/resources/views/themes/base/gallery/user_settings.blade.php @@ -16,7 +16,6 @@
{{ csrf_field() }} - {{ method_field('PUT') }}
diff --git a/routes/web.php b/routes/web.php index 99d1315..3bc1377 100644 --- a/routes/web.php +++ b/routes/web.php @@ -120,6 +120,6 @@ Route::get('u/{idOrAlias}', 'Gallery\UserController@show') Route::get('me/settings', 'Gallery\UserController@settings') ->name('userSettings') ->middleware('auth'); -Route::get('me/save-settings', 'Gallery\UserController@saveSettings') +Route::post('me/save-settings', 'Gallery\UserController@saveSettings') ->name('saveUserSettings') ->middleware('auth'); \ No newline at end of file