From fc50a1400d97933e350e32ee32976fddfc0df840 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 8 Aug 2015 20:05:30 +0100 Subject: [PATCH] Added User managment. Fixes #5 --- app/Http/Controllers/UserController.php | 132 ++++++++++++++++++++++++ app/Http/Middleware/Authenticate.php | 3 +- app/Http/routes.php | 13 +++ resources/assets/sass/_buttons.scss | 3 + resources/assets/sass/_tables.scss | 18 ++++ resources/assets/sass/styles.scss | 1 + resources/views/base.blade.php | 1 + resources/views/form/password.blade.php | 2 +- resources/views/users/create.blade.php | 15 +++ resources/views/users/delete.blade.php | 22 ++++ resources/views/users/edit.blade.php | 25 +++++ resources/views/users/form.blade.php | 33 ++++++ resources/views/users/index.blade.php | 33 ++++++ 13 files changed, 298 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/UserController.php create mode 100644 resources/assets/sass/_tables.scss create mode 100644 resources/views/users/create.blade.php create mode 100644 resources/views/users/delete.blade.php create mode 100644 resources/views/users/edit.blade.php create mode 100644 resources/views/users/form.blade.php create mode 100644 resources/views/users/index.blade.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 000000000..07d2cac9d --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,132 @@ +user = $user; + } + + + /** + * Display a listing of the users. + * + * @return Response + */ + public function index() + { + $users = $this->user->all(); + return view('users/index', ['users'=> $users]); + } + + /** + * Show the form for creating a new user. + * + * @return Response + */ + public function create() + { + return view('users/create'); + } + + /** + * Store a newly created user in storage. + * + * @param Request $request + * @return Response + */ + public function store(Request $request) + { + $this->validate($request, [ + 'name' => 'required', + 'email' => 'required|email', + 'password' => 'required|min:5', + 'password-confirm' => 'required|same:password' + ]); + + $user = $this->user->fill($request->all()); + $user->password = Hash::make($request->get('password')); + $user->save(); + return redirect('/users'); + } + + + /** + * Show the form for editing the specified user. + * + * @param int $id + * @return Response + */ + public function edit($id) + { + $user = $this->user->findOrFail($id); + return view('users/edit', ['user' => $user]); + } + + /** + * Update the specified user in storage. + * + * @param Request $request + * @param int $id + * @return Response + */ + public function update(Request $request, $id) + { + $this->validate($request, [ + 'name' => 'required', + 'email' => 'required|email', + 'password' => 'min:5', + 'password-confirm' => 'same:password' + ]); + + $user = $this->user->findOrFail($id); + $user->fill($request->all()); + + if($request->has('password') && $request->get('password') != '') { + $password = $request->get('password'); + $user->password = Hash::make($password); + } + $user->save(); + return redirect('/users'); + } + + /** + * Show the user delete page. + * @param $id + * @return \Illuminate\View\View + */ + public function delete($id) + { + $user = $this->user->findOrFail($id); + return view('users/delete', ['user' => $user]); + } + + /** + * Remove the specified user from storage. + * + * @param int $id + * @return Response + */ + public function destroy($id) + { + $user = $this->user->findOrFail($id); + $user->delete(); + return redirect('/users'); + } +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index c3ddb9a0d..563fb1e9d 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -17,8 +17,7 @@ class Authenticate /** * Create a new filter instance. * - * @param Guard $auth - * @return void + * @param Guard $auth */ public function __construct(Guard $auth) { diff --git a/app/Http/routes.php b/app/Http/routes.php index 7053c71b9..d1ea3e854 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -50,11 +50,24 @@ Route::group(['middleware' => 'auth'], function() { Route::post('/upload/image', 'ImageController@upload'); + // Users + Route::get('/users', 'UserController@index'); + Route::get('/users/create', 'UserController@create'); + Route::get('/users/{id}/delete', 'UserController@delete'); + Route::post('/users/create', 'UserController@store'); + Route::get('/users/{id}', 'UserController@edit'); + Route::put('/users/{id}', 'UserController@update'); + Route::delete('/users/{id}', 'UserController@destroy'); + + // Image routes Route::get('/images/all', 'ImageController@getAll'); Route::get('/images/all/{page}', 'ImageController@getAll'); Route::get('/images/{any}', 'ImageController@getImage')->where('any', '.*'); + // Links Route::get('/link/{id}', 'PageController@redirectFromLink'); + + // Search Route::get('/pages/search/all', 'PageController@searchAll'); Route::get('/', function () { diff --git a/resources/assets/sass/_buttons.scss b/resources/assets/sass/_buttons.scss index 49d8629d6..d9a45709b 100644 --- a/resources/assets/sass/_buttons.scss +++ b/resources/assets/sass/_buttons.scss @@ -43,6 +43,9 @@ $button-border-radius: 3px; &.secondary { @include generate-button-colors(#EEE, $secondary); } + &.muted { + @include generate-button-colors(#EEE, #888); + } } .button-group { diff --git a/resources/assets/sass/_tables.scss b/resources/assets/sass/_tables.scss new file mode 100644 index 000000000..768eb18e6 --- /dev/null +++ b/resources/assets/sass/_tables.scss @@ -0,0 +1,18 @@ + +table.table { + width: 100%; + tr { + border-bottom: 1px solid #DDD; + } + th, td { + text-align: left; + border: none; + padding: $-xs $-xs; + } + th { + font-weight: bold; + } + tr:hover { + background-color: #EEE; + } +} \ No newline at end of file diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index 9dc60a2f4..aece8c09a 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -7,6 +7,7 @@ @import "blocks"; @import "buttons"; @import "forms"; +@import "tables"; @import "tinymce"; header { diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php index f3f9a2d6f..f62331329 100644 --- a/resources/views/base.blade.php +++ b/resources/views/base.blade.php @@ -46,6 +46,7 @@ @if(isset($book) && !isset($books)) diff --git a/resources/views/form/password.blade.php b/resources/views/form/password.blade.php index 294c64504..ca981a20a 100644 --- a/resources/views/form/password.blade.php +++ b/resources/views/form/password.blade.php @@ -1,7 +1,7 @@ has($name)) class="neg" @endif @if(isset($placeholder)) placeholder="{{$placeholder}}" @endif - @if(isset($model) || old($name)) value="{{ old($name) ? old($name) : $model->$name}}" @endif> + @if(old($name)) value="{{ old($name)}}" @endif> @if($errors->has($name))
{{ $errors->first($name) }}
@endif \ No newline at end of file diff --git a/resources/views/users/create.blade.php b/resources/views/users/create.blade.php new file mode 100644 index 000000000..ced7736ca --- /dev/null +++ b/resources/views/users/create.blade.php @@ -0,0 +1,15 @@ +@extends('base') + + +@section('content') + +
+

