From 012e1505197858219901fdafb7d21a2b0e480eb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Thu, 21 Jan 2016 11:17:17 +0100 Subject: [PATCH] This commit is somehow result of merge with user_management branch. --- app/Http/Controllers/Admin/UserManagement.php | 73 +++++++++++++++++++ app/Http/Controllers/Controller.php | 17 +++++ app/Http/Middleware/Authenticate.php | 2 +- app/Http/routes.php | 27 ++++++- app/Models/User.php | 24 ++++++ database/schema.sql | 2 +- resources/lang/en/admin/userManagement.php | 13 ++++ .../admin/userManagement/detail.blade.php | 0 .../views/admin/userManagement/edit.blade.php | 1 + .../views/admin/userManagement/list.blade.php | 0 .../views/admin/userManagement/new.blade.php | 61 ++++++++++++++++ 11 files changed, 216 insertions(+), 4 deletions(-) create mode 100644 app/Http/Controllers/Admin/UserManagement.php create mode 100644 resources/lang/en/admin/userManagement.php create mode 100644 resources/views/admin/userManagement/detail.blade.php create mode 100644 resources/views/admin/userManagement/edit.blade.php create mode 100644 resources/views/admin/userManagement/list.blade.php create mode 100644 resources/views/admin/userManagement/new.blade.php diff --git a/app/Http/Controllers/Admin/UserManagement.php b/app/Http/Controllers/Admin/UserManagement.php new file mode 100644 index 00000000..07cb8d8e --- /dev/null +++ b/app/Http/Controllers/Admin/UserManagement.php @@ -0,0 +1,73 @@ + 'admin/userManagement.role_' . User::ROLE_ADMIN, + User::ROLE_EDITOR => 'admin/userManagement.role_' . User::ROLE_EDITOR, + User::ROLE_VISITOR => 'admin/userManagement.role_' . User::ROLE_VISITOR + ]; + + // render view + return $this->view('admin.userManagement.new', ['roles' => $roles]); + } + + public function getEditExistingUser($id) + { + // try to find user + $user = User::findOrFail($id); + + // render view + return $this->view('admin.userManagement.edit', ['user' => $user]); + } + + public function getOverview($state = null) + { + echo $state; + } + + /** + * Create new user + * + * This method saves new user into database + * + * @param Request $request + */ + protected function postRegistration(Request $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; + + // create new user + $user = new User(); + $user->name = $request->name; + $user->email = $request->email; + $user->username = $username; + $user->role = $request->role; + $user->password = Hash::make($request->password); + + // store user into database + $user->save(); + // @todo add some redirect, inform user etc. + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 03e02a23..83df967a 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -10,4 +10,21 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + + /** + * Custom wrapper for generating view. + * + * This method will be used for switching among templates. + * + * @todo add template support + * + * @param null $view + * @param array $data + * @param array $mergeData + * + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + protected function view($view = null, $data = [], $mergeData = []) { + return view($view, $data, $mergeData); + } } diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index d670fbfe..fb6411f6 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -17,7 +17,7 @@ class Authenticate */ public function handle($request, Closure $next, $guard = null) { - if (Auth::guard($guard)->guest()) { + if (Auth::check()) { if ($request->ajax()) { return response('Unauthorized.', 401); } else { diff --git a/app/Http/routes.php b/app/Http/routes.php index 2c4e62db..8157fa26 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -23,7 +23,29 @@ */ Route::group(['middleware' => ['web']], function () { - Route::get('login', 'Admin\Login@getLoginForm')->name('loginForm'); + + // display login form + Route::get('login', 'Admin\Login@getLoginForm') + ->name('loginForm'); + + // --------------------------------------------------------------- + // @todo move to admin group (protect it) + + // display form for creating new user + Route::get('admin/users/new', 'Admin\UserManagement@getNewUser') + ->name('users.new'); + + // display form for edit of existing user + Route::get('admin/users/edit/{id}', 'Admin\UserManagement@getEditExistingUser') + ->name('users.edit'); + + // display user detail in admin + Route::get('admin/users/{id}', 'Admin\UserManagement@getDetail') + ->name('users.detail'); + + // display list of all users registered into our system + Route::get('admin/users/overview/{state?}', 'Admin\UsersManagement@getOverview') + ->name('users.overview'); // POST methods Route::post('login', 'Admin\Login@postLogin') @@ -36,5 +58,6 @@ Route::group([ 'namespace' => 'Admin', 'prefix' => 'admin' ], function () { - Route::get('/', 'Dashboard@getIndex'); + Route::get('/', 'Dashboard@getIndex') + ->name('admin.dashboard'); }); diff --git a/app/Models/User.php b/app/Models/User.php index 3f688979..b336ac21 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -14,6 +14,7 @@ use Illuminate\Foundation\Auth\Access\Authorizable; class User extends Model implements AuthenticableInterface { use Authenticatable, Authorizable, CanResetPassword; + public $timestamps = false; protected $fillable = [ 'email', @@ -31,4 +32,27 @@ class User extends Model implements AuthenticableInterface 'password', 'remember_token', ]; + + const STATE_DELETED = 'deleted'; + const STATE_BLOCKED = 'blocked'; + const STATE_ACTIVE = 'active'; + const ROLE_VISITOR = 'visitor'; + const ROLE_EDITOR = 'editor'; + const ROLE_ADMIN = 'admin'; + + /** + * Validation method for input data + * + * @param array $data + * + * @throws ValidationException + */ + public static function validate(array $data) + { + $valid = true; + + if (!$valid) { + throw new ValidationException(Validator::class, 'Invalid request'); + } + } } \ No newline at end of file diff --git a/database/schema.sql b/database/schema.sql index d8fefd9e..7067fead 100644 --- a/database/schema.sql +++ b/database/schema.sql @@ -1,5 +1,5 @@ -- MySQL Script generated by MySQL Workbench --- Čt 21. leden 2016, 01:17:14 CET +-- Čt 21. leden 2016, 00:19:53 CET -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering diff --git a/resources/lang/en/admin/userManagement.php b/resources/lang/en/admin/userManagement.php new file mode 100644 index 00000000..093c6910 --- /dev/null +++ b/resources/lang/en/admin/userManagement.php @@ -0,0 +1,13 @@ + 'Full name', + 'email' => 'Email', + 'password' => 'Password', + 'roles' => 'Please, select user\'s role', + 'role_admin' => 'Admin', + 'role_editor' => 'Editor', + 'role_visitor' => 'Visitor', + 'register' => 'Create user' + +]; \ No newline at end of file diff --git a/resources/views/admin/userManagement/detail.blade.php b/resources/views/admin/userManagement/detail.blade.php new file mode 100644 index 00000000..e69de29b diff --git a/resources/views/admin/userManagement/edit.blade.php b/resources/views/admin/userManagement/edit.blade.php new file mode 100644 index 00000000..9fbfee07 --- /dev/null +++ b/resources/views/admin/userManagement/edit.blade.php @@ -0,0 +1 @@ +edituji uzivatele {{$id}}. \ No newline at end of file diff --git a/resources/views/admin/userManagement/list.blade.php b/resources/views/admin/userManagement/list.blade.php new file mode 100644 index 00000000..e69de29b diff --git a/resources/views/admin/userManagement/new.blade.php b/resources/views/admin/userManagement/new.blade.php new file mode 100644 index 00000000..8a60b348 --- /dev/null +++ b/resources/views/admin/userManagement/new.blade.php @@ -0,0 +1,61 @@ +@extends('admin.layout') + +@section('content') +
+ {!! csrf_field() !!} + + + + + + + +
+ @lang('admin/userManagement.roles') + + @foreach($roles as $role => $translation) + + @endforeach + + + @if ($errors->has('role')) + + {{ $errors->first('role') }} + + @endif +
+ + +
+ + + +@stop \ No newline at end of file