From 72011feea94d7362786f7735e90600c1e01f30ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Thu, 26 Jul 2018 22:32:05 +0200 Subject: [PATCH] split controller to Profile* and Account*, sort tables by last change --- app/Http/Controllers/AccountController.php | 77 ++++++++++++++++++++++ app/Http/Controllers/ProfileController.php | 68 +------------------ routes/login.php | 2 +- routes/web.php | 13 ++-- 4 files changed, 87 insertions(+), 73 deletions(-) create mode 100644 app/Http/Controllers/AccountController.php diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php new file mode 100644 index 0000000..8887d46 --- /dev/null +++ b/app/Http/Controllers/AccountController.php @@ -0,0 +1,77 @@ + user()]); + } + public function storeAccount(Request $request) + { + $input = $this->validate($request, [ + 'name' => [ + 'required', + VALI_NAME, + Rule::unique('users')->ignoreModel(\user()), + ], + 'email' => [ + 'required', + VALI_EMAIL, + Rule::unique('users')->ignoreModel(\user()), + ], + 'new_password' => ['nullable', 'confirmed', VALI_PASSWORD], + ]); + + $user = user(); + + if ($input->email != $user->email) { + $confirmation = EmailConfirmation::create([ + 'user_id' => $user->id, + 'email' => $input->email, + 'token' => Str::random(60), + ]); + + flash()->warning("New e-mail confirmation sent to $input->email.")->important(); + + // TODO send the e-mail + + unset($input->email); + } + + $user->fill($input->all()); + + if ($input->has('new_password')) { + $user->password = Hash::make($input->new_password); + + flash()->warning('Password changed'); + } + + $user->save(); + + flash()->success('Settings saved'); + + return back(); + } + + public function forgetSocialLogin($id) + { + $identity = user()->socialIdentities()->where('id', $id)->first(); + if (null === $identity) { + abort(404, "No such identity"); + } + + $identity->delete(); + return redirect(route('profile.manage-oauth')); + } +} diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 2e42d19..099bffd 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -3,12 +3,8 @@ namespace App\Http\Controllers; -use App\Models\EmailConfirmation; use App\Models\User; -use Hash; use Illuminate\Http\Request; -use Illuminate\Validation\Rule; -use MightyPork\Utils\Str; class ProfileController extends Controller { @@ -21,6 +17,7 @@ class ProfileController extends Controller { $tables = $user->tables() ->with('revision:id,row_count') + ->orderByDesc('updated_at') ->paginate(10); return view('profile.view')->with(compact('tables', 'user')); @@ -37,11 +34,6 @@ class ProfileController extends Controller return view('profile.edit-profile')->with('user', \user()); } - public function editAccount() - { - return view('profile.edit-account', ['user' => user()]); - } - /** * Store changed profile */ @@ -60,62 +52,4 @@ class ProfileController extends Controller flash()->success('Settings saved'); return back(); } - - public function storeAccount(Request $request) - { - $input = $this->validate($request, [ - 'name' => [ - 'required', - VALI_NAME, - Rule::unique('users')->ignoreModel(\user()), - ], - 'email' => [ - 'required', - VALI_EMAIL, - Rule::unique('users')->ignoreModel(\user()), - ], - 'new_password' => ['nullable', 'confirmed', VALI_PASSWORD], - ]); - - $user = user(); - - if ($input->email != $user->email) { - $confirmation = EmailConfirmation::create([ - 'user_id' => $user->id, - 'email' => $input->email, - 'token' => Str::random(60), - ]); - - flash()->warning("New e-mail confirmation sent to $input->email.")->important(); - - // TODO send the e-mail - - unset($input->email); - } - - $user->fill($input->all()); - - if ($input->has('new_password')) { - $user->password = Hash::make($input->new_password); - - flash()->warning('Password changed'); - } - - $user->save(); - - flash()->success('Settings saved'); - - return back(); - } - - public function forgetSocialLogin($id) - { - $identity = user()->socialIdentities()->where('id', $id)->first(); - if (null === $identity) { - abort(404, "No such identity"); - } - - $identity->delete(); - return redirect(route('profile.manage-oauth')); - } } diff --git a/routes/login.php b/routes/login.php index 8df2c12..23168c9 100644 --- a/routes/login.php +++ b/routes/login.php @@ -22,6 +22,7 @@ function _loginVia($method) { ->where('provider_user_id', $details->id) ->exists()) { Auth::logout(); + abort(403, "Account with this e-mail already exists. Add the identity to the account manually after logging in through an existing @@ -85,7 +86,6 @@ Route::get('/auth/facebook/callback', function() { return _loginVia('facebook'); })->name('oauth-facebook-callback'); -Route::get('/auth/forget/{id}', 'ProfileController@forgetSocialLogin')->name('forget-identity'); /* Route::get('/auth/stack/authorize', function() { diff --git a/routes/web.php b/routes/web.php index 3665085..aca41c1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -31,12 +31,15 @@ Route::group(['middleware' => 'auth'], function () { 'prefix' => 'profile', ], function () { Route::get('edit', 'ProfileController@editProfile')->name('profile.edit'); - Route::post('edit', 'ProfileController@storeProfile')->name('profile.store'); - - Route::post('create', 'TableController@storeNew')->name('table.storeNew'); + Route::post('store', 'ProfileController@storeProfile')->name('profile.store'); + }); - Route::get('logins', 'ProfileController@editAccount')->name('account.edit'); - Route::post('logins', 'ProfileController@storeAccount')->name('account.store'); + Route::group([ + 'prefix' => 'account', + ], function () { + Route::get('edit', 'AccountController@editAccount')->name('account.edit'); + Route::post('store', 'AccountController@storeAccount')->name('account.store'); + Route::get('forget-social-login/{id}', 'AccountController@forgetSocialLogin')->name('forget-identity'); }); });