From cf37198a8aab6f5c75dcc0a4cd170d38f35a163d Mon Sep 17 00:00:00 2001 From: Angel MAS <angelmartin.isc@gmail.com> Date: Fri, 20 Apr 2018 18:34:00 -0500 Subject: [PATCH] crud users --- .gitignore | 1 + composer.json | 17 +++++++++++++++++ src/AdminUserController.php | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/UserAdminProvider.php | 30 ++++++++++++++++++++++++++++++ src/migrations/2018_04_20_220009_add_short_bio_to_users_table.php | 32 ++++++++++++++++++++++++++++++++ src/routes.php | 10 ++++++++++ src/views/edit.blade.php | 35 +++++++++++++++++++++++++++++++++++ src/views/fields.blade.php | 11 +++++++++++ src/views/list.blade.php | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 298 insertions(+) create mode 100644 .gitignore create mode 100644 composer.json create mode 100644 src/AdminUserController.php create mode 100644 src/UserAdminProvider.php create mode 100644 src/migrations/2018_04_20_220009_add_short_bio_to_users_table.php create mode 100644 src/routes.php create mode 100644 src/views/edit.blade.php create mode 100644 src/views/fields.blade.php create mode 100644 src/views/list.blade.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57872d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/vendor/ diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..cc428d3 --- /dev/null +++ b/composer.json @@ -0,0 +1,17 @@ +{ + "name": "onestartup/user-admin", + "description": "Module for create user in dashboard", + "type": "library", + "license": "Apache-2.0", + "authors": [ + { + "name": "Angel MAS", + "email": "angelmartin.isc@gmail.com" + } + ], + "minimum-stability": "dev", + "require": {}, + "autoload": { + "psr-4": {"Onestartup\\UserAdmin\\": "src"} + } +} diff --git a/src/AdminUserController.php b/src/AdminUserController.php new file mode 100644 index 0000000..f96bc03 --- /dev/null +++ b/src/AdminUserController.php @@ -0,0 +1,71 @@ +<?php + +namespace Onestartup\UserAdmin; + +use Illuminate\Http\Request; +use App\Http\Requests; +use App\Http\Controllers\Controller; +use Yajra\Datatables\Datatables; +use App\User; + +class AdminUserController extends Controller +{ + + public function list() + { + $roles = [1 => 'Admin', 2 => 'Editor']; + return view('user-admin::list')->with('roles', $roles); + } + + public function storeUser(Request $request) + { + + $user = new User($request->all()); + $user->password = bcrypt($request->password); + $user->save(); + + + return redirect()->back()->with('message_success', 'Se registro correctamente'); + } + + public function show($id) + { + $user = User::find($id); + $roles = [1 => 'Admin', 2 => 'Editor']; + + return view('user-admin::edit') + ->with('roles', $roles) + ->with('user', $user); + } + + public function update(Request $request, $id) + { + $user = User::find($id); + $user->fill($request->all()); + $user->save(); + + + return redirect()->back()->with('message_success', 'Se registro correctamente'); + } + + public function destroy($id) + { + $user = User::find($id); + $user->delete(); + + return redirect()->route('user.list')->with('message_success', 'Se eliminó correctamente'); + } + + public function datatable() + { + $users = User::select(['id','name','email', 'short_bio','rol_id','created_at'])->orderBy('id', 'desc'); + + return Datatables::of($users) + ->addColumn('details_url', function ($user) { + return "<a href='".route('user.show',$user->id)."'>Ver Detalle</a>"; + }) + ->rawColumns(['details_url']) + ->make(); + } + +} diff --git a/src/UserAdminProvider.php b/src/UserAdminProvider.php new file mode 100644 index 0000000..aceed37 --- /dev/null +++ b/src/UserAdminProvider.php @@ -0,0 +1,30 @@ +<?php + +namespace Onestartup\UserAdmin; + +use Illuminate\Support\ServiceProvider; + +class UserAdminProvider extends ServiceProvider +{ + /** + * Bootstrap the application services. + * + * @return void + */ + public function boot() + { + include __DIR__.'/routes.php'; + $this->loadMigrationsFrom(__DIR__.'/migrations'); + } + + /** + * Register the application services. + * + * @return void + */ + public function register() + { + $this->app->make('Onestartup\UserAdmin\AdminUserController'); + $this->loadViewsFrom(__DIR__.'/views', 'user-admin'); + } +} diff --git a/src/migrations/2018_04_20_220009_add_short_bio_to_users_table.php b/src/migrations/2018_04_20_220009_add_short_bio_to_users_table.php new file mode 100644 index 0000000..fdbf5a4 --- /dev/null +++ b/src/migrations/2018_04_20_220009_add_short_bio_to_users_table.php @@ -0,0 +1,32 @@ +<?php + +use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; + +class AddShortBioToUsersTable extends Migration +{ + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + Schema::table('users', function (Blueprint $table) { + $table->string('short_bio', 555)->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('short_bio'); + }); + } +} diff --git a/src/routes.php b/src/routes.php new file mode 100644 index 0000000..a1fdf3f --- /dev/null +++ b/src/routes.php @@ -0,0 +1,10 @@ +<?php + +Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){ + Route::get('admin/user','Onestartup\UserAdmin\AdminUserController@list')->name('user.list'); + Route::get('admin/user/datatable','Onestartup\UserAdmin\AdminUserController@datatable')->name('user.datatable'); + Route::get('admin/user/{id}/show','Onestartup\UserAdmin\AdminUserController@show')->name('user.show'); + Route::post('admin/user/store','Onestartup\UserAdmin\AdminUserController@storeUser')->name('user.store'); + Route::put('admin/user/{id}/update','Onestartup\UserAdmin\AdminUserController@update')->name('user.update'); + Route::delete('admin/user/{id}/destroy','Onestartup\UserAdmin\AdminUserController@destroy')->name('user.destroy'); +}); diff --git a/src/views/edit.blade.php b/src/views/edit.blade.php new file mode 100644 index 0000000..755cba2 --- /dev/null +++ b/src/views/edit.blade.php @@ -0,0 +1,35 @@ +@extends('layouts.admin.admin-layout') +@section('content') +<div class="row"> + <div class='col-md-10 offset-1'> + <div class='box'> + <div class='box-header dark'> + <h2> + Actualizar datos + </h2> + </div> + <div class='box-body'> + <div class="row"> + <div class="col-md-8 offset-2"> + {!! Form::model($user,['route'=> ['user.update',$user->id],"method"=>"PUT"]) !!} + @include('user-admin::fields') + <br> + <div class="row"> + <div class="col-md-6"> + {!! Form::submit('Actualizar', ['class'=>'btn btn-block btn-primary']) !!} + {!! Form::close() !!} + </div> + <div class="col-md-6"> + {!! Form::open(['route'=> ['user.destroy', $user->id],'method'=>'DELETE'])!!} + <button type='submit' class="btn btn-block btn-danger" onclick='return confirm("¿Estas seguro que deseas eliminar este USUARIO?")'>Eliminar este usuario</button> + {!! Form::close()!!} + </div> + </div> + + </div> + </div> + </div> + </div> + </div> +</div> +@endsection \ No newline at end of file diff --git a/src/views/fields.blade.php b/src/views/fields.blade.php new file mode 100644 index 0000000..bf750a5 --- /dev/null +++ b/src/views/fields.blade.php @@ -0,0 +1,11 @@ +{!! Form::label('name', 'Nombre', ['class'=>'control-label']) !!} +{!! Form::text('name', null, ["class"=>"form-control", "required"=>"required"]) !!} + +{!! Form::label('email', 'Correo electrónico', ['class'=>'control-label']) !!} +{!! Form::email('email', null, ["class"=>"form-control", "required"=>"required"]) !!} + +{!! Form::label('rol_id', 'Tipo de usuario', ['class'=>'control-label']) !!} +{!! Form::select('rol_id', $roles, null, ["class"=>"form-control", "required"=>"required"]) !!} + +{!! Form::label('short_bio', 'Biografia', ['class'=>'control-label']) !!} +{!! Form::text('short_bio', null, ["class"=>"form-control", "id"=>"short_bio", "required"=>"required"]) !!} \ No newline at end of file diff --git a/src/views/list.blade.php b/src/views/list.blade.php new file mode 100644 index 0000000..0679529 --- /dev/null +++ b/src/views/list.blade.php @@ -0,0 +1,91 @@ +@extends('layouts.admin.admin-layout') +@section('content') + +<div class='row collapse' id='xxx'> + <div class='col-md-10 offset-1'> + <div class='box'> + <div class='box-header dark'> + <h2> + Nuevo usuario + <span> + <a aria-expanded='false' data-toggle='collapse' href='#xxx' class="btn btn-xs danger"> + Cancelar + </a> + </span> + </h2> + </div> + <div class='box-body'> + <div class="row"> + <div class="col-md-8 offset-2"> + {!! Form::open(['route'=> ['user.store'],"method"=>"POST"]) !!} + @include('user-admin::fields') + {!! Form::label('password', 'Password', ['class'=>'control-label']) !!} + {!! Form::text('password', null, ["class"=>"form-control", "id"=>"password", "required"=>"required"]) !!} + + <br> + {!! Form::submit('Registrar', ['class'=>'btn btn-block btn-primary']) !!} + {!! Form::close() !!} + </div> + </div> + </div> + </div> + </div> +</div> + +<div class="row"> + <div class='col-md-10 offset-1'> + <div class='box'> + <div class='box-header dark'> + <h2> + Listado de usuarios + <span> + <a aria-expanded='false' data-toggle='collapse' href='#xxx' class="btn btn-xs primary"> + Agregar usuarios + </a> + </span> + </h2> + </div> + <div class='box-body'> + <table class='table' id="users"> + <thead> + <tr> + <th>#</th> + <th>Nombre</th> + <th>Correo</th> + <th>Bio</th> + <th>Tipo</th> + <th>Fecha de creación</th> + <th></th> + </tr> + </thead> + </table> + </div> + <div class='dker p-a text-right'></div> + </div> + </div> +</div> +@endsection + + +@push('scripts') +<script> + $(function() { + $('#users').DataTable({ + processing: true, + serverSide: true, + pageLength: 25, + ajax: '{{ route("user.datatable") }}', + columns: [ + {data: 'id', name: 'id'}, + {data: 'name', name: 'name'}, + {data: 'email', name: 'email'}, + {data: 'short_bio', name: 'short_bio'}, + {data: 'rol_id', name: 'rol_id'}, + {data: 'created_at', name: 'created_at'}, + {data: 'details_url', name: 'details_url'}, + ] + }); + + }); +</script> +@endpush -- libgit2 0.26.0