diff --git a/composer.json b/composer.json
index 684fd4891..0b5a05026 100755
--- a/composer.json
+++ b/composer.json
@@ -9,12 +9,12 @@
"type": "project",
"require": {
"php": "^7.1.3",
+ "ext-curl": "*",
+ "ext-mbstring": "*",
"ext-openssl": "*",
"ext-pdo": "*",
- "ext-mbstring": "*",
- "ext-tokenizer": "*",
"ext-pdo_mysql": "*",
- "ext-curl": "*",
+ "ext-tokenizer": "*",
"barryvdh/laravel-dompdf": "^0.8.0@dev",
"dimsav/laravel-translatable": "^9.0",
"doctrine/dbal": "^2.9@dev",
@@ -29,7 +29,8 @@
"maatwebsite/excel": "3.1.x-dev",
"nwidart/laravel-modules": "^3.2",
"prettus/l5-repository": "^2.6",
- "propaganistas/laravel-intl": "^2.0"
+ "propaganistas/laravel-intl": "^2.0",
+ "tymon/jwt-auth": "dev-develop"
},
"require-dev": {
"barryvdh/laravel-debugbar": "^3.1",
diff --git a/config/auth.php b/config/auth.php
index caa89e114..6b8c92e4b 100755
--- a/config/auth.php
+++ b/config/auth.php
@@ -13,7 +13,7 @@ return [
],
'api' => [
- 'driver' => 'token',
+ 'driver' => 'jwt',
'provider' => 'customers',
],
diff --git a/config/debugbar.php b/config/debugbar.php
index c7c9ceee3..0d8a281ba 100755
--- a/config/debugbar.php
+++ b/config/debugbar.php
@@ -9,14 +9,14 @@ return [
|
| Debugbar is enabled by default, when debug is set to true in app.php.
| You can override the value by setting enable to true or false instead of null.
- |
+ |
| You can provide an array of URI's that must be ignored (eg. 'api/*')
|
*/
'enabled' => env('DEBUGBAR_ENABLED', null),
'except' => [
- 'telescope*'
+ //
],
/*
@@ -79,7 +79,7 @@ return [
|
*/
'error_handler' => false,
-
+
/*
|--------------------------------------------------------------------------
| Clockwork integration
@@ -198,4 +198,4 @@ return [
| To override default domain, specify it as a non-empty value.
*/
'route_domain' => null,
-];
+];
\ No newline at end of file
diff --git a/config/excel.php b/config/excel.php
index af3e8bb99..28cf95fd1 100755
--- a/config/excel.php
+++ b/config/excel.php
@@ -109,4 +109,4 @@ return [
*/
'pdf' => Excel::DOMPDF,
],
-];
+];
\ No newline at end of file
diff --git a/config/jwt.php b/config/jwt.php
new file mode 100644
index 000000000..8b7843b6b
--- /dev/null
+++ b/config/jwt.php
@@ -0,0 +1,304 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+
+ /*
+ |--------------------------------------------------------------------------
+ | JWT Authentication Secret
+ |--------------------------------------------------------------------------
+ |
+ | Don't forget to set this in your .env file, as it will be used to sign
+ | your tokens. A helper command is provided for this:
+ | `php artisan jwt:secret`
+ |
+ | Note: This will be used for Symmetric algorithms only (HMAC),
+ | since RSA and ECDSA use a private/public key combo (See below).
+ |
+ */
+
+ 'secret' => env('JWT_SECRET'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | JWT Authentication Keys
+ |--------------------------------------------------------------------------
+ |
+ | The algorithm you are using, will determine whether your tokens are
+ | signed with a random string (defined in `JWT_SECRET`) or using the
+ | following public & private keys.
+ |
+ | Symmetric Algorithms:
+ | HS256, HS384 & HS512 will use `JWT_SECRET`.
+ |
+ | Asymmetric Algorithms:
+ | RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below.
+ |
+ */
+
+ 'keys' => [
+
+ /*
+ |--------------------------------------------------------------------------
+ | Public Key
+ |--------------------------------------------------------------------------
+ |
+ | A path or resource to your public key.
+ |
+ | E.g. 'file://path/to/public/key'
+ |
+ */
+
+ 'public' => env('JWT_PUBLIC_KEY'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Private Key
+ |--------------------------------------------------------------------------
+ |
+ | A path or resource to your private key.
+ |
+ | E.g. 'file://path/to/private/key'
+ |
+ */
+
+ 'private' => env('JWT_PRIVATE_KEY'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Passphrase
+ |--------------------------------------------------------------------------
+ |
+ | The passphrase for your private key. Can be null if none set.
+ |
+ */
+
+ 'passphrase' => env('JWT_PASSPHRASE'),
+
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | JWT time to live
+ |--------------------------------------------------------------------------
+ |
+ | Specify the length of time (in minutes) that the token will be valid for.
+ | Defaults to 1 hour.
+ |
+ | You can also set this to null, to yield a never expiring token.
+ | Some people may want this behaviour for e.g. a mobile app.
+ | This is not particularly recommended, so make sure you have appropriate
+ | systems in place to revoke the token if necessary.
+ | Notice: If you set this to null you should remove 'exp' element from 'required_claims' list.
+ |
+ */
+
+ 'ttl' => env('JWT_TTL', 60),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Refresh time to live
+ |--------------------------------------------------------------------------
+ |
+ | Specify the length of time (in minutes) that the token can be refreshed
+ | within. I.E. The user can refresh their token within a 2 week window of
+ | the original token being created until they must re-authenticate.
+ | Defaults to 2 weeks.
+ |
+ | You can also set this to null, to yield an infinite refresh time.
+ | Some may want this instead of never expiring tokens for e.g. a mobile app.
+ | This is not particularly recommended, so make sure you have appropriate
+ | systems in place to revoke the token if necessary.
+ |
+ */
+
+ 'refresh_ttl' => env('JWT_REFRESH_TTL', 20160),
+
+ /*
+ |--------------------------------------------------------------------------
+ | JWT hashing algorithm
+ |--------------------------------------------------------------------------
+ |
+ | Specify the hashing algorithm that will be used to sign the token.
+ |
+ | See here: https://github.com/namshi/jose/tree/master/src/Namshi/JOSE/Signer/OpenSSL
+ | for possible values.
+ |
+ */
+
+ 'algo' => env('JWT_ALGO', 'HS256'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Required Claims
+ |--------------------------------------------------------------------------
+ |
+ | Specify the required claims that must exist in any token.
+ | A TokenInvalidException will be thrown if any of these claims are not
+ | present in the payload.
+ |
+ */
+
+ 'required_claims' => [
+ 'iss',
+ 'iat',
+ 'exp',
+ 'nbf',
+ 'sub',
+ 'jti',
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Persistent Claims
+ |--------------------------------------------------------------------------
+ |
+ | Specify the claim keys to be persisted when refreshing a token.
+ | `sub` and `iat` will automatically be persisted, in
+ | addition to the these claims.
+ |
+ | Note: If a claim does not exist then it will be ignored.
+ |
+ */
+
+ 'persistent_claims' => [
+ // 'foo',
+ // 'bar',
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Lock Subject
+ |--------------------------------------------------------------------------
+ |
+ | This will determine whether a `prv` claim is automatically added to
+ | the token. The purpose of this is to ensure that if you have multiple
+ | authentication models e.g. `App\User` & `App\OtherPerson`, then we
+ | should prevent one authentication request from impersonating another,
+ | if 2 tokens happen to have the same id across the 2 different models.
+ |
+ | Under specific circumstances, you may want to disable this behaviour
+ | e.g. if you only have one authentication model, then you would save
+ | a little on token size.
+ |
+ */
+
+ 'lock_subject' => true,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Leeway
+ |--------------------------------------------------------------------------
+ |
+ | This property gives the jwt timestamp claims some "leeway".
+ | Meaning that if you have any unavoidable slight clock skew on
+ | any of your servers then this will afford you some level of cushioning.
+ |
+ | This applies to the claims `iat`, `nbf` and `exp`.
+ |
+ | Specify in seconds - only if you know you need it.
+ |
+ */
+
+ 'leeway' => env('JWT_LEEWAY', 0),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Blacklist Enabled
+ |--------------------------------------------------------------------------
+ |
+ | In order to invalidate tokens, you must have the blacklist enabled.
+ | If you do not want or need this functionality, then set this to false.
+ |
+ */
+
+ 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true),
+
+ /*
+ | -------------------------------------------------------------------------
+ | Blacklist Grace Period
+ | -------------------------------------------------------------------------
+ |
+ | When multiple concurrent requests are made with the same JWT,
+ | it is possible that some of them fail, due to token regeneration
+ | on every request.
+ |
+ | Set grace period in seconds to prevent parallel request failure.
+ |
+ */
+
+ 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Cookies encryption
+ |--------------------------------------------------------------------------
+ |
+ | By default Laravel encrypt cookies for security reason.
+ | If you decide to not decrypt cookies, you will have to configure Laravel
+ | to not encrypt your cookie token by adding its name into the $except
+ | array available in the middleware "EncryptCookies" provided by Laravel.
+ | see https://laravel.com/docs/master/responses#cookies-and-encryption
+ | for details.
+ |
+ | Set it to true if you want to decrypt cookies.
+ |
+ */
+
+ 'decrypt_cookies' => false,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Providers
+ |--------------------------------------------------------------------------
+ |
+ | Specify the various providers used throughout the package.
+ |
+ */
+
+ 'providers' => [
+
+ /*
+ |--------------------------------------------------------------------------
+ | JWT Provider
+ |--------------------------------------------------------------------------
+ |
+ | Specify the provider that is used to create and decode the tokens.
+ |
+ */
+
+ 'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Authentication Provider
+ |--------------------------------------------------------------------------
+ |
+ | Specify the provider that is used to authenticate users.
+ |
+ */
+
+ 'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Storage Provider
+ |--------------------------------------------------------------------------
+ |
+ | Specify the provider that is used to store tokens in the blacklist.
+ |
+ */
+
+ 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,
+
+ ],
+
+];
diff --git a/config/tinker.php b/config/tinker.php
index 181f0fdbd..2405c8b0a 100755
--- a/config/tinker.php
+++ b/config/tinker.php
@@ -2,21 +2,6 @@
return [
- /*
- |--------------------------------------------------------------------------
- | Console Commands
- |--------------------------------------------------------------------------
- |
- | This option allows you to add additional Artisan commands that should
- | be available within the Tinker environment. Once the command is in
- | this array you may execute the command in Tinker using its name.
- |
- */
-
- 'commands' => [
- // App\Console\Commands\ExampleCommand::class,
- ],
-
/*
|--------------------------------------------------------------------------
| Alias Blacklist
@@ -30,4 +15,4 @@ return [
'dont_alias' => [],
-];
+];
\ No newline at end of file
diff --git a/config/translatable.php b/config/translatable.php
index 17bf04aac..1ef910d3e 100755
--- a/config/translatable.php
+++ b/config/translatable.php
@@ -54,7 +54,7 @@ return [
| $useTranslationFallback when defined
|
*/
- 'use_fallback' => true,
+ 'use_fallback' => false,
/*
|--------------------------------------------------------------------------
@@ -113,4 +113,4 @@ return [
|
*/
'to_array_always_loads_translations' => true,
-];
\ No newline at end of file
+];
diff --git a/config/trustedproxy.php b/config/trustedproxy.php
index acda8d51a..6f8257058 100755
--- a/config/trustedproxy.php
+++ b/config/trustedproxy.php
@@ -31,15 +31,15 @@ return [
/*
* Which headers to use to detect proxy related data (For, Host, Proto, Port)
- *
+ *
* Options include:
- *
+ *
* - Illuminate\Http\Request::HEADER_X_FORWARDED_ALL (use all x-forwarded-* headers to establish trust)
* - Illuminate\Http\Request::HEADER_FORWARDED (use the FORWARDED header to establish trust)
- *
+ *
* @link https://symfony.com/doc/current/deployment/proxies.html
*/
'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_ALL,
-
-];
+
+];
\ No newline at end of file
diff --git a/packages/Webkul/Admin/src/Config/acl.php b/packages/Webkul/Admin/src/Config/acl.php
index 56cc3663e..86805a05d 100755
--- a/packages/Webkul/Admin/src/Config/acl.php
+++ b/packages/Webkul/Admin/src/Config/acl.php
@@ -36,41 +36,81 @@ return [
'name' => 'admin::app.acl.products',
'route' => 'admin.catalog.products.index',
'sort' => 1
+ ], [
+ 'key' => 'catalog.products.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.catalog.products.create',
+ 'sort' => 1
], [
'key' => 'catalog.products.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.catalog.products.edit',
- 'sort' => 1
+ 'sort' => 2
+ ], [
+ 'key' => 'catalog.products.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.catalog.products.delete',
+ 'sort' => 3
], [
'key' => 'catalog.categories',
'name' => 'admin::app.acl.categories',
'route' => 'admin.catalog.categories.index',
'sort' => 2
+ ], [
+ 'key' => 'catalog.categories.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.catalog.categories.create',
+ 'sort' => 1
], [
'key' => 'catalog.categories.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.catalog.categories.edit',
'sort' => 2
+ ], [
+ 'key' => 'catalog.categories.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.catalog.categories.delete',
+ 'sort' => 3
], [
'key' => 'catalog.attributes',
'name' => 'admin::app.acl.attributes',
'route' => 'admin.catalog.attributes.index',
'sort' => 3
+ ], [
+ 'key' => 'catalog.attributes.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.catalog.attributes.create',
+ 'sort' => 1
], [
'key' => 'catalog.attributes.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.catalog.attributes.edit',
+ 'sort' => 2
+ ], [
+ 'key' => 'catalog.attributes.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.catalog.attributes.delete',
'sort' => 3
], [
'key' => 'catalog.families',
'name' => 'admin::app.acl.attribute-families',
'route' => 'admin.catalog.families.index',
'sort' => 4
+ ], [
+ 'key' => 'catalog.families.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.catalog.families.create',
+ 'sort' => 1
], [
'key' => 'catalog.families.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.catalog.families.edit',
- 'sort' => 4
+ 'sort' => 2
+ ], [
+ 'key' => 'catalog.families.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.catalog.families.delete',
+ 'sort' => 3
], [
'key' => 'customers',
'name' => 'admin::app.acl.customers',
@@ -81,21 +121,41 @@ return [
'name' => 'admin::app.acl.customers',
'route' => 'admin.customer.index',
'sort' => 1
+ ], [
+ 'key' => 'customers.customers.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.customer.create',
+ 'sort' => 1
], [
'key' => 'customers.customers.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.customer.edit',
- 'sort' => 1
+ 'sort' => 2
+ ], [
+ 'key' => 'customers.customers.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.customer.delete',
+ 'sort' => 3
], [
'key' => 'customers.groups',
'name' => 'admin::app.acl.groups',
'route' => 'admin.groups.index',
'sort' => 2
+ ], [
+ 'key' => 'customers.groups.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.groups.create',
+ 'sort' => 1
], [
'key' => 'customers.groups.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.groups.edit',
'sort' => 2
+ ], [
+ 'key' => 'customers.groups.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.groups.delete',
+ 'sort' => 3
], [
'key' => 'customers.reviews',
'name' => 'admin::app.acl.reviews',
@@ -105,7 +165,12 @@ return [
'key' => 'customers.reviews.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.customer.review.edit',
- 'sort' => 3
+ 'sort' => 1
+ ], [
+ 'key' => 'customers.reviews.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.customer.review.delete',
+ 'sort' => 2
], [
'key' => 'configuration',
'name' => 'admin::app.acl.configure',
@@ -121,51 +186,101 @@ return [
'name' => 'admin::app.acl.locales',
'route' => 'admin.locales.index',
'sort' => 1
+ ], [
+ 'key' => 'settings.locales.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.locales.create',
+ 'sort' => 1
], [
'key' => 'settings.locales.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.locales.edit',
- 'sort' => 1
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.locales.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.locales.delete',
+ 'sort' => 3
], [
'key' => 'settings.currencies',
'name' => 'admin::app.acl.currencies',
'route' => 'admin.currencies.index',
'sort' => 2
+ ], [
+ 'key' => 'settings.currencies.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.currencies.create',
+ 'sort' => 1
], [
'key' => 'settings.currencies.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.currencies.edit',
'sort' => 2
+ ], [
+ 'key' => 'settings.currencies.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.currencies.delete',
+ 'sort' => 3
], [
'key' => 'settings.exchange_rates',
'name' => 'admin::app.acl.exchange-rates',
'route' => 'admin.exchange_rates.index',
'sort' => 3
+ ], [
+ 'key' => 'settings.exchange_rates.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.exchange_rates.create',
+ 'sort' => 1
], [
'key' => 'settings.exchange_rates.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.exchange_rates.edit',
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.exchange_rates.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.exchange_rates.delete',
'sort' => 3
], [
'key' => 'settings.inventory_sources',
'name' => 'admin::app.acl.inventory-sources',
'route' => 'admin.inventory_sources.index',
'sort' => 4
+ ], [
+ 'key' => 'settings.inventory_sources.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.inventory_sources.create',
+ 'sort' => 1
], [
'key' => 'settings.inventory_sources.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.inventory_sources.edit',
- 'sort' => 4
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.inventory_sources.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.inventory_sources.delete',
+ 'sort' => 3
], [
'key' => 'settings.channels',
'name' => 'admin::app.acl.channels',
'route' => 'admin.channels.index',
'sort' => 5
+ ], [
+ 'key' => 'settings.channels.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.channels.create',
+ 'sort' => 1
], [
'key' => 'settings.channels.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.channels.edit',
- 'sort' => 5
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.channels.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.channels.delete',
+ 'sort' => 3
], [
'key' => 'settings.users',
'name' => 'admin::app.acl.users',
@@ -176,31 +291,61 @@ return [
'name' => 'admin::app.acl.users',
'route' => 'admin.users.index',
'sort' => 1
+ ], [
+ 'key' => 'settings.users.users.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.users.create',
+ 'sort' => 1
], [
'key' => 'settings.users.users.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.users.edit',
- 'sort' => 1
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.users.users.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.users.delete',
+ 'sort' => 3
], [
'key' => 'settings.users.roles',
'name' => 'admin::app.acl.roles',
'route' => 'admin.roles.index',
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.users.roles.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.roles.create',
'sort' => 1
], [
'key' => 'settings.users.roles.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.roles.edit',
- 'sort' => 1
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.users.roles.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.roles.delete',
+ 'sort' => 3
], [
'key' => 'settings.sliders',
'name' => 'admin::app.acl.sliders',
'route' => 'admin.sliders.index',
'sort' => 7
+ ], [
+ 'key' => 'settings.sliders.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.sliders.create',
+ 'sort' => 1
], [
'key' => 'settings.sliders.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.sliders.edit',
- 'sort' => 1
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.sliders.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.sliders.delete',
+ 'sort' => 3
], [
'key' => 'settings.taxes',
'name' => 'admin::app.acl.taxes',
@@ -211,21 +356,41 @@ return [
'name' => 'admin::app.acl.tax-categories',
'route' => 'admin.tax-categories.index',
'sort' => 1
+ ], [
+ 'key' => 'settings.taxes.tax-categories.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.tax-categories.create',
+ 'sort' => 1
], [
'key' => 'settings.taxes.tax-categories.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.tax-categories.edit',
- 'sort' => 1
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.taxes.tax-categories.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.tax-categories.delete',
+ 'sort' => 3
], [
'key' => 'settings.taxes.tax-rates',
'name' => 'admin::app.acl.tax-rates',
'route' => 'admin.tax-rates.index',
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.taxes.tax-rates.create',
+ 'name' => 'admin::app.acl.create',
+ 'route' => 'admin.tax-rates.create',
'sort' => 1
], [
'key' => 'settings.taxes.tax-rates.edit',
'name' => 'admin::app.acl.edit',
'route' => 'admin.tax-rates.edit',
- 'sort' => 1
+ 'sort' => 2
+ ], [
+ 'key' => 'settings.taxes.tax-rates.delete',
+ 'name' => 'admin::app.acl.delete',
+ 'route' => 'admin.tax-rates.delete',
+ 'sort' => 3
]
];
diff --git a/packages/Webkul/Admin/src/Listeners/Order.php b/packages/Webkul/Admin/src/Listeners/Order.php
index 377b4fbdd..bd4df32cc 100755
--- a/packages/Webkul/Admin/src/Listeners/Order.php
+++ b/packages/Webkul/Admin/src/Listeners/Order.php
@@ -6,6 +6,7 @@ use Illuminate\Support\Facades\Mail;
use Webkul\Admin\Mail\NewOrderNotification;
use Webkul\Admin\Mail\NewInvoiceNotification;
use Webkul\Admin\Mail\NewShipmentNotification;
+use Webkul\Admin\Mail\NewInventorySourceNotification;
/**
* Order event handler
@@ -18,7 +19,7 @@ class Order {
/**
* @param mixed $order
*
- * Send new order confirmation mail to the customer
+ * Send new shipment mail to the customer and inventory source
*/
public function sendNewOrderMail($order)
{
@@ -52,6 +53,8 @@ class Order {
{
try {
Mail::send(new NewShipmentNotification($shipment));
+
+ Mail::send(new NewInventorySourceNotification($shipment));
} catch (\Exception $e) {
}
diff --git a/packages/Webkul/Admin/src/Mail/NewInventorySourceNotification.php b/packages/Webkul/Admin/src/Mail/NewInventorySourceNotification.php
new file mode 100644
index 000000000..7fda9cd25
--- /dev/null
+++ b/packages/Webkul/Admin/src/Mail/NewInventorySourceNotification.php
@@ -0,0 +1,51 @@
+
+ * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
+ */
+class NewInventorySourceNotification extends Mailable
+{
+ use Queueable, SerializesModels;
+
+ /**
+ * The shipment instance.
+ *
+ * @var Shipment
+ */
+ public $shipment;
+
+ /**
+ * Create a new message instance.
+ *
+ * @param mixed $shipment
+ * @return void
+ */
+ public function __construct($shipment)
+ {
+ $this->shipment = $shipment;
+ }
+
+ /**
+ * Build the message.
+ *
+ * @return $this
+ */
+ public function build()
+ { $order = $this->shipment->order;
+ $inventory = $this->shipment->inventory_source;
+
+ return $this->to($inventory->contact_email, $inventory->name)
+ ->subject(trans('shop::app.mail.shipment.subject', ['order_id' => $order->id]))
+ ->view('shop::emails.sales.new-inventorysource-shipment');
+ }
+}
diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php
index 5d2530121..47e83ea0f 100644
--- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php
@@ -69,6 +69,8 @@ return [
'tax-categories' => 'فئات الضرائب',
'tax-rates' => 'المعدلات الضريبية',
'edit' => 'Edit',
+ 'create' => 'Add',
+ 'delete' => 'Delete',
],
'dashboard' => [
'title' => 'لوحة العدادات',
diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php
index b048c62f9..eee6217bc 100755
--- a/packages/Webkul/Admin/src/Resources/lang/en/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php
@@ -71,6 +71,8 @@ return [
'tax-categories' => 'Tax Categories',
'tax-rates' => 'Tax Rates',
'edit' => 'Edit',
+ 'create' => 'Add',
+ 'delete' => 'Delete',
],
'dashboard' => [
diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php
index 3987989f7..f4a87ce6d 100755
--- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php
@@ -71,6 +71,8 @@ return [
'tax-categories' => 'Categorias de Impostos',
'tax-rates' => 'Impostos de Impostos',
'edit' => 'Edit',
+ 'create' => 'Add',
+ 'delete' => 'Delete',
],
'dashboard' => [
diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/multiselect.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/multiselect.blade.php
index f05e1be55..6d2ce65f8 100755
--- a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/multiselect.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/multiselect.blade.php
@@ -1,7 +1,7 @@
@@ -49,7 +49,7 @@
---
- {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }}
+ {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }}
@@ -81,7 +81,7 @@
---
- {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }}
+ {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }}
@@ -117,7 +117,7 @@
{{ $item->qty_ordered }}
-
+
@if ($html = $item->getOptionDetailHtml())
@@ -51,10 +51,10 @@
---
- {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }}
+ {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }}
-
+
{{ __('shop::app.mail.order.shipping') }}
@@ -93,10 +93,10 @@
---
- {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }}
+ {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }}
-
+
{{ __('shop::app.mail.order.payment') }}
@@ -106,46 +106,48 @@
- @foreach ($shipment->items as $item)
-
-
- {{ $item->name }}
-
+
+
+
+
+
+ | {{ __('shop::app.customer.account.order.view.SKU') }} |
+ {{ __('shop::app.customer.account.order.view.product-name') }} |
+ {{ __('shop::app.customer.account.order.view.price') }} |
+ {{ __('shop::app.customer.account.order.view.qty') }} |
+
+
-
-
-
- {{ core()->formatPrice($item->price, $order->order_currency_code) }}
-
-
+
+ @foreach ($shipment->items as $item)
+
+ | {{ $item->child ? $item->child->sku : $item->sku }} |
+ {{ $item->name }} |
+ {{ core()->formatPrice($item->price, $order->order_currency_code) }} |
+ {{ $item->qty }} |
-
-
-
- {{ $item->qty }}
-
-
-
- @if ($html = $item->getOptionDetailHtml())
-
-
-
- @endif
+ @if ($html = $item->getOptionDetailHtml())
+
+
+
+ @endif
+
+
+ @endforeach
+
+
- @endforeach
+
- {!!
+ {!!
__('shop::app.mail.order.help', [
'support_email' => '' . config('mail.from.address'). ''
- ])
+ ])
!!}
diff --git a/packages/Webkul/Shop/src/Resources/views/products/index.blade.php b/packages/Webkul/Shop/src/Resources/views/products/index.blade.php
index b5ccd5c11..a144e1cf6 100755
--- a/packages/Webkul/Shop/src/Resources/views/products/index.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/products/index.blade.php
@@ -49,7 +49,7 @@
@foreach ($products as $productFlat)
- @include ('shop::products.list.card', ['product' => $productFlat->product])
+ @include ('shop::products.list.card', ['productFlat' => $productFlat])
@endforeach
@@ -57,7 +57,7 @@
@foreach ($products as $productFlat)
- @include ('shop::products.list.card', ['product' => $productFlat->product])
+ @include ('shop::products.list.card', ['productFlat' => $productFlat])
@endforeach
diff --git a/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php b/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php
index 03eada776..24e19e356 100755
--- a/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php
@@ -1,19 +1,19 @@
-{!! view_render_event('bagisto.shop.products.list.card.before', ['product' => $product]) !!}
+{!! view_render_event('bagisto.shop.products.list.card.before', ['product' => $productFlat->product]) !!}
@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage')
- getProductBaseImage($product); ?>
+ getProductBaseImage($productFlat->product); ?>
- @if ($product->new)
+ @if ($productFlat->new)
{{ __('shop::app.products.new') }}
@endif
@@ -21,18 +21,18 @@
-{!! view_render_event('bagisto.shop.products.list.card.after', ['product' => $product]) !!}
\ No newline at end of file
+{!! view_render_event('bagisto.shop.products.list.card.after', ['product' => $productFlat->product]) !!}
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php
index 33b25dcb9..7c082ff18 100755
--- a/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php
@@ -161,13 +161,15 @@
});
$(document).mousemove(function(event) {
- if ( (event.pageX - $('.product-hero-image').offset().left > 440 ) && (event.pageX - $('.product-hero-image').offset().left < 465) && (event.pageY - $('.product-hero-image').offset().top > 16) && (event.pageY - $('.product-hero-image').offset().top < 38)) {
+ if ($('.add-to-wishlist').length) {
+ if (event.pageX > $('.add-to-wishlist').offset().left && event.pageX < $('.add-to-wishlist').offset().left+32 && event.pageY > $('.add-to-wishlist').offset().top && event.pageY < $('.add-to-wishlist').offset().top+32) {
- $('.zoomContainer').attr('style', 'z-index: -1 !important');
+ $(".zoomContainer").addClass("show-wishlist");
- } else {
- $('.zoomContainer').css({"position": "absolute", "z-index": "999" });
- }
+ } else {
+ $(".zoomContainer").removeClass("show-wishlist");
+ }
+ };
});
})
diff --git a/packages/Webkul/Tax/src/Http/Controllers/TaxCategoryController.php b/packages/Webkul/Tax/src/Http/Controllers/TaxCategoryController.php
index aedb59132..66e6d5a9d 100755
--- a/packages/Webkul/Tax/src/Http/Controllers/TaxCategoryController.php
+++ b/packages/Webkul/Tax/src/Http/Controllers/TaxCategoryController.php
@@ -182,7 +182,7 @@ class TaxCategoryController extends Controller
Event::fire('tax.tax_category.delete.after', $id);
- session()->flash('success', trans('admin::app.response.delete-failed', ['name' => 'Tax Category']));
+ session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Tax Category']));
return response()->json(['message' => true], 200);
} catch(Exception $e) {
diff --git a/packages/Webkul/Ui/src/Resources/assets/images/product/large-product-placeholder.png b/packages/Webkul/Ui/src/Resources/assets/images/product/large-product-placeholder.png
new file mode 100755
index 000000000..e839910cc
Binary files /dev/null and b/packages/Webkul/Ui/src/Resources/assets/images/product/large-product-placeholder.png differ
diff --git a/packages/Webkul/Ui/src/Resources/assets/images/product/meduim-product-placeholder.png b/packages/Webkul/Ui/src/Resources/assets/images/product/meduim-product-placeholder.png
new file mode 100755
index 000000000..0aa66dc52
Binary files /dev/null and b/packages/Webkul/Ui/src/Resources/assets/images/product/meduim-product-placeholder.png differ
diff --git a/packages/Webkul/Ui/src/Resources/assets/images/product/small-product-placeholder.png b/packages/Webkul/Ui/src/Resources/assets/images/product/small-product-placeholder.png
new file mode 100755
index 000000000..8526a85f5
Binary files /dev/null and b/packages/Webkul/Ui/src/Resources/assets/images/product/small-product-placeholder.png differ
diff --git a/resources/views/vendor/mail/html/message.blade.php b/resources/views/vendor/mail/html/message.blade.php
index 1ae9ed8f1..2ad23a66e 100755
--- a/resources/views/vendor/mail/html/message.blade.php
+++ b/resources/views/vendor/mail/html/message.blade.php
@@ -21,7 +21,7 @@
{{-- Footer --}}
@slot('footer')
@component('mail::footer')
- © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
+ © {{ date('Y') }} {{ config('app.name') }}. All rights reserved.
@endcomponent
@endslot
@endcomponent
diff --git a/resources/views/vendor/mail/markdown/message.blade.php b/resources/views/vendor/mail/markdown/message.blade.php
index 1ae9ed8f1..b409c71cb 100755
--- a/resources/views/vendor/mail/markdown/message.blade.php
+++ b/resources/views/vendor/mail/markdown/message.blade.php
@@ -21,7 +21,7 @@
{{-- Footer --}}
@slot('footer')
@component('mail::footer')
- © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
+ © {{ date('Y') }} {{ config('app.name') }}. All rights reserved.
@endcomponent
@endslot
@endcomponent
diff --git a/resources/views/vendor/notifications/email.blade.php b/resources/views/vendor/notifications/email.blade.php
index e2c68be68..fe3889532 100755
--- a/resources/views/vendor/notifications/email.blade.php
+++ b/resources/views/vendor/notifications/email.blade.php
@@ -56,7 +56,7 @@
'into your web browser: [:actionURL](:actionURL)',
[
'actionText' => $actionText,
- 'actionURL' => $actionUrl,
+ 'actionURL' => $actionUrl
]
)
@endcomponent