From 1ca787e482883dc5c0eb25a7ec7ed6294561c3e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Fri, 22 Jan 2016 12:43:00 +0100 Subject: [PATCH 1/8] FEATURE: add Request class for handling user registration Laravel provides functionality for validating and authorization of incoming form requests. This commit adds this functionality to user registration. --- app/Http/Controllers/Admin/UserManagement.php | 16 +++------ app/Http/Requests/CreateNewUser.php | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 app/Http/Requests/CreateNewUser.php diff --git a/app/Http/Controllers/Admin/UserManagement.php b/app/Http/Controllers/Admin/UserManagement.php index 07cb8d8e..06d8405b 100644 --- a/app/Http/Controllers/Admin/UserManagement.php +++ b/app/Http/Controllers/Admin/UserManagement.php @@ -4,8 +4,8 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests; +use App\Http\Requests\CreateNewUser; use App\Models\User; -use Illuminate\Contracts\Hashing\Hasher; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; @@ -43,18 +43,12 @@ class UserManagement extends Controller * * This method saves new user into database * - * @param Request $request + * @param CreateNewUser $request + * + * @return \Illuminate\Http\RedirectResponse */ - protected function postRegistration(Request $request) + protected function postRegistration(CreateNewUser $request) { - - // validate input data - $this->validate($request, [ - 'role' => 'required', - 'email' => 'required|email|max:128|unique:users', - 'password' => 'required|min:6' - ]); - // when user did not provide any username, use his email $username = isset($request->username) && !empty($request->username) ? $request->username : $request->email; diff --git a/app/Http/Requests/CreateNewUser.php b/app/Http/Requests/CreateNewUser.php new file mode 100644 index 00000000..8295ddc3 --- /dev/null +++ b/app/Http/Requests/CreateNewUser.php @@ -0,0 +1,33 @@ +role == User::ROLE_ADMIN; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'role' => 'required', + 'email' => 'required|email|max:128|unique:users', + 'password' => 'required|min:6' + ]; + } +} From 39855bdbfdbf897527877b22b3e3c0218627b1ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Fri, 22 Jan 2016 12:45:17 +0100 Subject: [PATCH 2/8] FEATURE: add redirect after successful user registration --- app/Http/Controllers/Admin/UserManagement.php | 6 +++++- resources/lang/en/admin/userManagement.php | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Admin/UserManagement.php b/app/Http/Controllers/Admin/UserManagement.php index 06d8405b..d802a767 100644 --- a/app/Http/Controllers/Admin/UserManagement.php +++ b/app/Http/Controllers/Admin/UserManagement.php @@ -62,6 +62,10 @@ class UserManagement extends Controller // store user into database $user->save(); - // @todo add some redirect, inform user etc. + + // refresh page with information about successfull registration + return redirect() + ->route('users.new') + ->with('message', trans('admin/userManagement.registrationSuccessfull')); } } diff --git a/resources/lang/en/admin/userManagement.php b/resources/lang/en/admin/userManagement.php index 093c6910..2e187734 100644 --- a/resources/lang/en/admin/userManagement.php +++ b/resources/lang/en/admin/userManagement.php @@ -8,6 +8,7 @@ return [ 'role_admin' => 'Admin', 'role_editor' => 'Editor', 'role_visitor' => 'Visitor', - 'register' => 'Create user' + 'register' => 'Create user', + 'registrationSuccessfull' => 'New user successfully added.' ]; \ No newline at end of file From 551e1af5fe32911aa104b9b26ac3e9b0de870f3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Fri, 22 Jan 2016 12:46:18 +0100 Subject: [PATCH 3/8] FIX: fix some security issue --- app/Http/Middleware/Authenticate.php | 6 +++--- app/Http/Requests/CreateNewUser.php | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index fb6411f6..074f8f9d 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -17,12 +17,12 @@ class Authenticate */ public function handle($request, Closure $next, $guard = null) { - if (Auth::check()) { + if (!Auth::check($guard)) { if ($request->ajax()) { return response('Unauthorized.', 401); - } else { - return redirect()->guest('login'); } + + return redirect()->guest('login'); } return $next($request); diff --git a/app/Http/Requests/CreateNewUser.php b/app/Http/Requests/CreateNewUser.php index 8295ddc3..adec8c26 100644 --- a/app/Http/Requests/CreateNewUser.php +++ b/app/Http/Requests/CreateNewUser.php @@ -14,7 +14,8 @@ class CreateNewUser extends Request */ public function authorize() { - return \Auth::$user->role == User::ROLE_ADMIN; + + return \Auth::check() && \Auth::$user->role == User::ROLE_ADMIN; } /** From 7f1ab69e838ba93c2a60aa6d822ce88de3636d2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Fri, 22 Jan 2016 12:46:57 +0100 Subject: [PATCH 4/8] FIX: fixed errors when no error was defined --- resources/views/admin/userManagement/new.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/admin/userManagement/new.blade.php b/resources/views/admin/userManagement/new.blade.php index 8a60b348..67648fc7 100644 --- a/resources/views/admin/userManagement/new.blade.php +++ b/resources/views/admin/userManagement/new.blade.php @@ -14,7 +14,7 @@ - @if ($errors->has('email')) + @if (isset($errors) && $errors->has('email')) {{ $errors->first('email') }} @@ -26,7 +26,7 @@ - @if ($errors->has('password')) + @if (isset($errors) && $errors->has('password')) {{ $errors->first('password') }} @@ -44,7 +44,7 @@ @endforeach - @if ($errors->has('role')) + @if (isset($errors) && $errors->has('role')) {{ $errors->first('role') }} From f1a0f4d7e2968adc12bd5295a98ab6388a2528eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Fri, 22 Jan 2016 12:47:37 +0100 Subject: [PATCH 5/8] FIX: removed duplicit "admin/" in routes. --- app/Http/routes.php | 13 +++++++------ resources/views/admin/userManagement/new.blade.php | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/Http/routes.php b/app/Http/routes.php index e0455cf6..87f45623 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -29,22 +29,23 @@ Route::group([ Route::get('/', 'Dashboard@getIndex'); // display form for creating new user - Route::get('admin/users/new', 'UserManagement@getNewUser') + Route::get('users/new', 'UserManagement@getNewUser') ->name('users.new'); // display form for edit of existing user - Route::get('admin/users/edit/{id}', 'UserManagement@getEditExistingUser') + Route::get('users/edit/{id}', 'UserManagement@getEditExistingUser') ->name('users.edit'); // display user detail in admin - Route::get('admin/users/{id}', 'UserManagement@getDetail') + Route::get('users/{id}', 'UserManagement@getDetail') ->name('users.detail'); // display list of all users registered into our system - Route::get('admin/users/overview/{state?}', 'UserManagement@getOverview') + Route::get('users/overview/{state?}', 'UserManagement@getOverview') ->name('users.overview'); // POST methods - Route::post('login', 'Admin\Login@postLogin') - ->name('login'); + // display form for creating new user + Route::post('users/new', 'UserManagement@postRegistration') + ->name('users.newPost'); }); diff --git a/resources/views/admin/userManagement/new.blade.php b/resources/views/admin/userManagement/new.blade.php index 67648fc7..4af2884a 100644 --- a/resources/views/admin/userManagement/new.blade.php +++ b/resources/views/admin/userManagement/new.blade.php @@ -1,7 +1,7 @@ @extends('admin.layout') @section('content') -
+ {!! csrf_field() !!}