From 951266a1006d0d9cfc2c26046450a7eb66e525dd Mon Sep 17 00:00:00 2001 From: prashant-webkul Date: Tue, 24 Jul 2018 20:03:49 +0530 Subject: [PATCH] datagrid mass action complete, customer packagge guard working, guards now defined in main auth.php file --- ..._151120_create_customers_address_table.php | 31 --------- ...4_082635_create_customer_groups_table.php} | 7 +- ...082839_create_customer_addresses_table.php | 38 +++++++++++ ...8_07_24_082930_create_customers_table.php} | 8 +++ .../src/Http/Controllers/Controller.php | 13 ++++ .../Http/Controllers/CustomerController.php | 22 +++--- .../Controllers/RegistrationController.php | 67 +++++++++++++++++++ .../Http/Controllers/SessionController.php | 58 ++++++++++++++++ .../Http/Middleware/RedirectIfNotCustomer.php | 4 +- packages/Webkul/Customer/src/Http/routes.php | 34 +++++++--- .../Webkul/Customer/src/Models/Customer.php | 13 +++- .../Customer/src/Models/CustomerGroups.php | 2 +- .../Customer/src/Models/CustomersAddress.php | 2 +- .../src/Providers/CustomerServiceProvider.php | 4 +- .../src/Resources/assets/sass/app.scss | 41 ++++++++++++ .../Resources/views/dashboard/index.blade.php | 12 ++++ .../src/Resources/views/login/index.blade.php | 9 +-- .../Resources/views/signup/index.blade.php | 20 +++--- 18 files changed, 310 insertions(+), 75 deletions(-) delete mode 100644 packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151120_create_customers_address_table.php rename packages/Webkul/Customer/src/Database/{Migrations/2018_07_20_151103_create_customers_group_table.php => migrations/2018_07_24_082635_create_customer_groups_table.php} (68%) create mode 100644 packages/Webkul/Customer/src/Database/migrations/2018_07_24_082839_create_customer_addresses_table.php rename packages/Webkul/Customer/src/Database/{Migrations/2018_07_20_151049_create_customers_table.php => migrations/2018_07_24_082930_create_customers_table.php} (53%) create mode 100644 packages/Webkul/Customer/src/Http/Controllers/Controller.php create mode 100644 packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php create mode 100644 packages/Webkul/Customer/src/Http/Controllers/SessionController.php create mode 100644 packages/Webkul/Customer/src/Resources/views/dashboard/index.blade.php diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151120_create_customers_address_table.php b/packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151120_create_customers_address_table.php deleted file mode 100644 index 11862d531..000000000 --- a/packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151120_create_customers_address_table.php +++ /dev/null @@ -1,31 +0,0 @@ -increments('id'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('customers_address'); - } -} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151103_create_customers_group_table.php b/packages/Webkul/Customer/src/Database/migrations/2018_07_24_082635_create_customer_groups_table.php similarity index 68% rename from packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151103_create_customers_group_table.php rename to packages/Webkul/Customer/src/Database/migrations/2018_07_24_082635_create_customer_groups_table.php index 43919ebf4..7d7e5f7ce 100644 --- a/packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151103_create_customers_group_table.php +++ b/packages/Webkul/Customer/src/Database/migrations/2018_07_24_082635_create_customer_groups_table.php @@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; -class CreateCustomersGroupTable extends Migration +class CreateCustomerGroupsTable extends Migration { /** * Run the migrations. @@ -13,8 +13,9 @@ class CreateCustomersGroupTable extends Migration */ public function up() { - Schema::create('customers_group', function (Blueprint $table) { + Schema::create('customer_groups', function (Blueprint $table) { $table->increments('id'); + $table->string('group_name'); $table->timestamps(); }); } @@ -26,6 +27,6 @@ class CreateCustomersGroupTable extends Migration */ public function down() { - Schema::dropIfExists('customers_group'); + Schema::dropIfExists('customer_groups'); } } diff --git a/packages/Webkul/Customer/src/Database/migrations/2018_07_24_082839_create_customer_addresses_table.php b/packages/Webkul/Customer/src/Database/migrations/2018_07_24_082839_create_customer_addresses_table.php new file mode 100644 index 000000000..675fb0028 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/migrations/2018_07_24_082839_create_customer_addresses_table.php @@ -0,0 +1,38 @@ +increments('id'); + $table->string('street'); + $table->string('address1'); + $table->string('address2'); + $table->string('country'); + $table->string('state'); + $table->string('city'); + $table->integer('pincode'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('customer_addresses'); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151049_create_customers_table.php b/packages/Webkul/Customer/src/Database/migrations/2018_07_24_082930_create_customers_table.php similarity index 53% rename from packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151049_create_customers_table.php rename to packages/Webkul/Customer/src/Database/migrations/2018_07_24_082930_create_customers_table.php index 9dc55266d..46d253040 100644 --- a/packages/Webkul/Customer/src/Database/Migrations/2018_07_20_151049_create_customers_table.php +++ b/packages/Webkul/Customer/src/Database/migrations/2018_07_24_082930_create_customers_table.php @@ -15,6 +15,14 @@ class CreateCustomersTable extends Migration { Schema::create('customers', function (Blueprint $table) { $table->increments('id'); + $table->string('first_name'); + $table->string('last_name'); + $table->string('email'); + $table->string('password'); + $table->integer('customer_group_id')->unsigned()->nullable(); + $table->integer('address_id')->unsigned()->nullable(); + $table->foreign('customer_group_id')->references('id')->on('customer_groups')->onDelete('cascade'); + $table->foreign('address_id')->references('id')->on('customer_addresses')->onDelete('cascade'); $table->timestamps(); }); } diff --git a/packages/Webkul/Customer/src/Http/Controllers/Controller.php b/packages/Webkul/Customer/src/Http/Controllers/Controller.php new file mode 100644 index 000000000..1438736c3 --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) @@ -25,17 +28,14 @@ class CustomerController extends Controller { $this->_config = request('_config'); } - public function index() - { - return view('customer::login.index'); - } - public function login() - { - return view($this->_config['view']); - } - - public function signup() + /** + * For taking the customer + * to the dashboard after + * authentication + * @return view + */ + public function dashboard() { return view($this->_config['view']); } diff --git a/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php new file mode 100644 index 000000000..7274614e0 --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php @@ -0,0 +1,67 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class RegistrationController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + protected $_config; + + public function __construct() + { + $this->_config = request('_config'); + } + + /** + * For showing the registration form + * @return view + */ + public function show() + { + return view($this->_config['view']); + } + + /** + * For collecting the registration + * data from the registraion form + * @return view + */ + public function create(Request $request) + { + // return $request->except('_token'); //don't let csrf token to be openly printed + $request->validate([ + 'first_name' => 'string|required', + 'last_name' => 'string|required', + 'email' => 'email|required', + 'password' => 'confirmed|min:8|required' + ]); + $customer = new \Webkul\Customer\Models\Customer(); + $customer->first_name = $request->first_name; + $customer->last_name = $request->last_name; + $customer->email = $request->email; + $customer->password = bcrypt($request->password); + // dd('hello1'); + if ($customer->save()) { + session()->flash('success', 'Account created successfully.'); + return redirect()->route($this->_config['redirect']); + } else { + session()->flash('error', 'Cannot Create Your Account.'); + return redirect()->back(); + } + } +} diff --git a/packages/Webkul/Customer/src/Http/Controllers/SessionController.php b/packages/Webkul/Customer/src/Http/Controllers/SessionController.php new file mode 100644 index 000000000..81c56d2b5 --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/SessionController.php @@ -0,0 +1,58 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SessionController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + protected $_config; + + public function __construct() + { + $this->_config = request('_config'); + } + + public function show() + { + return view($this->_config['view']); + } + + public function create(Request $request) + { + $request->validate([ + 'email' => 'required|email', + 'password' => 'required' + ]); + + // $remember = request('remember'); + if (!auth()->guard('customer')->attempt(request(['email', 'password']))) { + dd('cannot be authorized'); + session()->flash('error', 'Please check your credentials and try again.'); + + return back(); + } + + return redirect()->route($this->_config['redirect']); + } + + public function destroy($id) + { + auth()->guard('customer')->logout(); + return redirect()->route($this->_config['redirect']); + } +} diff --git a/packages/Webkul/Customer/src/Http/Middleware/RedirectIfNotCustomer.php b/packages/Webkul/Customer/src/Http/Middleware/RedirectIfNotCustomer.php index 7c386b90a..797dc81b8 100644 --- a/packages/Webkul/Customer/src/Http/Middleware/RedirectIfNotCustomer.php +++ b/packages/Webkul/Customer/src/Http/Middleware/RedirectIfNotCustomer.php @@ -1,6 +1,6 @@ check()) { - return redirect()->route('admin.login'); + return redirect()->route('customer.session.index'); } return $next($request); diff --git a/packages/Webkul/Customer/src/Http/routes.php b/packages/Webkul/Customer/src/Http/routes.php index 67d5d3e14..f2cf0cab7 100644 --- a/packages/Webkul/Customer/src/Http/routes.php +++ b/packages/Webkul/Customer/src/Http/routes.php @@ -2,20 +2,38 @@ Route::group(['middleware' => ['web']], function () { Route::prefix('customer')->group(function () { - // Login Routes - Route::get('/login', 'Webkul\Customer\Http\Controllers\CustomerController@login')->defaults('_config', [ - 'view' => 'customer::login.index' - ])->name('customer.login'); - Route::get('/register', 'Webkul\Customer\Http\Controllers\CustomerController@signup')->defaults('_config', [ - 'view' => 'customer::signup.index' - ])->name('customer.register'); + // Login Routes + Route::get('/login', 'Webkul\Customer\Http\Controllers\SessionController@show')->defaults('_config', [ + 'view' => 'customer::login.index', + ])->name('customer.session.index'); + + Route::post('/login', 'Webkul\Customer\Http\Controllers\SessionController@create')->defaults('_config', [ + 'redirect' => 'customer.dashboard.index' + ])->name('customer.session.create'); + + + // Registration Routes + Route::get('/register', 'Webkul\Customer\Http\Controllers\RegistrationController@show')->defaults('_config', [ + 'view' => 'customer::signup.index' //hint path + ])->name('customer.register.index'); + + Route::post('/register', 'Webkul\Customer\Http\Controllers\RegistrationController@create')->defaults('_config', [ + 'redirect' => 'customer.dashboard.index', + ])->name('customer.register.create'); // Auth Routes Route::group(['middleware' => ['customer']], function () { - Route::get('/logout', 'Webkul\Customer\Http\Controllers\CustomerController@logout')->defaults('_config', [ + + //route for logout which will be under the auth guard of the customer by default + Route::get('/logout', 'Webkul\Customer\Http\Controllers\SessionController@logout')->defaults('_config', [ 'redirect' => 'customer.session.index' ])->name('customer.session.destroy'); + + //customer dashboard + Route::get('/dashboard', 'Webkul\Customer\Http\Controllers\CustomerController@dashboard')->defaults('_config', [ + 'view' => 'customer::dashboard.index' + ])->name('customer.dashboard.index'); }); }); }); diff --git a/packages/Webkul/Customer/src/Models/Customer.php b/packages/Webkul/Customer/src/Models/Customer.php index a0b9fa918..01a2227bb 100644 --- a/packages/Webkul/Customer/src/Models/Customer.php +++ b/packages/Webkul/Customer/src/Models/Customer.php @@ -1,9 +1,18 @@ aliasMiddleware('customer', RedirectIfNotCustomer::class); - $this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + $this->loadMigrationsFrom(__DIR__ . '/../Database/migrations'); $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'customer'); } diff --git a/packages/Webkul/Customer/src/Resources/assets/sass/app.scss b/packages/Webkul/Customer/src/Resources/assets/sass/app.scss index 7962137f6..8d1c0a15d 100644 --- a/packages/Webkul/Customer/src/Resources/assets/sass/app.scss +++ b/packages/Webkul/Customer/src/Resources/assets/sass/app.scss @@ -64,3 +64,44 @@ } } } + +.dashboard-content { + width: 100%; + margin-top: 5.5%; + margin-bottom: 5.5%; + + .dashboard-side-menu { + display: flex; + flex-direction: column; + align-content: center; + justify-content: center; + border: 1px solid #e8e8e8; + border-right: none; + background: #ffffff; + width: 25%; + text-transform: capitalize; + + li { + font-size: 16px; + width: 95%; + height: 50px; + margin-left: 15px; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + border: 1px solid $border-color; + border-left: none; + border-bottom: none; + text-align: center; + } + li:first-child { + border-top: none; + border-left: none; + border-bottom: none; + } + li:last-child { + border-bottom: none; + } + } +} diff --git a/packages/Webkul/Customer/src/Resources/views/dashboard/index.blade.php b/packages/Webkul/Customer/src/Resources/views/dashboard/index.blade.php new file mode 100644 index 000000000..96debeb75 --- /dev/null +++ b/packages/Webkul/Customer/src/Resources/views/dashboard/index.blade.php @@ -0,0 +1,12 @@ +@extends('customer::layouts.master') +@section('content-wrapper') +
+ +
+@endsection diff --git a/packages/Webkul/Customer/src/Resources/views/login/index.blade.php b/packages/Webkul/Customer/src/Resources/views/login/index.blade.php index 0c3813930..422cc02b3 100644 --- a/packages/Webkul/Customer/src/Resources/views/login/index.blade.php +++ b/packages/Webkul/Customer/src/Resources/views/login/index.blade.php @@ -2,9 +2,10 @@ @section('content-wrapper')
-
+ + {{ csrf_field() }}