Create User

+ +
+ {!! csrf_field() !!} + @include('users/form') +
+
+ +@stop diff --git a/resources/views/users/delete.blade.php b/resources/views/users/delete.blade.php new file mode 100644 index 000000000..279fbdb30 --- /dev/null +++ b/resources/views/users/delete.blade.php @@ -0,0 +1,22 @@ +@extends('base') + +@section('content') + +
+

Delete User

+

This will fully delete this user with the name '{{$user->name}}' from the system.

+

Are you sure you want to delete this user?

+ +
+ {!! csrf_field() !!} + + Cancel + +
+
+ +@stop + +@section('bottom') + @include('pages/image-manager') +@stop \ No newline at end of file diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php new file mode 100644 index 000000000..5e164e90e --- /dev/null +++ b/resources/views/users/edit.blade.php @@ -0,0 +1,25 @@ +@extends('base') + + +@section('content') + +
+
+
+ +
+
+ +
+

Edit User

+ +
+ {!! csrf_field() !!} + + @include('users/form', ['model' => $user]) +
+
+ +@stop diff --git a/resources/views/users/form.blade.php b/resources/views/users/form.blade.php new file mode 100644 index 000000000..5d5aa140c --- /dev/null +++ b/resources/views/users/form.blade.php @@ -0,0 +1,33 @@ + +
+ + @include('form/text', ['name' => 'name']) +
+ +
+ + @include('form/text', ['name' => 'email']) +
+ +@if(isset($model)) +
+ + Only fill the below if you would like
to change your password: +
+
+@endif + +
+ + @include('form/password', ['name' => 'password']) +
+ +
+ + @include('form/password', ['name' => 'password-confirm']) +
+ +
+ Cancel + +
\ No newline at end of file diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php new file mode 100644 index 000000000..f29ad79b7 --- /dev/null +++ b/resources/views/users/index.blade.php @@ -0,0 +1,33 @@ +@extends('base') + + +@section('content') + + +
+
+
+
+ New User +
+
+
+ + +
+

Users

+ + + + + + @foreach($users as $user) + + + + + @endforeach +
NameEmail
{{$user->name}}{{$user->email}}
+
+ +@stop