Merge pull request #5 from 4xmen/master

ACL added
pull/8/head
SadeghPM 2 years ago committed by GitHub
commit 249a2ed913
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -230,6 +230,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\Illuminate\Container\Container::makeWith(0), map([
@ -453,6 +454,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\Illuminate\Contracts\Container\Container::get(0), map([
@ -676,6 +678,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\Illuminate\Contracts\Container\Container::make(0), map([
@ -899,6 +902,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\Illuminate\Contracts\Container\Container::makeWith(0), map([
@ -1122,6 +1126,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\App::get(0), map([
@ -1345,6 +1350,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\App::make(0), map([
@ -1568,6 +1574,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\App::makeWith(0), map([
@ -1791,6 +1798,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\app(0), map([
@ -2014,6 +2022,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\resolve(0), map([
@ -2237,6 +2246,7 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\Psr\Container\ContainerInterface::get(0), map([
@ -2460,10 +2470,15 @@ namespace PHPSTORM_META {
'view' => \Illuminate\View\Factory::class,
'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class,
'view.finder' => \Illuminate\View\FileViewFinder::class,
'zarinpal-gateway' => \App\Payment\Zarinpal::class,
'zibal-gateway' => \App\Payment\Zibal::class,
]));
override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::mock(0), map(["" => "@&\Mockery\MockInterface"]));
override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::partialMock(0), map(["" => "@&\Mockery\MockInterface"]));
override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::instance(0), type(1));
override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::spy(0), map(["" => "@&\Mockery\MockInterface"]));
override(\Illuminate\Support\Arr::add(0), type(0));
override(\Illuminate\Support\Arr::except(0), type(0));
override(\Illuminate\Support\Arr::first(0), elementType(0));

@ -2,7 +2,7 @@
<img src="media/xstack-shop-logo.svg" alt="xshop logo" width="600">
</div>
#xShop
# xShop
اکس شاپ یک پروژه اوپن سورس فروشگاهی بر پایه لاراول است که شما می‌توانید به راحتی با سفارشی سازی آن فروشگاه مورد نظر خودتون یا مشتریتون رو راه‌اندازی کنید و حتی از سورس کدش آموزش ببنید
@ -110,6 +110,18 @@ php key:generate
composer install --optimize-autoloader --no-dev
```
### اضافه کردن cron job
جهت اجرا کامل برنامه ها زمان‌دار فروشگاه باید یک دستور زیر رو بزنید:
```bash
crontab -e
```
و این خط رو اضافه کنید:
```bash
* * * * * cd /home/[yourusername]/[your-public-html-project-root] && php artisan schedule:run >> /dev/null 2>&1
```
## contribute & support
ما خیلی خوشحال می‌شویم از شما را کمک کنیم و یا شما ما رو کمک کنید، در صورت توسعه سورس حتما از pull request شما اتسقبال می‌کنیم و اگر مشکلی داشتید، حتما آن را برطرف می‌کنیم، فقط کافی است یک موضوع در لینک زیر ایجاد کنید:

@ -2,7 +2,7 @@
<img src="media/xstack-shop-logo.svg" alt="xshop logo" width="600">
</div>
#xShop
# xShop
x-shop is an open source shop developed in laravel, very customizable!
@ -108,6 +108,19 @@ php key:generate
composer install --optimize-autoloader --no-dev
```
### add cron job
You must add crontab for your project:
```bash
crontab -e
```
Add this line:
```bash
* * * * * cd /home/[yourusername]/[your-public-html-project-root] && php artisan schedule:run >> /dev/null 2>&1
```
## contribute & support
We are so pleased to your help and help you, If you wanna develop xshop, Congrats or

@ -4,7 +4,7 @@
/**
* A helper file for Laravel, to provide autocomplete information to your IDE
* Generated for Laravel 9.46.0.
* Generated for Laravel 9.52.8.
*
* This file should not be included in your code, only analyzed by your IDE!
*
@ -1577,7 +1577,7 @@
$instance->terminate($input, $status);
}
/**
* Register a callback to be invoked when the command lifecyle duration exceeds a given amount of time.
* Register a callback to be invoked when the command lifecycle duration exceeds a given amount of time.
*
* @param \DateTimeInterface|\Carbon\CarbonInterval|float|int $threshold
* @param callable $handler
@ -2529,7 +2529,7 @@
* Check the result of a condition.
*
* @param string $name
* @param array $parameters
* @param mixed $parameters
* @return bool
* @static
*/
@ -3294,7 +3294,7 @@
/**
* Assert if a job was pushed a number of times.
*
* @param string $command
* @param string|\Closure $command
* @param int $times
* @return void
* @static
@ -3344,7 +3344,7 @@
/**
* Assert if a job was pushed synchronously a number of times.
*
* @param string $command
* @param string|\Closure $command
* @param int $times
* @return void
* @static
@ -3383,7 +3383,7 @@
/**
* Assert if a job was pushed after the response was sent a number of times.
*
* @param string $command
* @param string|\Closure $command
* @param int $times
* @return void
* @static
@ -4181,6 +4181,33 @@
{
/** @var \Illuminate\Cache\Repository $instance */
return $instance->macroCall($method, $parameters);
}
/**
* Get a lock instance.
*
* @param string $name
* @param int $seconds
* @param string|null $owner
* @return \Illuminate\Contracts\Cache\Lock
* @static
*/
public static function lock($name, $seconds = 0, $owner = null)
{
/** @var \Illuminate\Cache\FileStore $instance */
return $instance->lock($name, $seconds, $owner);
}
/**
* Restore a lock instance using the owner identifier.
*
* @param string $name
* @param string $owner
* @return \Illuminate\Contracts\Cache\Lock
* @static
*/
public static function restoreLock($name, $owner)
{
/** @var \Illuminate\Cache\FileStore $instance */
return $instance->restoreLock($name, $owner);
}
/**
* Remove all items from the cache.
@ -4225,33 +4252,6 @@
{
/** @var \Illuminate\Cache\FileStore $instance */
return $instance->getPrefix();
}
/**
* Get a lock instance.
*
* @param string $name
* @param int $seconds
* @param string|null $owner
* @return \Illuminate\Contracts\Cache\Lock
* @static
*/
public static function lock($name, $seconds = 0, $owner = null)
{
/** @var \Illuminate\Cache\FileStore $instance */
return $instance->lock($name, $seconds, $owner);
}
/**
* Restore a lock instance using the owner identifier.
*
* @param string $name
* @param string $owner
* @return \Illuminate\Contracts\Cache\Lock
* @static
*/
public static function restoreLock($name, $owner)
{
/** @var \Illuminate\Cache\FileStore $instance */
return $instance->restoreLock($name, $owner);
}
}
@ -4534,7 +4534,7 @@
/**
* Queue a cookie to send with the next response.
*
* @param array $parameters
* @param mixed $parameters
* @return void
* @static
*/
@ -4574,8 +4574,8 @@
* Set the default path and domain for the jar.
*
* @param string $path
* @param string $domain
* @param bool $secure
* @param string|null $domain
* @param bool|null $secure
* @param string|null $sameSite
* @return \Illuminate\Cookie\CookieJar
* @static
@ -4766,18 +4766,18 @@
* @method static \Illuminate\Support\Carbon createFromTimestampUTC($timestamp)
* @method static \Illuminate\Support\Carbon createMidnightDate($year = null, $month = null, $day = null, $tz = null)
* @method static \Illuminate\Support\Carbon|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null)
* @method static \Illuminate\Support\Carbon disableHumanDiffOption($humanDiffOption)
* @method static \Illuminate\Support\Carbon enableHumanDiffOption($humanDiffOption)
* @method static void disableHumanDiffOption($humanDiffOption)
* @method static void enableHumanDiffOption($humanDiffOption)
* @method static mixed executeWithLocale($locale, $func)
* @method static \Illuminate\Support\Carbon fromSerialized($value)
* @method static array getAvailableLocales()
* @method static array getDays()
* @method static int getHumanDiffOptions()
* @method static array getIsoUnits()
* @method static \Illuminate\Support\Carbon getLastErrors()
* @method static array getLastErrors()
* @method static string getLocale()
* @method static int getMidDayAt()
* @method static \Illuminate\Support\Carbon getTestNow()
* @method static \Illuminate\Support\Carbon|null getTestNow()
* @method static \Symfony\Component\Translation\TranslatorInterface getTranslator()
* @method static int getWeekEndsAt()
* @method static int getWeekStartsAt()
@ -4789,7 +4789,7 @@
* @method static \Illuminate\Support\Carbon instance($date)
* @method static bool isImmutable()
* @method static bool isModifiableUnit($unit)
* @method static \Illuminate\Support\Carbon isMutable()
* @method static bool isMutable()
* @method static bool isStrictModeEnabled()
* @method static bool localeHasDiffOneDayWords($locale)
* @method static bool localeHasDiffSyntax($locale)
@ -4808,13 +4808,13 @@
* @method static void resetToStringFormat()
* @method static void resetYearsOverflow()
* @method static void serializeUsing($callback)
* @method static \Illuminate\Support\Carbon setHumanDiffOptions($humanDiffOptions)
* @method static void setHumanDiffOptions($humanDiffOptions)
* @method static bool setLocale($locale)
* @method static void setMidDayAt($hour)
* @method static void setTestNow($testNow = null)
* @method static void setToStringFormat($format)
* @method static void setTranslator(\Symfony\Component\Translation\TranslatorInterface $translator)
* @method static \Illuminate\Support\Carbon setUtf8($utf8)
* @method static void setUtf8($utf8)
* @method static void setWeekEndsAt($day)
* @method static void setWeekStartsAt($day)
* @method static void setWeekendDays($days)
@ -4824,7 +4824,7 @@
* @method static \Illuminate\Support\Carbon today($tz = null)
* @method static \Illuminate\Support\Carbon tomorrow($tz = null)
* @method static void useMonthsOverflow($monthsOverflow = true)
* @method static \Illuminate\Support\Carbon useStrictMode($strictModeEnabled = true)
* @method static void useStrictMode($strictModeEnabled = true)
* @method static void useYearsOverflow($yearsOverflow = true)
* @method static \Illuminate\Support\Carbon yesterday($tz = null)
* @see \Illuminate\Support\DateFactory
@ -4890,7 +4890,6 @@
/**
*
*
* @method static array<string, \Illuminate\Database\Connection> getConnections()
* @see \Illuminate\Database\DatabaseManager
*/
class DB {
@ -6567,13 +6566,14 @@
*
* @param string $path
* @param string $content
* @param int|null $mode
* @return void
* @static
*/
public static function replace($path, $content)
public static function replace($path, $content, $mode = null)
{
/** @var \Illuminate\Filesystem\Filesystem $instance */
$instance->replace($path, $content);
$instance->replace($path, $content, $mode);
}
/**
* Replace a given string within a given file.
@ -7028,7 +7028,7 @@
*
* @template TWhenParameter
* @template TWhenReturnType
* @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value
* @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value
* @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $callback
* @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default
* @return $this|\Illuminate\Filesystem\TWhenReturnType
@ -7409,8 +7409,8 @@
* Deny with a HTTP status code.
*
* @param int $status
* @param \Illuminate\Auth\Access\?string $message
* @param \Illuminate\Auth\Access\?int $code
* @param string|null $message
* @param int|null $code
* @return \Illuminate\Auth\Access\Response
* @static
*/
@ -7422,8 +7422,8 @@
/**
* Deny with a 404 HTTP status code.
*
* @param \Illuminate\Auth\Access\?string $message
* @param \Illuminate\Auth\Access\?int $code
* @param string|null $message
* @param int|null $code
* @return \Illuminate\Auth\Access\Response
* @static
*/
@ -7628,6 +7628,7 @@
* @method static \Illuminate\Http\Client\PendingRequest withDigestAuth(string $username, string $password)
* @method static \Illuminate\Http\Client\PendingRequest withToken(string $token, string $type = 'Bearer')
* @method static \Illuminate\Http\Client\PendingRequest withUserAgent(string $userAgent)
* @method static \Illuminate\Http\Client\PendingRequest withUrlParameters(array $parameters = [])
* @method static \Illuminate\Http\Client\PendingRequest withCookies(array $cookies, string $domain)
* @method static \Illuminate\Http\Client\PendingRequest maxRedirects(int $max)
* @method static \Illuminate\Http\Client\PendingRequest withoutRedirecting()
@ -7667,8 +7668,8 @@
* @method static \Illuminate\Http\Client\PendingRequest setClient(\GuzzleHttp\Client $client)
* @method static \Illuminate\Http\Client\PendingRequest setHandler(callable $handler)
* @method static array getOptions()
* @method static \Illuminate\Http\Client\PendingRequest|mixed when((\Closure(\Illuminate\Http\Client\PendingRequest): mixed)|mixed $value = null, (callable(\Illuminate\Http\Client\PendingRequest, mixed): mixed)|null $callback = null, (callable(\Illuminate\Http\Client\PendingRequest, mixed): mixed)|null $default = null)
* @method static \Illuminate\Http\Client\PendingRequest|mixed unless((\Closure(\Illuminate\Http\Client\PendingRequest): mixed)|mixed $value = null, (callable(\Illuminate\Http\Client\PendingRequest, mixed): mixed)|null $callback = null, (callable(\Illuminate\Http\Client\PendingRequest, mixed): mixed)|null $default = null)
* @method static \Illuminate\Http\Client\PendingRequest|mixed when(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)
* @method static \Illuminate\Http\Client\PendingRequest|mixed unless(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)
* @see \Illuminate\Http\Client\Factory
*/
class Http {
@ -8168,6 +8169,19 @@
{
/** @var \Illuminate\Translation\Translator $instance */
$instance->setLoaded($loaded);
}
/**
* Add a handler to be executed in order to format a given class to a string during translation replacements.
*
* @param callable|string $class
* @param callable|null $handler
* @return void
* @static
*/
public static function stringable($class, $handler = null)
{
/** @var \Illuminate\Translation\Translator $instance */
$instance->stringable($class, $handler);
}
/**
* Set the parsed value of a key.
@ -8377,13 +8391,13 @@
* Unset the given channel instance.
*
* @param string|null $driver
* @return \Illuminate\Log\LogManager
* @return void
* @static
*/
public static function forgetChannel($driver = null)
{
/** @var \Illuminate\Log\LogManager $instance */
return $instance->forgetChannel($driver);
$instance->forgetChannel($driver);
}
/**
* Get all of the resolved log channels.
@ -10688,12 +10702,12 @@
* Clones a request and overrides some of its parameters.
*
* @return static
* @param array $query The GET parameters
* @param array $request The POST parameters
* @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
* @param array $cookies The COOKIE parameters
* @param array $files The FILES parameters
* @param array $server The SERVER parameters
* @param array|null $query The GET parameters
* @param array|null $request The POST parameters
* @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
* @param array|null $cookies The COOKIE parameters
* @param array|null $files The FILES parameters
* @param array|null $server The SERVER parameters
* @static
*/
public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null)
@ -10942,12 +10956,13 @@
* @param array $files The FILES parameters
* @param array $server The SERVER parameters
* @param string|resource|null $content The raw body data
* @return void
* @static
*/
public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
$instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
}
/**
* Creates a new request with values from PHP's super globals.
@ -10984,11 +10999,12 @@
* to keep BC with an existing system. It should not be used for any
* other purpose.
*
* @return void
* @static
*/
public static function setFactory($callable)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
return \Illuminate\Http\Request::setFactory($callable);
\Illuminate\Http\Request::setFactory($callable);
}
/**
* Overrides the PHP global variables according to this request instance.
@ -10996,12 +11012,13 @@
* It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.
* $_FILES is never overridden, see rfc1867
*
* @return void
* @static
*/
public static function overrideGlobals()
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->overrideGlobals();
$instance->overrideGlobals();
}
/**
* Sets a list of trusted proxies.
@ -11010,11 +11027,12 @@
*
* @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
* @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies
* @return void
* @static
*/
public static function setTrustedProxies($proxies, $trustedHeaderSet)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
return \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet);
\Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet);
}
/**
* Gets the list of trusted proxies.
@ -11042,11 +11060,12 @@
* You should only list the hosts you manage using regexs.
*
* @param array $hostPatterns A list of trusted host patterns
* @return void
* @static
*/
public static function setTrustedHosts($hostPatterns)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
return \Illuminate\Http\Request::setTrustedHosts($hostPatterns);
\Illuminate\Http\Request::setTrustedHosts($hostPatterns);
}
/**
* Gets the list of trusted host patterns.
@ -11081,11 +11100,12 @@
*
* The HTTP method can only be overridden when the real HTTP method is POST.
*
* @return void
* @static
*/
public static function enableHttpMethodParameterOverride()
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
return \Illuminate\Http\Request::enableHttpMethodParameterOverride();
\Illuminate\Http\Request::enableHttpMethodParameterOverride();
}
/**
* Checks whether support for the _method request parameter is enabled.
@ -11110,12 +11130,13 @@
/**
*
*
* @return void
* @static
*/
public static function setSession($session)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->setSession($session);
$instance->setSession($session);
}
/**
*
@ -11416,12 +11437,13 @@
/**
* Sets the request method.
*
* @return void
* @static
*/
public static function setMethod($method)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->setMethod($method);
$instance->setMethod($method);
}
/**
* Gets the request "intended" method.
@ -11487,12 +11509,13 @@
* Associates a format with mime types.
*
* @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)
* @return void
* @static
*/
public static function setFormat($format, $mimeTypes)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->setFormat($format, $mimeTypes);
$instance->setFormat($format, $mimeTypes);
}
/**
* Gets the request format.
@ -11514,12 +11537,13 @@
/**
* Sets the request format.
*
* @return void
* @static
*/
public static function setRequestFormat($format)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->setRequestFormat($format);
$instance->setRequestFormat($format);
}
/**
* Gets the usual name of the format associated with the request's media type (provided in the Content-Type header).
@ -11546,12 +11570,13 @@
/**
* Sets the default locale.
*
* @return void
* @static
*/
public static function setDefaultLocale($locale)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->setDefaultLocale($locale);
$instance->setDefaultLocale($locale);
}
/**
* Get the default locale.
@ -11566,12 +11591,13 @@
/**
* Sets the locale.
*
* @return void
* @static
*/
public static function setLocale($locale)
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->setLocale($locale);
$instance->setLocale($locale);
}
/**
* Get the locale.
@ -11654,6 +11680,16 @@
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->getContent($asResource);
}
/**
* Gets the decoded form or json request body.
*
* @static
*/
public static function getPayload()
{ //Method inherited from \Symfony\Component\HttpFoundation\Request
/** @var \Illuminate\Http\Request $instance */
return $instance->getPayload();
}
/**
* Gets the Etags.
@ -12632,7 +12668,7 @@
/**
* Create a new streamed response instance.
*
* @param \Closure $callback
* @param callable $callback
* @param int $status
* @param array $headers
* @return \Symfony\Component\HttpFoundation\StreamedResponse
@ -12646,7 +12682,7 @@
/**
* Create a new streamed response instance as a file download.
*
* @param \Closure $callback
* @param callable $callback
* @param string|null $name
* @param array $headers
* @param string|null $disposition
@ -14156,6 +14192,18 @@
{ //Method inherited from \Illuminate\Database\Schema\Builder
/** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
return $instance->disableForeignKeyConstraints();
}
/**
* Disable foreign key constraints during the execution of a callback.
*
* @param \Closure $callback
* @return mixed
* @static
*/
public static function withoutForeignKeyConstraints($callback)
{ //Method inherited from \Illuminate\Database\Schema\Builder
/** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
return $instance->withoutForeignKeyConstraints($callback);
}
/**
* Get the database connection instance.
@ -14726,7 +14774,7 @@
/**
* Set the session ID.
*
* @param string $id
* @param string|null $id
* @return void
* @static
*/
@ -14738,7 +14786,7 @@
/**
* Determine if this is a valid session ID.
*
* @param string $id
* @param string|null $id
* @return bool
* @static
*/
@ -14830,13 +14878,13 @@
* Set the underlying session handler implementation.
*
* @param \SessionHandlerInterface $handler
* @return void
* @return \SessionHandlerInterface
* @static
*/
public static function setHandler($handler)
{
/** @var \Illuminate\Session\Store $instance */
$instance->setHandler($handler);
return $instance->setHandler($handler);
}
/**
* Determine if the session handler needs a request.
@ -14912,6 +14960,13 @@
/**
*
*
* @method static bool has(string $location)
* @method static string read(string $location)
* @method static \League\Flysystem\DirectoryListing listContents(string $location, bool $deep = false)
* @method static int fileSize(string $path)
* @method static string visibility(string $path)
* @method static void write(string $location, string $contents, array $config = [])
* @method static void createDirectory(string $location, array $config = [])
* @see \Illuminate\Filesystem\FilesystemManager
*/
class Storage {
@ -15515,6 +15570,21 @@
{
/** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
return $instance->temporaryUrl($path, $expiration, $options);
}
/**
* Get a temporary upload URL for the file at the given path.
*
* @param string $path
* @param \DateTimeInterface $expiration
* @param array $options
* @return array
* @throws \RuntimeException
* @static
*/
public static function temporaryUploadUrl($path, $expiration, $options = [])
{
/** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
return $instance->temporaryUploadUrl($path, $expiration, $options);
}
/**
* Get an array of all files in a directory.
@ -15640,7 +15710,7 @@
*
* @template TWhenParameter
* @template TWhenReturnType
* @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value
* @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value
* @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $callback
* @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default
* @return $this|\Illuminate\Filesystem\TWhenReturnType
@ -17423,7 +17493,7 @@
/**
* Generate or set a Content Security Policy nonce to apply to all generated tags.
*
* @param \Illuminate\Foundation\?string $nonce
* @param string|null $nonce
* @return string
* @static
*/
@ -17530,7 +17600,7 @@
/**
* Use the given callback to resolve attributes for preload tags.
*
* @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array|false)|array|false $attributes
* @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): (array|false))|array|false $attributes
* @return \Illuminate\Foundation\Vite
* @static
*/
@ -19134,7 +19204,7 @@
/**
*
*
* @param \Spatie\FlareClient\FlareMiddleware\FlareMiddleware|array<FlareMiddleware>|\Spatie\FlareClient\class-string<FlareMiddleware> $middleware
* @param \Spatie\FlareClient\FlareMiddleware\FlareMiddleware|array<FlareMiddleware>|\Spatie\FlareClient\class-string<FlareMiddleware>|callable $middleware
* @return \Spatie\FlareClient\Flare
* @static
*/
@ -20004,7 +20074,7 @@ namespace {
}
/**
* Get an array with the values of a given column.
* Get a collection with the values of a given column.
*
* @param string|\Illuminate\Database\Query\Expression $column
* @param string|null $key
@ -20538,7 +20608,7 @@ namespace {
*
* @template TWhenParameter
* @template TWhenReturnType
* @param \Illuminate\Database\Eloquent\(\Closure($this): TWhenParameter)|TWhenParameter|null $value
* @param \Illuminate\Database\Eloquent\(\Closure($this): TWhenParameter)|TWhenParameter|null $value
* @param \Illuminate\Database\Eloquent\(callable($this, TWhenParameter): TWhenReturnType)|null $callback
* @param \Illuminate\Database\Eloquent\(callable($this, TWhenParameter): TWhenReturnType)|null $default
* @return $this|\Illuminate\Database\Eloquent\TWhenReturnType
@ -21207,6 +21277,45 @@ namespace {
return $instance->from($table, $as);
}
/**
* Add an index hint to suggest a query index.
*
* @param string $index
* @return \Illuminate\Database\Query\Builder
* @static
*/
public static function useIndex($index)
{
/** @var \Illuminate\Database\Query\Builder $instance */
return $instance->useIndex($index);
}
/**
* Add an index hint to force a query index.
*
* @param string $index
* @return \Illuminate\Database\Query\Builder
* @static
*/
public static function forceIndex($index)
{
/** @var \Illuminate\Database\Query\Builder $instance */
return $instance->forceIndex($index);
}
/**
* Add an index hint to ignore a query index.
*
* @param string $index
* @return \Illuminate\Database\Query\Builder
* @static
*/
public static function ignoreIndex($index)
{
/** @var \Illuminate\Database\Query\Builder $instance */
return $instance->ignoreIndex($index);
}
/**
* Add a join clause to the query.
*
@ -22987,6 +23096,36 @@ namespace {
return $instance->updateOrInsert($attributes, $values);
}
/**
* Increment the given column's values by the given amounts.
*
* @param \Illuminate\Database\Query\array<string, float|int|numeric-string> $columns
* @param \Illuminate\Database\Query\array<string, mixed> $extra
* @return int
* @throws \InvalidArgumentException
* @static
*/
public static function incrementEach($columns, $extra = [])
{
/** @var \Illuminate\Database\Query\Builder $instance */
return $instance->incrementEach($columns, $extra);
}
/**
* Decrement the given column's values by the given amounts.
*
* @param \Illuminate\Database\Query\array<string, float|int|numeric-string> $columns
* @param \Illuminate\Database\Query\array<string, mixed> $extra
* @return int
* @throws \InvalidArgumentException
* @static
*/
public static function decrementEach($columns, $extra = [])
{
/** @var \Illuminate\Database\Query\Builder $instance */
return $instance->decrementEach($columns, $extra);
}
/**
* Run a truncate statement on the table.
*

@ -21,14 +21,15 @@ class CustomerController extends Controller
public function createOrUpdate(Customer $customer, Request $request)
{
$credit = str_replace(',', '', $request->input('credit', 0));
$customer->name = $request->input('name');
$customer->address = $request->input('address');
// $customer->address_alt = $request->input('address_alt');
$customer->state = $request->input('state');
$customer->credit = str_replace(',','',$request->input('credit'));
$customer->credit = $credit == null ? 0 : $credit;
$customer->city = $request->input('city');
$customer->postal_code = $request->input('postal_code');
if ($request->has('email')){
if ($request->has('email')) {
$customer->email = $request->input('email');
}
$customer->mobile = $request->input('mobile');
@ -67,15 +68,15 @@ class CustomerController extends Controller
{
//
$q = Customer::orderByDesc('id');
if ($request->has('name') && strlen($request->input('name')) > 1 ){
$q->where('name','LIKE', '%'.$request->name.'%');
if ($request->has('name') && strlen($request->input('name')) > 1) {
$q->where('name', 'LIKE', '%' . $request->name . '%');
}
if ($request->has('mobile') && strlen($request->input('mobile')) > 1 ){
$q->where('mobile','LIKE', '%'.$request->mobile.'%');
if ($request->has('mobile') && strlen($request->input('mobile')) > 1) {
$q->where('mobile', 'LIKE', '%' . $request->mobile . '%');
}
if ($request->has('colleague') ){
$q->where('colleague',true);
if ($request->has('colleague')) {
$q->where('colleague', true);
}
$customers = $q->paginate(20);

@ -0,0 +1,138 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Access;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use function Xmen\StarterKit\Helpers\logAdmin;
use Xmen\StarterKit\Requests\UserSaveRequest;
class UserController extends Controller
{
private $name = 'User';
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::orderBy('name')->paginate(20);
return view('starter-kit::admin.user.userList', compact('users'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('starter-kit::admin.user.userForm');
}
public function createOrUpdate(User $user, UserSaveRequest $req)
{
$user->name = $req->input('name');
$user->email = $req->input('email');
if (trim($req->input('password')) != '') {
$user->password = bcrypt($req->input('password'));
}
$user->mobile = $req->input('mobile');
$user->syncRoles($req->input('role'));
$user->save();
$user->accesses()->delete();
foreach ($req->input('acl', []) as $route) {
$a = new Access();
$a->route = $route;
$a->user_id = $user->id;
$a->save();
$routes = explode('.', $route);
if ($routes[2] == 'store' || $routes[2] == 'update') {
$routes[2] = $routes[2] == 'store' ? 'create' : 'edit';
$a = new Access();
$a->route = implode('.', $routes);
$a->user_id = $user->id;
$a->save();
}
}
return $user;
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(UserSaveRequest $request)
{
$user = new User();
$user = $this->createOrUpdate($user, $request);
logAdmin(__METHOD__, User::class, $user->id);
return redirect()->route('admin.user.all')->with(['message' => $user->name . ' ' . __($this->name) . ' ' . __(' created')]);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
}
public function edit(User $user)
{
$routes = [];
foreach (\Route::getRoutes()->getRoutes() as $route) {
$action = $route->getAction();
if (array_key_exists('as', $action)) {
$routeName = explode('.', $action['as']);
if (isset($routeName[2]) && $routeName[0] == 'admin') {
if (!isset($routes[$routeName[1]])) {
$routes[$routeName[1]] = [];
if ($routeName[2] != 'edit' && $routeName[2] != 'create')
$routes[$routeName[1]][] = $routeName[2];
} else {
if ($routeName[2] != 'edit' && $routeName[2] != 'create')
$routes[$routeName[1]][] = $routeName[2];
}
}
}
}
unset($routes['home'], $routes['user'], $routes['ckeditor']);
return view('starter-kit::admin.user.userForm', compact('user', 'routes'));
}
public function update(UserSaveRequest $request, User $user)
{
$this->createOrUpdate($user, $request);
logAdmin(__METHOD__, User::class, $user->id);
return redirect()->route('admin.user.all')->with(['message' => $user->name . ' ' . __($this->name) . ' ' . __(' edited')]);
}
/**
* Remove the specified resource from storage.
*
* @param int $user
* @return \Illuminate\Http\Response
*/
public function destroy(User $user)
{
if (auth()->user()->hasRole('super-admin')) {
$user->delete();
logAdmin(__METHOD__, User::class, $user->id);
return redirect()->back()->with(['message' => $user->name . ' ' . __($this->name) . ' ' . __(' deleted')]);
}
return redirect()->route('admin.user.all');
}
}

@ -0,0 +1,50 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class Acl
{
private $excepts = ['ckeditor', 'home'];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
$route = \Route::getCurrentRoute();
// check admin page & user is not super admin
if (auth()->check() && isset($route->action['as'])) {
// explode user request to process
$requestPath = explode('.', $route->action['as']);
// ignore admin and not admin page
if ($requestPath[0] == 'admin' && !auth()->user()->hasRole('super-admin')) {
// check excpet and has 3 routes and has user acceess
if (!in_array($requestPath[1], $this->excepts) &&
isset($requestPath[2]) &&
!auth()->user()->hasAccess($route->action['as'])) {
return abort(403, __("You dont't have acccess this acction"));
}
// check delete or destroy with bulk action
if ($requestPath[2] == 'bulk' && $request->input('bulk') == 'delete') {
$requestPath[2] = 'delete';
if (!auth()->user()->hasAccess(implode('.', $requestPath))) {
$requestPath[2] = 'destroy';
if (!auth()->user()->hasAccess(implode('.', $requestPath))) {
return abort(403, __("You dont't have acccess this acction"));
}
}
}
}
}
return $next($request);
}
}

@ -0,0 +1,36 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\Access
*
* @property int $id
* @property int $user_id
* @property string $route
* @property int $owner
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|Access newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Access newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Access query()
* @method static \Illuminate\Database\Eloquent\Builder|Access whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Access whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Access whereOwner($value)
* @method static \Illuminate\Database\Eloquent\Builder|Access whereRoute($value)
* @method static \Illuminate\Database\Eloquent\Builder|Access whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Access whereUserId($value)
* @mixin \Eloquent
*/
class Access extends Model
{
use HasFactory;
public function user(){
return $this->belongsTo(User::class);
}
}

@ -51,6 +51,8 @@ use Spatie\MediaLibrary\MediaCollections\Models\Media;
* @method static \Illuminate\Database\Eloquent\Builder|Cat whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Cat withTrashed()
* @method static \Illuminate\Database\Query\Builder|Cat withoutTrashed()
* @property int $is_main
* @method static \Illuminate\Database\Eloquent\Builder|Cat whereIsMain($value)
* @mixin \Eloquent
*/
class Cat extends Model implements HasMedia

@ -31,9 +31,9 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Credit withTrashed()
* @method static \Illuminate\Database\Query\Builder|Credit withoutTrashed()
* @mixin \Eloquent
* @property-read \App\Models\Customer $customer
* @property-read \App\Models\Invoice $invoice
* @mixin \Eloquent
*/
class Credit extends Model
{

@ -43,7 +43,6 @@ use Illuminate\Notifications\Notifiable;
* @method static \Illuminate\Database\Eloquent\Builder|Customer whereRememberToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|Customer whereState($value)
* @method static \Illuminate\Database\Eloquent\Builder|Customer whereUpdatedAt($value)
* @mixin \Eloquent
* @property string|null $code
* @method static \Illuminate\Database\Eloquent\Builder|Customer whereCode($value)
* @property string|null $address_alt
@ -70,6 +69,7 @@ use Illuminate\Notifications\Notifiable;
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Credit[] $credits
* @property-read int|null $credits_count
* @method static \Illuminate\Database\Eloquent\Builder|Customer whereCerdit($value)
* @mixin \Eloquent
*/
class Customer extends Authenticatable
{

@ -29,12 +29,12 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Eloquent\Builder|Discount whereProductId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Discount whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Discount whereUpdatedAt($value)
* @mixin \Eloquent
* @property \Illuminate\Support\Carbon|null $deleted_at
* @method static \Illuminate\Database\Query\Builder|Discount onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Discount whereDeletedAt($value)
* @method static \Illuminate\Database\Query\Builder|Discount withTrashed()
* @method static \Illuminate\Database\Query\Builder|Discount withoutTrashed()
* @mixin \Eloquent
*/
class Discount extends Model
{

@ -28,7 +28,6 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTotalPrice($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereUpdatedAt($value)
* @mixin \Eloquent
* @property int|null $discount_id
* @property-read \App\Models\Discount|null $discount
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereDiscountId($value)
@ -68,6 +67,8 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Query\Builder|Invoice withoutTrashed()
* @property int|null $address_id
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereAddressId($value)
* @property-read \App\Models\Address|null $address
* @mixin \Eloquent
*/
class Invoice extends Model
{

@ -33,8 +33,8 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereUpdatedAt($value)
* @mixin \Eloquent
* @property-read \App\Models\Invoice $invoice
* @mixin \Eloquent
*/
class Payment extends Model
{

@ -93,7 +93,6 @@ use function App\Helpers\getSetting;
* @method static \Illuminate\Database\Query\Builder|Product withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Product withoutTags($tagNames)
* @method static \Illuminate\Database\Query\Builder|Product withoutTrashed()
* @mixin \Eloquent
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Quantity[] $quantities
* @property-read int|null $quantities_count
* @property int $sell_count
@ -115,6 +114,9 @@ use function App\Helpers\getSetting;
* @method static \Illuminate\Database\Eloquent\Builder|Product whereFee($value)
* @property int $image_index
* @method static \Illuminate\Database\Eloquent\Builder|Product whereImageIndex($value)
* @property int $carat
* @method static \Illuminate\Database\Eloquent\Builder|Product whereCarat($value)
* @mixin \Eloquent
*/
class Product extends Model implements HasMedia
{

@ -46,9 +46,9 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Eloquent\Builder|Prop whereWidth($value)
* @method static \Illuminate\Database\Query\Builder|Prop withTrashed()
* @method static \Illuminate\Database\Query\Builder|Prop withoutTrashed()
* @mixin \Eloquent
* @property string $unit
* @method static \Illuminate\Database\Eloquent\Builder|Prop whereUnit($value)
* @mixin \Eloquent
*/
class Prop extends Model
{

@ -25,7 +25,6 @@ use Plank\Metable\Metable;
* @method static \Illuminate\Database\Eloquent\Builder|Quantity wherePrice($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quantity whereProductId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quantity whereUpdatedAt($value)
* @mixin \Eloquent
* @property string|null $data
* @property-read \Illuminate\Database\Eloquent\Collection|\Plank\Metable\Meta[] $meta
* @property-read int|null $meta_count
@ -41,6 +40,12 @@ use Plank\Metable\Metable;
* @property int|null $image
* @method static \Illuminate\Database\Eloquent\Builder|Quantity whereImage($value)
* @property-read \App\Models\Product $product
* @property \Illuminate\Support\Carbon|null $deleted_at
* @method static \Illuminate\Database\Eloquent\Builder|Quantity onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Quantity whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quantity withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Quantity withoutTrashed()
* @mixin \Eloquent
*/
class Quantity extends Model
{

@ -25,11 +25,11 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|Question whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Question whereProductId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Question whereUpdatedAt($value)
* @mixin \Eloquent
* @property int $status
* @property-read \App\Models\Customer $customer
* @property-read \App\Models\Product $product
* @method static \Illuminate\Database\Eloquent\Builder|Question whereStatus($value)
* @mixin \Eloquent
*/
class Question extends Model
{

@ -23,13 +23,13 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|Sms whereText($value)
* @method static \Illuminate\Database\Eloquent\Builder|Sms whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Sms whereUser($value)
* @mixin \Eloquent
* @property string|null $code
* @method static \Illuminate\Database\Eloquent\Builder|Sms whereCode($value)
* @property string $ip
* @property string|null $mobile
* @method static \Illuminate\Database\Eloquent\Builder|Sms whereIp($value)
* @method static \Illuminate\Database\Eloquent\Builder|Sms whereMobile($value)
* @mixin \Eloquent
*/
class Sms extends Model
{

@ -29,10 +29,10 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|Ticket whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|Ticket whereTitle($value)
* @method static \Illuminate\Database\Eloquent\Builder|Ticket whereUpdatedAt($value)
* @mixin \Eloquent
* @property-read \App\Models\Customer $customer
* @property-read \Illuminate\Database\Eloquent\Collection|Ticket[] $subTickets
* @property-read int|null $sub_tickets_count
* @mixin \Eloquent
*/
class Ticket extends Model
{

@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Xmen\StarterKit\Models\Post;
use Xmen\StarterKit\Models\StarterKit;
@ -49,6 +50,10 @@ use Xmen\StarterKit\Models\StarterKit;
* @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Access> $accesses
* @property-read int|null $accesses_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Product> $products
* @property-read int|null $products_count
* @mixin \Eloquent
*/
class User extends Authenticatable
@ -84,4 +89,22 @@ class User extends Authenticatable
protected $casts = [
'email_verified_at' => 'datetime',
];
public function posts(){
return $this->hasMany(Post::class);
}
public function products(){
return $this->hasMany(Product::class);
}
public function accesses(){
return $this->hasMany(Access::class);
}
public function hasAnyAccess($name){
return $this->accesses()->where('route','LIKE','%'.$name.'%')->count() > 0;
}
public function hasAccess($route){
return $this->accesses()->where('route',$route)->count() > 0;
}
}

@ -2,6 +2,7 @@
namespace App\Providers;
use App\Http\Middleware\Acl;
use Carbon\Carbon;
use Illuminate\Support\ServiceProvider;
use Illuminate\Pagination\Paginator;
@ -27,6 +28,10 @@ class AppServiceProvider extends ServiceProvider
public function boot()
{
//
/** @var Router $router */
$router = $this->app['router'];
$router->pushMiddlewareToGroup('web', Acl::class);
Paginator::useBootstrap();
Carbon::macro('jdate', function ($format, $tr_num = 'fa') {
$dt = TDate::GetInstance();

@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('accesses', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->string('route');
$table->boolean('owner')->default(false);
$table->timestamps();
$table->foreign('user_id')->references('id')
->on('users')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('accesses');
}
};

@ -18,6 +18,7 @@ class UserSeeder extends Seeder
{
\App\Models\User::factory()->count(1)->create(['email' => 'admin@example.com']);
$role = Role::create(['name' => 'super-admin']);
Role::create(['name' => 'manager']);
$superAdmin = User::where('id',1)->first()->assignRole($role);
}

44
package-lock.json generated

@ -1,5 +1,5 @@
{
"name": "xShop10",
"name": "xShop",
"lockfileVersion": 2,
"requires": true,
"packages": {
@ -27,7 +27,7 @@
"devDependencies": {
"@popperjs/core": "^2.10.2",
"axios": "^0.25",
"bootstrap": "^5.1.3",
"bootstrap": "^5.3.0",
"laravel-mix": "^6.0.6",
"lodash": "^4.17.19",
"postcss": "^8.1.14",
@ -1867,9 +1867,9 @@
}
},
"node_modules/@popperjs/core": {
"version": "2.11.5",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz",
"integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==",
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"dev": true,
"funding": {
"type": "opencollective",
@ -2929,16 +2929,22 @@
"dev": true
},
"node_modules/bootstrap": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
"integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.0.tgz",
"integrity": "sha512-UnBV3E3v4STVNQdms6jSGO2CvOkjUMdDAVR2V5N4uCMdaIkaQjbcEAMqRimDHIs4uqBYzDAKCQwCB+97tJgHQw==",
"dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
},
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"peerDependencies": {
"@popperjs/core": "^2.10.2"
"@popperjs/core": "^2.11.7"
}
},
"node_modules/brace-expansion": {
@ -11116,9 +11122,9 @@
}
},
"@popperjs/core": {
"version": "2.11.5",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz",
"integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==",
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"dev": true
},
"@trysound/sax": {
@ -12037,9 +12043,9 @@
"dev": true
},
"bootstrap": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
"integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.0.tgz",
"integrity": "sha512-UnBV3E3v4STVNQdms6jSGO2CvOkjUMdDAVR2V5N4uCMdaIkaQjbcEAMqRimDHIs4uqBYzDAKCQwCB+97tJgHQw==",
"dev": true,
"requires": {}
},

@ -12,7 +12,7 @@
"devDependencies": {
"@popperjs/core": "^2.10.2",
"axios": "^0.25",
"bootstrap": "^5.1.3",
"bootstrap": "^5.3.0",
"laravel-mix": "^6.0.6",
"lodash": "^4.17.19",
"postcss": "^8.1.14",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -299,7 +299,7 @@ eval("\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function mem
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _CurrencyInput_vue_vue_type_template_id_22dd315e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurrencyInput.vue?vue&type=template&id=22dd315e&scoped=true& */ \"./resources/js/components/CurrencyInput.vue?vue&type=template&id=22dd315e&scoped=true&\");\n/* harmony import */ var _CurrencyInput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurrencyInput.vue?vue&type=script&lang=js& */ \"./resources/js/components/CurrencyInput.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n;\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _CurrencyInput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _CurrencyInput_vue_vue_type_template_id_22dd315e_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _CurrencyInput_vue_vue_type_template_id_22dd315e_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"22dd315e\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"resources/js/components/CurrencyInput.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9DdXJyZW5jeUlucHV0LnZ1ZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXdHO0FBQ3ZDO0FBQ0w7OztBQUc1RDtBQUNBLENBQTZGO0FBQzdGLGdCQUFnQix1R0FBVTtBQUMxQixFQUFFLG1GQUFNO0FBQ1IsRUFBRSxpR0FBTTtBQUNSLEVBQUUsMEdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEVBQUUsWUFpQmY7QUFDRDtBQUNBLGlFQUFlIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvQ3VycmVuY3lJbnB1dC52dWU/MmM4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0N1cnJlbmN5SW5wdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyZGQzMTVlJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0N1cnJlbmN5SW5wdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9DdXJyZW5jeUlucHV0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiMjJkZDMxNWVcIixcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvaG9tZS9mcmVlbWFuL1Byb2plY3RzL2xhcmF2ZWwveFNob3AxMC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcyMmRkMzE1ZScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcyMmRkMzE1ZScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcyMmRkMzE1ZScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ3VycmVuY3lJbnB1dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjJkZDMxNWUmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMjJkZDMxNWUnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInJlc291cmNlcy9qcy9jb21wb25lbnRzL0N1cnJlbmN5SW5wdXQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/components/CurrencyInput.vue\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _CurrencyInput_vue_vue_type_template_id_22dd315e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurrencyInput.vue?vue&type=template&id=22dd315e&scoped=true& */ \"./resources/js/components/CurrencyInput.vue?vue&type=template&id=22dd315e&scoped=true&\");\n/* harmony import */ var _CurrencyInput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurrencyInput.vue?vue&type=script&lang=js& */ \"./resources/js/components/CurrencyInput.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n;\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _CurrencyInput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _CurrencyInput_vue_vue_type_template_id_22dd315e_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _CurrencyInput_vue_vue_type_template_id_22dd315e_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"22dd315e\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"resources/js/components/CurrencyInput.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9DdXJyZW5jeUlucHV0LnZ1ZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXdHO0FBQ3ZDO0FBQ0w7OztBQUc1RDtBQUNBLENBQTZGO0FBQzdGLGdCQUFnQix1R0FBVTtBQUMxQixFQUFFLG1GQUFNO0FBQ1IsRUFBRSxpR0FBTTtBQUNSLEVBQUUsMEdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEVBQUUsWUFpQmY7QUFDRDtBQUNBLGlFQUFlIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvQ3VycmVuY3lJbnB1dC52dWU/MmM4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0N1cnJlbmN5SW5wdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyZGQzMTVlJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0N1cnJlbmN5SW5wdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9DdXJyZW5jeUlucHV0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiMjJkZDMxNWVcIixcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvaG9tZS9mcmVlbWFuL1Byb2plY3RzL3hzdGFjay94U2hvcC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcyMmRkMzE1ZScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcyMmRkMzE1ZScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcyMmRkMzE1ZScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ3VycmVuY3lJbnB1dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjJkZDMxNWUmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMjJkZDMxNWUnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInJlc291cmNlcy9qcy9jb21wb25lbnRzL0N1cnJlbmN5SW5wdXQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/components/CurrencyInput.vue\n");
/***/ }),
@ -310,7 +310,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ExampleComponent_vue_vue_type_template_id_299e239e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ExampleComponent.vue?vue&type=template&id=299e239e& */ \"./resources/js/components/ExampleComponent.vue?vue&type=template&id=299e239e&\");\n/* harmony import */ var _ExampleComponent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ExampleComponent.vue?vue&type=script&lang=js& */ \"./resources/js/components/ExampleComponent.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n;\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _ExampleComponent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _ExampleComponent_vue_vue_type_template_id_299e239e___WEBPACK_IMPORTED_MODULE_0__.render,\n _ExampleComponent_vue_vue_type_template_id_299e239e___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"resources/js/components/ExampleComponent.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9FeGFtcGxlQ29tcG9uZW50LnZ1ZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStGO0FBQzNCO0FBQ0w7OztBQUcvRDtBQUNBLENBQTZGO0FBQzdGLGdCQUFnQix1R0FBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSx3RkFBTTtBQUNSLEVBQUUsaUdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEVBQUUsWUFpQmY7QUFDRDtBQUNBLGlFQUFlIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvRXhhbXBsZUNvbXBvbmVudC52dWU/ZTg1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0V4YW1wbGVDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI5OWUyMzllJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0V4YW1wbGVDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9FeGFtcGxlQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvZnJlZW1hbi9Qcm9qZWN0cy9sYXJhdmVsL3hTaG9wMTAvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnMjk5ZTIzOWUnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnMjk5ZTIzOWUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnMjk5ZTIzOWUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0V4YW1wbGVDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI5OWUyMzllJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzI5OWUyMzllJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJyZXNvdXJjZXMvanMvY29tcG9uZW50cy9FeGFtcGxlQ29tcG9uZW50LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/components/ExampleComponent.vue\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ExampleComponent_vue_vue_type_template_id_299e239e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ExampleComponent.vue?vue&type=template&id=299e239e& */ \"./resources/js/components/ExampleComponent.vue?vue&type=template&id=299e239e&\");\n/* harmony import */ var _ExampleComponent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ExampleComponent.vue?vue&type=script&lang=js& */ \"./resources/js/components/ExampleComponent.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n;\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _ExampleComponent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _ExampleComponent_vue_vue_type_template_id_299e239e___WEBPACK_IMPORTED_MODULE_0__.render,\n _ExampleComponent_vue_vue_type_template_id_299e239e___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"resources/js/components/ExampleComponent.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9FeGFtcGxlQ29tcG9uZW50LnZ1ZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStGO0FBQzNCO0FBQ0w7OztBQUcvRDtBQUNBLENBQTZGO0FBQzdGLGdCQUFnQix1R0FBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSx3RkFBTTtBQUNSLEVBQUUsaUdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEVBQUUsWUFpQmY7QUFDRDtBQUNBLGlFQUFlIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvRXhhbXBsZUNvbXBvbmVudC52dWU/ZTg1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0V4YW1wbGVDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI5OWUyMzllJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0V4YW1wbGVDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9FeGFtcGxlQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvZnJlZW1hbi9Qcm9qZWN0cy94c3RhY2sveFNob3Avbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnMjk5ZTIzOWUnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnMjk5ZTIzOWUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnMjk5ZTIzOWUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0V4YW1wbGVDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI5OWUyMzllJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzI5OWUyMzllJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJyZXNvdXJjZXMvanMvY29tcG9uZW50cy9FeGFtcGxlQ29tcG9uZW50LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/components/ExampleComponent.vue\n");
/***/ }),
@ -321,7 +321,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _MetaElement_vue_vue_type_template_id_5a696ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MetaElement.vue?vue&type=template&id=5a696ec8&scoped=true& */ \"./resources/js/components/MetaElement.vue?vue&type=template&id=5a696ec8&scoped=true&\");\n/* harmony import */ var _MetaElement_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MetaElement.vue?vue&type=script&lang=js& */ \"./resources/js/components/MetaElement.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _MetaElement_vue_vue_type_style_index_0_id_5a696ec8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./MetaElement.vue?vue&type=style&index=0&id=5a696ec8&scoped=true&lang=css& */ \"./resources/js/components/MetaElement.vue?vue&type=style&index=0&id=5a696ec8&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _MetaElement_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _MetaElement_vue_vue_type_template_id_5a696ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _MetaElement_vue_vue_type_template_id_5a696ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"5a696ec8\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"resources/js/components/MetaElement.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9NZXRhRWxlbWVudC52dWUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0c7QUFDdkM7QUFDTDtBQUMxRCxDQUErRjs7O0FBRy9GO0FBQzZGO0FBQzdGLGdCQUFnQix1R0FBVTtBQUMxQixFQUFFLGlGQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEVBQUUsWUFpQmY7QUFDRDtBQUNBLGlFQUFlIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvTWV0YUVsZW1lbnQudnVlP2ZhNjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9NZXRhRWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE2OTZlYzgmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTWV0YUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9NZXRhRWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vTWV0YUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWE2OTZlYzgmc2NvcGVkPXRydWUmbGFuZz1jc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjVhNjk2ZWM4XCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvZnJlZW1hbi9Qcm9qZWN0cy9sYXJhdmVsL3hTaG9wMTAvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNWE2OTZlYzgnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNWE2OTZlYzgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNWE2OTZlYzgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL01ldGFFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTY5NmVjOCZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc1YTY5NmVjOCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvTWV0YUVsZW1lbnQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/components/MetaElement.vue\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _MetaElement_vue_vue_type_template_id_5a696ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MetaElement.vue?vue&type=template&id=5a696ec8&scoped=true& */ \"./resources/js/components/MetaElement.vue?vue&type=template&id=5a696ec8&scoped=true&\");\n/* harmony import */ var _MetaElement_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MetaElement.vue?vue&type=script&lang=js& */ \"./resources/js/components/MetaElement.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _MetaElement_vue_vue_type_style_index_0_id_5a696ec8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./MetaElement.vue?vue&type=style&index=0&id=5a696ec8&scoped=true&lang=css& */ \"./resources/js/components/MetaElement.vue?vue&type=style&index=0&id=5a696ec8&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _MetaElement_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _MetaElement_vue_vue_type_template_id_5a696ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _MetaElement_vue_vue_type_template_id_5a696ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"5a696ec8\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"resources/js/components/MetaElement.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9NZXRhRWxlbWVudC52dWUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0c7QUFDdkM7QUFDTDtBQUMxRCxDQUErRjs7O0FBRy9GO0FBQzZGO0FBQzdGLGdCQUFnQix1R0FBVTtBQUMxQixFQUFFLGlGQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEVBQUUsWUFpQmY7QUFDRDtBQUNBLGlFQUFlIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvTWV0YUVsZW1lbnQudnVlP2ZhNjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9NZXRhRWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE2OTZlYzgmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTWV0YUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9NZXRhRWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vTWV0YUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWE2OTZlYzgmc2NvcGVkPXRydWUmbGFuZz1jc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjVhNjk2ZWM4XCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvZnJlZW1hbi9Qcm9qZWN0cy94c3RhY2sveFNob3Avbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNWE2OTZlYzgnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNWE2OTZlYzgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNWE2OTZlYzgnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL01ldGFFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTY5NmVjOCZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc1YTY5NmVjOCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvTWV0YUVsZW1lbnQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/components/MetaElement.vue\n");
/***/ }),
@ -332,7 +332,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _MetaPrice_vue_vue_type_template_id_7664e32e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MetaPrice.vue?vue&type=template&id=7664e32e&scoped=true& */ \"./resources/js/components/MetaPrice.vue?vue&type=template&id=7664e32e&scoped=true&\");\n/* harmony import */ var _MetaPrice_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MetaPrice.vue?vue&type=script&lang=js& */ \"./resources/js/components/MetaPrice.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _MetaPrice_vue_vue_type_style_index_0_id_7664e32e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./MetaPrice.vue?vue&type=style&index=0&id=7664e32e&scoped=true&lang=css& */ \"./resources/js/components/MetaPrice.vue?vue&type=style&index=0&id=7664e32e&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _MetaPrice_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _MetaPrice_vue_vue_type_template_id_7664e32e_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _MetaPrice_vue_vue_type_template_id_7664e32e_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"7664e32e\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"resources/js/components/MetaPrice.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9NZXRhUHJpY2UudnVlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQW9HO0FBQ3ZDO0FBQ0w7QUFDeEQsQ0FBNkY7OztBQUc3RjtBQUM2RjtBQUM3RixnQkFBZ0IsdUdBQVU7QUFDMUIsRUFBRSwrRUFBTTtBQUNSLEVBQUUsNkZBQU07QUFDUixFQUFFLHNHQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBVSxFQUFFLFlBaUJmO0FBQ0Q7QUFDQSxpRUFBZSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL01ldGFQcmljZS52dWU/NDQ0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL01ldGFQcmljZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzY2NGUzMmUmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTWV0YVByaWNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTWV0YVByaWNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9NZXRhUHJpY2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzY2NGUzMmUmc2NvcGVkPXRydWUmbGFuZz1jc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjc2NjRlMzJlXCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvZnJlZW1hbi9Qcm9qZWN0cy9sYXJhdmVsL3hTaG9wMTAvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNzY2NGUzMmUnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNzY2NGUzMmUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNzY2NGUzMmUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL01ldGFQcmljZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzY2NGUzMmUmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNzY2NGUzMmUnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInJlc291cmNlcy9qcy9jb21wb25lbnRzL01ldGFQcmljZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/components/MetaPrice.vue\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _MetaPrice_vue_vue_type_template_id_7664e32e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MetaPrice.vue?vue&type=template&id=7664e32e&scoped=true& */ \"./resources/js/components/MetaPrice.vue?vue&type=template&id=7664e32e&scoped=true&\");\n/* harmony import */ var _MetaPrice_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MetaPrice.vue?vue&type=script&lang=js& */ \"./resources/js/components/MetaPrice.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _MetaPrice_vue_vue_type_style_index_0_id_7664e32e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./MetaPrice.vue?vue&type=style&index=0&id=7664e32e&scoped=true&lang=css& */ \"./resources/js/components/MetaPrice.vue?vue&type=style&index=0&id=7664e32e&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _MetaPrice_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _MetaPrice_vue_vue_type_template_id_7664e32e_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _MetaPrice_vue_vue_type_template_id_7664e32e_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"7664e32e\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"resources/js/components/MetaPrice.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9NZXRhUHJpY2UudnVlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQW9HO0FBQ3ZDO0FBQ0w7QUFDeEQsQ0FBNkY7OztBQUc3RjtBQUM2RjtBQUM3RixnQkFBZ0IsdUdBQVU7QUFDMUIsRUFBRSwrRUFBTTtBQUNSLEVBQUUsNkZBQU07QUFDUixFQUFFLHNHQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBVSxFQUFFLFlBaUJmO0FBQ0Q7QUFDQSxpRUFBZSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL01ldGFQcmljZS52dWU/NDQ0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL01ldGFQcmljZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzY2NGUzMmUmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTWV0YVByaWNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTWV0YVByaWNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9NZXRhUHJpY2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzY2NGUzMmUmc2NvcGVkPXRydWUmbGFuZz1jc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjc2NjRlMzJlXCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvZnJlZW1hbi9Qcm9qZWN0cy94c3RhY2sveFNob3Avbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNzY2NGUzMmUnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNzY2NGUzMmUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNzY2NGUzMmUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL01ldGFQcmljZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzY2NGUzMmUmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNzY2NGUzMmUnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInJlc291cmNlcy9qcy9jb21wb25lbnRzL01ldGFQcmljZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/components/MetaPrice.vue\n");
/***/ }),

File diff suppressed because one or more lines are too long

@ -379,8 +379,8 @@
"Properties meta": "ویژگی‌های متا",
"Properties sort": "مرتب سازی ویژگی ها",
"Props": "ویژگی متا",
"Publish now": "منشتر کن",
"Published": "منشتر شده",
"Publish now": "منتشر کن",
"Published": "منتشر شده",
"Published at": "منتشر شده در",
"Quantity": "موجودی",
"Question": "سوال",
@ -569,5 +569,30 @@
"transports deleted successfully": "روش ارسال با موفقیت حذف شد",
"updated successfully": "به روز شد",
"weight": "وزن",
"!show": "نمایش",
"!sortStore": "ذخیره ترتیب",
"!sort": "دیدن ترتیب",
"!delete": "حذف",
"!destroy": "حذف",
"!bulk": "کار گروهی",
"!store": "ایجاد کردن",
"!update": "ویرایش کردن",
"!manage": "مدیریت",
"!user": "کاربر",
"!statue": "تغییر وضعیت",
"!reply": "پاسخ",
"!updatetitle": "ویرایش عنوان",
"Show list": "دیدن فهرست",
"ACL": "سطح دسترسی",
"image": "تصاویر",
"menu": "منو",
"comment": "دیدگاه‌ها",
"logs": "لاگ کاربران",
"transport": "شیوه ارسال",
"question": "پرسش‌ها",
"ticket": "پشتیبانی",
"attachment": "پیوست",
"contact": "تماس با ما",
"setting": "تنظیمات",
"yesterday": "دیروز"
}

@ -18,7 +18,7 @@
@import "fix-libs";
// Bootstrap
//@import '~bootstrap/scss/bootstrap';
@import '~bootstrap/dist/css/bootstrap.rtl.min.css';
body {
@ -223,3 +223,9 @@ nav {
justify-content: space-between;
}
}
.rule-title{
border-bottom: 1px solid dodgerblue;
padding: 4px 2rem;
background: rgba(30, 144, 255, 0.26);
}

@ -59,7 +59,7 @@
<input name="postal_code" type="postal_code"
class="form-control @error('postal_code') is-invalid @enderror"
placeholder="{{__('postal_code')}}"
value="{{old('Postal code',$customer->postal_code??null)}}"/>
value="{{old('postal_code',$customer->postal_code??null)}}"/>
</div>
</div>
<div class="col-md-5 mt-3">

@ -22,8 +22,8 @@
action="{{route('admin.user.update',$user->id)}}"
@else
action="{{route('admin.user.store')}}"
@endif
>
@endif
>
@csrf
@if (isset($user))
@ -55,9 +55,9 @@
</label>
<select name="role" id="" class="form-control @error('role') is-invalid @enderror">
<option value="super-admin"
@if (old('role',$user->role??null) == 'super-admin') selected @endif >{{__("Admin")}} </option>
@if (old('role') == 'super-admin') selected @endif >{{__("Admin")}} </option>
<option value="manager"
@if (old('role',$user->role??null) == 'manager' ) selected @endif >{{__("User")}} </option>
@if (old('role',isset($user)?$user->hasRole('manager'):null) == 'manager' ) selected @endif >{{__("User")}} </option>
</select>
</div>
</div>
@ -92,11 +92,87 @@
value="{{old('password_confirmation',$user->password_confirmation??null)}}"/>
</div>
</div>
@if(isset($user) && $user->hasRole('manager'))
<div class="col-12">
<br>
<button class="btn btn-secondary" type="button" data-toggle="collapse"
data-target="#collapseWidthExample" aria-expanded="false"
aria-controls="collapseWidthExample">
{{__("ACL")}}
({{$user->accesses()->count()}})
</button>
<div class="mt-2">
<div class="collapse width" id="collapseWidthExample">
<div class="card card-body">
@foreach($routes as $name => $route)
<div class="switches-holder">
<div class="rule-title">
<div class="form-check form-switch">
<input class="form-check-input main-switch" type="checkbox"
role="switch"
id="main{{$name}}">
<label class="form-check-label"
for="main{{$name}}"> {{__($name)}} </label>
</div>
</div>
<div class="row">
@foreach($route as $r)
<div class="col-md-3">
<div class="px-3 py-2">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox"
role="switch"
name="acl[]"
@if ($user->hasAccess("admin.{$name}.{$r}"))
checked
@endif
value="admin.{{$name}}.{{$r}}"
id="s{{$r}}">
<label class="form-check-label"
for="s{{$r}}">
@if($r == 'all' || $r == 'index' | $r == 'list')
{{__("Show list")}}
@else
{{__('!'.$r)}}
@endif
</label>
</div>
</div>
</div>
@endforeach
</div>
</div>
<hr>
@endforeach
</div>
</div>
</div>
<hr>
</div>
@endif
<div class="col-md-12">
<label> &nbsp;</label>
<input name="" type="submit" class="btn btn-primary mt-2" value="{{__('Save')}}"/>
</div>
</div>
</form>
</div>
@endsection
@section('js-content')
<script>
document.querySelectorAll('.main-switch').forEach(function (chk) {
chk.addEventListener('change', function () {
let state = this.checked;
this.closest('.switches-holder').querySelectorAll('.row input[type="checkbox"]').forEach(function (subCheck) {
subCheck.checked = state;
});
});
})
</script>
@endsection

@ -17,9 +17,20 @@ use Illuminate\Support\Facades\Route;
Route::prefix(config('starter-kit.uri'))->name('admin.')->group(
function () {
Route::group(
['middleware' => ['auth', 'role:super-admin']],
['middleware' => ['auth']],
function () {
Route::prefix('users')->name('user.')->group(
function () {
Route::get('/all', [\App\Http\Controllers\Admin\UserController::class,'index'])->name('all');
Route::get('/delete/{user}', [\App\Http\Controllers\Admin\UserController::class,'destroy'])->name('delete');
Route::get('/create', [\App\Http\Controllers\Admin\UserController::class,'create'])->name('create');
Route::post('/store', [\App\Http\Controllers\Admin\UserController::class,'store'])->name('store');
Route::get('/edit/{user}', [\App\Http\Controllers\Admin\UserController::class,'edit'])->name('edit');
Route::post('/update/{user}', [\App\Http\Controllers\Admin\UserController::class,'update'])->name('update');
});
Route::prefix('cat')->name('cat.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\CatController::class, "index"])->name('index');

Loading…
Cancel
Save