diff --git a/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php b/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php index a2189e0f6..1833eaa12 100644 --- a/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php +++ b/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php @@ -14,9 +14,9 @@ class AttributeTableSeeder extends Seeder [ 'code' => 'sku', 'admin_name' => 'SKU', - // 'en' => [ - // 'name' => 'SKU' - // ], + 'en' => [ + 'name' => 'SKU' + ], 'type' => 'text', 'position' => 1, 'is_unique' => 1, @@ -29,9 +29,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'name', 'admin_name' => 'Name', - // 'en' => [ - // 'name' => 'Name' - // ], + 'en' => [ + 'name' => 'Name' + ], 'type' => 'text', 'position' => 2, 'is_required' => 1, @@ -43,9 +43,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'url_key', 'admin_name' => 'URL Key', - // 'en' => [ - // 'name' => 'URL Key' - // ], + 'en' => [ + 'name' => 'URL Key' + ], 'type' => 'text', 'position' => 3, 'is_unique' => 1, @@ -58,9 +58,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'new_from', 'admin_name' => 'New From', - // 'en' => [ - // 'name' => 'New From' - // ], + 'en' => [ + 'name' => 'New From' + ], 'type' => 'datetime', 'position' => 4, 'is_required' => 0, @@ -72,9 +72,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'new_to', 'admin_name' => 'New To', - // 'en' => [ - // 'name' => 'New To' - // ], + 'en' => [ + 'name' => 'New To' + ], 'type' => 'datetime', 'position' => 5, 'is_required' => 0, @@ -86,9 +86,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'visible_individually', 'admin_name' => 'Visible Individually', - // 'en' => [ - // 'name' => 'Visible Individually' - // ], + 'en' => [ + 'name' => 'Visible Individually' + ], 'type' => 'boolean', 'position' => 6, 'is_required' => 1, @@ -100,9 +100,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'status', 'admin_name' => 'Status', - // 'en' => [ - // 'name' => 'Status' - // ], + 'en' => [ + 'name' => 'Status' + ], 'type' => 'boolean', 'position' => 7, 'is_required' => 1, @@ -114,9 +114,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'short_description', 'admin_name' => 'Short Description', - // 'en' => [ - // 'name' => 'Short Description' - // ], + 'en' => [ + 'name' => 'Short Description' + ], 'type' => 'textarea', 'position' => 8, 'is_required' => 1, @@ -128,9 +128,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'description', 'admin_name' => 'Description', - // 'en' => [ - // 'name' => 'Description' - // ], + 'en' => [ + 'name' => 'Description' + ], 'type' => 'textarea', 'position' => 9, 'is_required' => 1, @@ -142,9 +142,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'price', 'admin_name' => 'Price', - // 'en' => [ - // 'name' => 'Price' - // ], + 'en' => [ + 'name' => 'Price' + ], 'type' => 'price', 'position' => 10, 'is_required' => 1, @@ -156,9 +156,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'cost', 'admin_name' => 'Cost', - // 'en' => [ - // 'name' => 'Cost' - // ], + 'en' => [ + 'name' => 'Cost' + ], 'type' => 'price', 'position' => 11, 'is_required' => 0, @@ -170,9 +170,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'special_price', 'admin_name' => 'Special Price', - // 'en' => [ - // 'name' => 'Special Price' - // ], + 'en' => [ + 'name' => 'Special Price' + ], 'type' => 'price', 'position' => 12, 'is_required' => 0, @@ -184,9 +184,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'special_price_from', 'admin_name' => 'Special Price From', - // 'en' => [ - // 'name' => 'Special Price From' - // ], + 'en' => [ + 'name' => 'Special Price From' + ], 'type' => 'date', 'position' => 13, 'is_required' => 0, @@ -198,9 +198,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'special_price_to', 'admin_name' => 'Special Price To', - // 'en' => [ - // 'name' => 'Special Price To' - // ], + 'en' => [ + 'name' => 'Special Price To' + ], 'type' => 'date', 'position' => 14, 'is_required' => 0, @@ -212,9 +212,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'meta_title', 'admin_name' => 'Meta Title', - // 'en' => [ - // 'name' => 'Meta Description' - // ], + 'en' => [ + 'name' => 'Meta Description' + ], 'type' => 'textarea', 'position' => 15, 'is_required' => 0, @@ -226,9 +226,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'meta_keywords', 'admin_name' => 'Meta Keywords', - // 'en' => [ - // 'name' => 'Meta Keywords' - // ], + 'en' => [ + 'name' => 'Meta Keywords' + ], 'type' => 'textarea', 'position' => 16, 'is_required' => 0, @@ -240,9 +240,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'meta_description', 'admin_name' => 'Meta Description', - // 'en' => [ - // 'name' => 'Meta Description' - // ], + 'en' => [ + 'name' => 'Meta Description' + ], 'type' => 'textarea', 'position' => 17, 'is_required' => 0, @@ -254,9 +254,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'width', 'admin_name' => 'Width', - // 'en' => [ - // 'name' => 'Width' - // ], + 'en' => [ + 'name' => 'Width' + ], 'type' => 'text', 'validation' => 'numeric', 'position' => 18, @@ -269,9 +269,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'height', 'admin_name' => 'Height', - // 'en' => [ - // 'name' => 'Height' - // ], + 'en' => [ + 'name' => 'Height' + ], 'type' => 'text', 'validation' => 'numeric', 'position' => 19, @@ -284,9 +284,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'depth', 'admin_name' => 'Depth', - // 'en' => [ - // 'name' => 'Depth' - // ], + 'en' => [ + 'name' => 'Depth' + ], 'type' => 'text', 'validation' => 'numeric', 'position' => 20, @@ -299,9 +299,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'weight', 'admin_name' => 'Weight', - // 'en' => [ - // 'name' => 'Weight' - // ], + 'en' => [ + 'name' => 'Weight' + ], 'type' => 'text', 'validation' => 'numeric', 'position' => 21, @@ -314,9 +314,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'color', 'admin_name' => 'Color', - // 'en' => [ - // 'name' => 'Color' - // ], + 'en' => [ + 'name' => 'Color' + ], 'type' => 'select', 'position' => 22, 'is_required' => 0, @@ -356,9 +356,9 @@ class AttributeTableSeeder extends Seeder ], [ 'code' => 'size', 'admin_name' => 'Size', - // 'en' => [ - // 'name' => 'Size' - // ], + 'en' => [ + 'name' => 'Size' + ], 'type' => 'select', 'position' => 23, 'is_required' => 0, diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index f3b5ed43d..2bcae6c20 100644 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -636,7 +636,7 @@ class Cart { $cart->sub_total = 0; $cart->base_sub_total = 0; - + $cart->tax_total = 0; $cart->base_tax_total = 0; diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2018_09_05_150444_create_cart_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_05_150444_create_cart_table.php index dfe93a40a..3f94c8b5b 100644 --- a/packages/Webkul/Checkout/src/Database/Migrations/2018_09_05_150444_create_cart_table.php +++ b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_05_150444_create_cart_table.php @@ -47,9 +47,6 @@ class CreateCartTable extends Migration $table->string('checkout_method')->nullable(); $table->boolean('is_guest')->nullable(); $table->boolean('is_active')->nullable()->default(1); - $table->string('customer_first_name')->nullable(); - $table->string('customer_last_name')->nullable(); - $table->string('customer_email')->nullable(); $table->dateTime('conversion_time')->nullable(); $table->integer('customer_id')->unsigned()->nullable(); diff --git a/packages/Webkul/Checkout/src/Models/Cart.php b/packages/Webkul/Checkout/src/Models/Cart.php index d3ba95f1b..dcd18493b 100644 --- a/packages/Webkul/Checkout/src/Models/Cart.php +++ b/packages/Webkul/Checkout/src/Models/Cart.php @@ -13,7 +13,7 @@ class Cart extends Model { protected $table = 'cart'; - protected $fillable = ['customer_id', 'session_id', 'channel_id', 'coupon_code', 'is_gift', 'items_count', 'items_qty', 'exchange_rate', 'global_currency_code', 'base_currency_code', 'channel_currency_code', 'cart_currency_code', 'grand_total', 'base_grand_total', 'sub_total', 'base_sub_total', 'sub_total_with_discount', 'base_sub_total_with_discount', 'checkout_method', 'is_guest', 'is_active', 'customer_first_name', 'conversion_time']; + protected $guarded = ['id', 'created_at', 'updated_at']; protected $hidden = ['coupon_code']; diff --git a/packages/Webkul/Checkout/src/Models/CartItem.php b/packages/Webkul/Checkout/src/Models/CartItem.php index f6d284d95..2c58c798a 100644 --- a/packages/Webkul/Checkout/src/Models/CartItem.php +++ b/packages/Webkul/Checkout/src/Models/CartItem.php @@ -13,7 +13,7 @@ class CartItem extends Model 'additional' => 'array', ]; - protected $fillable = ['product_id', 'quantity', 'cart_id', 'sku', 'type', 'name', 'parent_id','tax_category_id', 'coupon_code', 'weight', 'total_weight', 'base_total_weight', 'price', 'total', 'base_total', 'total_with_discount', 'base_total_with_discount', 'base_price', 'custom_price', 'discount_percent', 'discount_amount', 'base_discount_amount', 'no_discount', 'free_shipping', 'additional']; + protected $guarded = ['id', 'created_at', 'updated_at']; public function product() { return $this->hasOne('Webkul\Product\Models\Product', 'id', 'product_id'); diff --git a/packages/Webkul/Customer/src/Http/Controllers/AddressController.php b/packages/Webkul/Customer/src/Http/Controllers/AddressController.php index 0a658b2fe..9ca161166 100644 --- a/packages/Webkul/Customer/src/Http/Controllers/AddressController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/AddressController.php @@ -111,7 +111,7 @@ class AddressController extends Controller 'country' => 'string|required', 'state' => 'string|required', 'city' => 'string|required', - 'postcode' => 'numeric|required', + 'postcode' => 'required', ]); @@ -171,7 +171,7 @@ class AddressController extends Controller 'country' => 'string|required', 'state' => 'string|required', 'city' => 'string|required', - 'postcode' => 'numeric|required', + 'postcode' => 'required', ]); diff --git a/packages/Webkul/Customer/src/Http/Controllers/ForgotPasswordController.php b/packages/Webkul/Customer/src/Http/Controllers/ForgotPasswordController.php new file mode 100644 index 000000000..2323cae0e --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/ForgotPasswordController.php @@ -0,0 +1,79 @@ +_config = request('_config'); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'email' => 'required|email' + ]); + + $response = $this->broker()->sendResetLink( + request(['email']) + ); + //dd($response); + if($response == Password::RESET_LINK_SENT) { + session()->flash('success', trans($response)); + + return back(); + } + + return back() + ->withInput(request(['email'])) + ->withErrors( + ['email' => trans($response)] + ); + } + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('customers'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Http/Controllers/ResetPasswordController.php b/packages/Webkul/Customer/src/Http/Controllers/ResetPasswordController.php new file mode 100644 index 000000000..78629ee8b --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/ResetPasswordController.php @@ -0,0 +1,113 @@ +_config = request('_config'); + } + + /** + * Display the password reset view for the given token. + * + * If no token is present, display the link request form. + * + * @param \Illuminate\Http\Request $request + * @param string|null $token + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function create(Request $request, $token = null) + { + return view($this->_config['view'])->with( + ['token' => $token, 'email' => $request->email] + ); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + //dd(request()->input()); + $this->validate(request(), [ + 'token' => 'required', + 'email' => 'required|email', + 'password' => 'required|confirmed|min:6', + ]); + + $response = $this->broker()->reset( + request(['email', 'password', 'password_confirmation', 'token']), function ($customer, $password) { + $this->resetPassword($customer, $password); + } + ); + // dd($response); + if($response == Password::PASSWORD_RESET) { + return redirect()->route($this->_config['redirect']); + } + + return back() + ->withInput(request(['email'])) + ->withErrors([ + 'email' => trans($response) + ]); + } + + /** + * Reset the given customer password. + * + * @param \Illuminate\Contracts\Auth\CanResetPassword $customer + * @param string $password + * @return void + */ + protected function resetPassword($customer, $password) + { + $customer->password = Hash::make($password); + + $customer->setRememberToken(Str::random(60)); + + $customer->save(); + + event(new PasswordReset($customer)); + + auth()->guard('customer')->login($customer); + } + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('customers'); + } + +} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Http/routes.php b/packages/Webkul/Shop/src/Http/routes.php index 4bb0da274..a550ce759 100644 --- a/packages/Webkul/Shop/src/Http/routes.php +++ b/packages/Webkul/Shop/src/Http/routes.php @@ -67,6 +67,21 @@ Route::group(['middleware' => ['web']], function () { // 'redirect' => 'admin.reviews.index' // ])->name('admin.reviews.store'); + // forgot Password Routes + Route::get('/forgot-password', 'Webkul\Customer\Http\Controllers\ForgotPasswordController@create')->defaults('_config', [ + 'view' => 'shop::customers.signup.forgot-password' + ])->name('customer.forgot-password.create'); + + Route::post('/forgot-password', 'Webkul\Customer\Http\Controllers\ForgotPasswordController@store')->name('customer.forgot-password.store'); + + //Reset Password create + Route::get('/reset-password/{token}', 'Webkul\Customer\Http\Controllers\ResetPasswordController@create')->defaults('_config', [ + 'view' => 'shop::customers.signup.reset-password' + ])->name('password.reset'); + + Route::post('/reset-password', 'Webkul\Customer\Http\Controllers\ResetPasswordController@store')->defaults('_config', [ + 'redirect' => 'customer.session.index' + ])->name('customer.reset-password.store'); //customer routes starts here Route::prefix('customer')->group(function () { diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/app.scss b/packages/Webkul/Shop/src/Resources/assets/sass/app.scss index 6ccec0b9e..c39f42f4f 100644 --- a/packages/Webkul/Shop/src/Resources/assets/sass/app.scss +++ b/packages/Webkul/Shop/src/Resources/assets/sass/app.scss @@ -786,7 +786,7 @@ section.slider-block { margin-left: auto; margin-right: auto; display: flex; - background: #f2f2f2; + border: 1px solid $border-color; flex-direction: column; max-width: 530px; @@ -848,7 +848,7 @@ section.slider-block { align-content: center; justify-content: flex-start; border: 1px solid $border-color; - background: #f2f2f2; + width: 25%; height: 100%; text-transform: capitalize; @@ -934,6 +934,31 @@ section.slider-block { margin-top: 1%; width: 100%; + .section-head { + .profile-heading { + font-size: 28px; + color: $font-color; + text-transform: capitalize; + text-align: left; + } + + .profile-edit { + font-size: 17px; + margin-top: 1%; + color: $brand-color; + letter-spacing: -0.11px; + float: right; + } + + .horizontal-rule { + margin-top: 1.1%; + width: 100%; + height: 1px; + vertical-align: middle; + background: $border-color; + } + } + .edit-text { margin-bottom: 2%; margin-left: auto; @@ -943,7 +968,7 @@ section.slider-block { .edit-form { display: flex; - background: #f2f2f2; + border: 1px solid $border-color; flex-direction: column; min-height: 345px; diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/components.scss b/packages/Webkul/Shop/src/Resources/assets/sass/components.scss index 11278ce3d..10d7f0ddd 100644 --- a/packages/Webkul/Shop/src/Resources/assets/sass/components.scss +++ b/packages/Webkul/Shop/src/Resources/assets/sass/components.scss @@ -10,8 +10,7 @@ .product-grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); - grid-column-gap: 27px; - grid-row-gap: 15px; + grid-gap: 27px; grid-auto-rows: auto; } diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/address/address.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/address/address.blade.php index caf55b7b4..60782f82b 100644 --- a/packages/Webkul/Shop/src/Resources/views/customers/account/address/address.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/address/address.blade.php @@ -1,5 +1,9 @@ @extends('shop::layouts.master') +@section('page_title') +Customer - Address +@endsection + @section('content-wrapper')