932 changed files with 317420 additions and 13 deletions
@ -0,0 +1,18 @@ |
|||
root = true |
|||
|
|||
[*] |
|||
charset = utf-8 |
|||
end_of_line = lf |
|||
insert_final_newline = true |
|||
indent_style = space |
|||
indent_size = 4 |
|||
trim_trailing_whitespace = true |
|||
|
|||
[*.md] |
|||
trim_trailing_whitespace = false |
|||
|
|||
[*.{yml,yaml}] |
|||
indent_size = 2 |
|||
|
|||
[docker-compose.yml] |
|||
indent_size = 4 |
|||
@ -0,0 +1,58 @@ |
|||
APP_NAME=Laravel |
|||
APP_ENV=local |
|||
APP_KEY= |
|||
APP_DEBUG=true |
|||
APP_URL=http://localhost |
|||
|
|||
LOG_CHANNEL=stack |
|||
LOG_DEPRECATIONS_CHANNEL=null |
|||
LOG_LEVEL=debug |
|||
|
|||
DB_CONNECTION=mysql |
|||
DB_HOST=127.0.0.1 |
|||
DB_PORT=3306 |
|||
DB_DATABASE=laravel |
|||
DB_USERNAME=root |
|||
DB_PASSWORD= |
|||
|
|||
BROADCAST_DRIVER=log |
|||
CACHE_DRIVER=file |
|||
FILESYSTEM_DISK=local |
|||
QUEUE_CONNECTION=sync |
|||
SESSION_DRIVER=file |
|||
SESSION_LIFETIME=120 |
|||
|
|||
MEMCACHED_HOST=127.0.0.1 |
|||
|
|||
REDIS_HOST=127.0.0.1 |
|||
REDIS_PASSWORD=null |
|||
REDIS_PORT=6379 |
|||
|
|||
MAIL_MAILER=smtp |
|||
MAIL_HOST=mailhog |
|||
MAIL_PORT=1025 |
|||
MAIL_USERNAME=null |
|||
MAIL_PASSWORD=null |
|||
MAIL_ENCRYPTION=null |
|||
MAIL_FROM_ADDRESS="hello@example.com" |
|||
MAIL_FROM_NAME="${APP_NAME}" |
|||
|
|||
AWS_ACCESS_KEY_ID= |
|||
AWS_SECRET_ACCESS_KEY= |
|||
AWS_DEFAULT_REGION=us-east-1 |
|||
AWS_BUCKET= |
|||
AWS_USE_PATH_STYLE_ENDPOINT=false |
|||
|
|||
PUSHER_APP_ID= |
|||
PUSHER_APP_KEY= |
|||
PUSHER_APP_SECRET= |
|||
PUSHER_HOST= |
|||
PUSHER_PORT=443 |
|||
PUSHER_SCHEME=https |
|||
PUSHER_APP_CLUSTER=mt1 |
|||
|
|||
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" |
|||
VITE_PUSHER_HOST="${PUSHER_HOST}" |
|||
VITE_PUSHER_PORT="${PUSHER_PORT}" |
|||
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" |
|||
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" |
|||
@ -0,0 +1,11 @@ |
|||
* text=auto |
|||
|
|||
*.blade.php diff=html |
|||
*.css diff=css |
|||
*.html diff=html |
|||
*.md diff=markdown |
|||
*.php diff=php |
|||
|
|||
/.github export-ignore |
|||
CHANGELOG.md export-ignore |
|||
.styleci.yml export-ignore |
|||
@ -0,0 +1,16 @@ |
|||
/node_modules |
|||
/public/build |
|||
/public/hot |
|||
/public/storage |
|||
/storage/*.key |
|||
/vendor |
|||
.env |
|||
.env.backup |
|||
.phpunit.result.cache |
|||
Homestead.json |
|||
Homestead.yaml |
|||
auth.json |
|||
npm-debug.log |
|||
yarn-error.log |
|||
/.idea |
|||
/.vscode |
|||
@ -0,0 +1,9 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
|
|||
use Dcat\Admin\Http\Controllers\AuthController as BaseAuthController; |
|||
|
|||
class AuthController extends BaseAuthController |
|||
{ |
|||
} |
|||
@ -0,0 +1,96 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
|
|||
use App\Admin\Repositories\EquipResourceRecord; |
|||
use App\Admin\Services\EquipResourceRecordService; |
|||
use Dcat\Admin\Form; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Show; |
|||
use Dcat\Admin\Http\Controllers\AdminController; |
|||
|
|||
class EquipResourceRecordController extends AdminController |
|||
{ |
|||
/** |
|||
* Make a grid builder. |
|||
* |
|||
* @return Grid |
|||
*/ |
|||
protected function grid() |
|||
{ |
|||
return Grid::make(new EquipResourceRecord(), function (Grid $grid) { |
|||
$grid->column('id')->sortable(); |
|||
$grid->column('imei'); |
|||
$grid->column('obj_id'); |
|||
$grid->column('obj_inst_id'); |
|||
$grid->column('mode'); |
|||
$grid->column('expired_time'); |
|||
$grid->column('trigger_msg'); |
|||
$grid->column('created_at'); |
|||
$grid->column('updated_at')->sortable(); |
|||
|
|||
$grid->filter(function (Grid\Filter $filter) { |
|||
$filter->equal('id'); |
|||
|
|||
}); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Make a show builder. |
|||
* |
|||
* @param mixed $id |
|||
* |
|||
* @return Show |
|||
*/ |
|||
protected function detail($id) |
|||
{ |
|||
return Show::make($id, new EquipResourceRecord(), function (Show $show) { |
|||
$show->field('id'); |
|||
$show->field('imei'); |
|||
$show->field('obj_id'); |
|||
$show->field('obj_inst_id'); |
|||
$show->field('mode'); |
|||
$show->field('expired_time'); |
|||
$show->field('trigger_msg'); |
|||
$show->field('created_at'); |
|||
$show->field('updated_at'); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Make a form builder. |
|||
* |
|||
* @return Form |
|||
*/ |
|||
protected function form() |
|||
{ |
|||
// $equip_resource_service = new EquipResourceRecordService(); |
|||
// |
|||
// return $equip_resource_service->writeCache(); |
|||
|
|||
return Form::make(new EquipResourceRecord(), function (Form $form) { |
|||
$form->display('id'); |
|||
$form->text('imei'); |
|||
$form->text('obj_id'); |
|||
$form->text('obj_inst_id'); |
|||
$form->text('mode'); |
|||
$form->text('expired_time'); |
|||
$form->text('trigger_msg'); |
|||
|
|||
$form->display('created_at'); |
|||
$form->display('updated_at'); |
|||
}); |
|||
} |
|||
|
|||
public function store() |
|||
{ |
|||
|
|||
$param = request()->only(['imei', 'obj_id', 'obj_inst_id', 'mode', 'expired_time', 'trigger_msg']); |
|||
$equip_resource_service = new EquipResourceRecordService(); |
|||
|
|||
return $equip_resource_service->writeCache($param); |
|||
|
|||
return $this->form()->store(); |
|||
} |
|||
} |
|||
@ -0,0 +1,42 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
|
|||
use App\Admin\Metrics\Examples; |
|||
use App\Http\Controllers\Controller; |
|||
use Dcat\Admin\Http\Controllers\Dashboard; |
|||
use Dcat\Admin\Layout\Column; |
|||
use Dcat\Admin\Layout\Content; |
|||
use Dcat\Admin\Layout\Row; |
|||
|
|||
class HomeController extends Controller |
|||
{ |
|||
public function index(Content $content) |
|||
{ |
|||
return $content |
|||
->header('Dashboard') |
|||
->description('Description...') |
|||
->body(function (Row $row) { |
|||
$row->column(6, function (Column $column) { |
|||
$column->row(Dashboard::title()); |
|||
$column->row(new Examples\Tickets()); |
|||
}); |
|||
|
|||
$row->column(6, function (Column $column) { |
|||
$column->row(function (Row $row) { |
|||
$row->column(6, new Examples\NewUsers()); |
|||
$row->column(6, new Examples\NewDevices()); |
|||
}); |
|||
|
|||
$column->row(new Examples\Sessions()); |
|||
$column->row(new Examples\ProductOrders()); |
|||
}); |
|||
}); |
|||
} |
|||
|
|||
public function test() |
|||
{ |
|||
return ['a'=>'b']; |
|||
var_dump(request()->all()); |
|||
} |
|||
} |
|||
@ -0,0 +1,100 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Metrics\Examples; |
|||
|
|||
use Dcat\Admin\Admin; |
|||
use Dcat\Admin\Widgets\Metrics\Donut; |
|||
|
|||
class NewDevices extends Donut |
|||
{ |
|||
protected $labels = ['Desktop', 'Mobile']; |
|||
|
|||
/** |
|||
* 初始化卡片内容 |
|||
*/ |
|||
protected function init() |
|||
{ |
|||
parent::init(); |
|||
|
|||
$color = Admin::color(); |
|||
$colors = [$color->primary(), $color->alpha('blue2', 0.5)]; |
|||
|
|||
$this->title('New Devices'); |
|||
$this->subTitle('Last 30 days'); |
|||
$this->chartLabels($this->labels); |
|||
// 设置图表颜色 |
|||
$this->chartColors($colors); |
|||
} |
|||
|
|||
/** |
|||
* 渲染模板 |
|||
* |
|||
* @return string |
|||
*/ |
|||
public function render() |
|||
{ |
|||
$this->fill(); |
|||
|
|||
return parent::render(); |
|||
} |
|||
|
|||
/** |
|||
* 写入数据. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function fill() |
|||
{ |
|||
$this->withContent(44.9, 28.6); |
|||
|
|||
// 图表数据 |
|||
$this->withChart([44.9, 28.6]); |
|||
} |
|||
|
|||
/** |
|||
* 设置图表数据. |
|||
* |
|||
* @param array $data |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withChart(array $data) |
|||
{ |
|||
return $this->chart([ |
|||
'series' => $data |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 设置卡片头部内容. |
|||
* |
|||
* @param mixed $desktop |
|||
* @param mixed $mobile |
|||
* |
|||
* @return $this |
|||
*/ |
|||
protected function withContent($desktop, $mobile) |
|||
{ |
|||
$blue = Admin::color()->alpha('blue2', 0.5); |
|||
|
|||
$style = 'margin-bottom: 8px'; |
|||
$labelWidth = 120; |
|||
|
|||
return $this->content( |
|||
<<<HTML |
|||
<div class="d-flex pl-1 pr-1 pt-1" style="{$style}"> |
|||
<div style="width: {$labelWidth}px"> |
|||
<i class="fa fa-circle text-primary"></i> {$this->labels[0]} |
|||
</div> |
|||
<div>{$desktop}</div> |
|||
</div> |
|||
<div class="d-flex pl-1 pr-1" style="{$style}"> |
|||
<div style="width: {$labelWidth}px"> |
|||
<i class="fa fa-circle" style="color: $blue"></i> {$this->labels[1]} |
|||
</div> |
|||
<div>{$mobile}</div> |
|||
</div> |
|||
HTML |
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,108 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Metrics\Examples; |
|||
|
|||
use Dcat\Admin\Widgets\Metrics\Line; |
|||
use Illuminate\Http\Request; |
|||
|
|||
class NewUsers extends Line |
|||
{ |
|||
/** |
|||
* 初始化卡片内容 |
|||
* |
|||
* @return void |
|||
*/ |
|||
protected function init() |
|||
{ |
|||
parent::init(); |
|||
|
|||
$this->title('New Users'); |
|||
$this->dropdown([ |
|||
'7' => 'Last 7 Days', |
|||
'28' => 'Last 28 Days', |
|||
'30' => 'Last Month', |
|||
'365' => 'Last Year', |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 处理请求 |
|||
* |
|||
* @param Request $request |
|||
* |
|||
* @return mixed|void |
|||
*/ |
|||
public function handle(Request $request) |
|||
{ |
|||
$generator = function ($len, $min = 10, $max = 300) { |
|||
for ($i = 0; $i <= $len; $i++) { |
|||
yield mt_rand($min, $max); |
|||
} |
|||
}; |
|||
|
|||
switch ($request->get('option')) { |
|||
case '365': |
|||
// 卡片内容 |
|||
$this->withContent(mt_rand(1000, 5000).'k'); |
|||
// 图表数据 |
|||
$this->withChart(collect($generator(30))->toArray()); |
|||
break; |
|||
case '30': |
|||
// 卡片内容 |
|||
$this->withContent(mt_rand(400, 1000).'k'); |
|||
// 图表数据 |
|||
$this->withChart(collect($generator(30))->toArray()); |
|||
break; |
|||
case '28': |
|||
// 卡片内容 |
|||
$this->withContent(mt_rand(400, 1000).'k'); |
|||
// 图表数据 |
|||
$this->withChart(collect($generator(28))->toArray()); |
|||
break; |
|||
case '7': |
|||
default: |
|||
// 卡片内容 |
|||
$this->withContent('89.2k'); |
|||
// 图表数据 |
|||
$this->withChart([28, 40, 36, 52, 38, 60, 55,]); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 设置图表数据. |
|||
* |
|||
* @param array $data |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withChart(array $data) |
|||
{ |
|||
return $this->chart([ |
|||
'series' => [ |
|||
[ |
|||
'name' => $this->title, |
|||
'data' => $data, |
|||
], |
|||
], |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 设置卡片内容. |
|||
* |
|||
* @param string $content |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withContent($content) |
|||
{ |
|||
return $this->content( |
|||
<<<HTML |
|||
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px"> |
|||
<h2 class="ml-1 font-lg-1">{$content}</h2> |
|||
<span class="mb-0 mr-1 text-80">{$this->title}</span> |
|||
</div> |
|||
HTML |
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,114 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Metrics\Examples; |
|||
|
|||
use Dcat\Admin\Widgets\Metrics\Round; |
|||
use Illuminate\Http\Request; |
|||
|
|||
class ProductOrders extends Round |
|||
{ |
|||
/** |
|||
* 初始化卡片内容 |
|||
*/ |
|||
protected function init() |
|||
{ |
|||
parent::init(); |
|||
|
|||
$this->title('Product Orders'); |
|||
$this->chartLabels(['Finished', 'Pending', 'Rejected']); |
|||
$this->dropdown([ |
|||
'7' => 'Last 7 Days', |
|||
'28' => 'Last 28 Days', |
|||
'30' => 'Last Month', |
|||
'365' => 'Last Year', |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 处理请求 |
|||
* |
|||
* @param Request $request |
|||
* |
|||
* @return mixed|void |
|||
*/ |
|||
public function handle(Request $request) |
|||
{ |
|||
switch ($request->get('option')) { |
|||
case '365': |
|||
case '30': |
|||
case '28': |
|||
case '7': |
|||
default: |
|||
// 卡片内容 |
|||
$this->withContent(23043, 14658, 4758); |
|||
|
|||
// 图表数据 |
|||
$this->withChart([70, 52, 26]); |
|||
|
|||
// 总数 |
|||
$this->chartTotal('Total', 344); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 设置图表数据. |
|||
* |
|||
* @param array $data |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withChart(array $data) |
|||
{ |
|||
return $this->chart([ |
|||
'series' => $data, |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 卡片内容. |
|||
* |
|||
* @param int $finished |
|||
* @param int $pending |
|||
* @param int $rejected |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withContent($finished, $pending, $rejected) |
|||
{ |
|||
return $this->content( |
|||
<<<HTML |
|||
<div class="col-12 d-flex flex-column flex-wrap text-center" style="max-width: 220px"> |
|||
<div class="chart-info d-flex justify-content-between mb-1 mt-2" > |
|||
<div class="series-info d-flex align-items-center"> |
|||
<i class="fa fa-circle-o text-bold-700 text-primary"></i> |
|||
<span class="text-bold-600 ml-50">Finished</span> |
|||
</div> |
|||
<div class="product-result"> |
|||
<span>{$finished}</span> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="chart-info d-flex justify-content-between mb-1"> |
|||
<div class="series-info d-flex align-items-center"> |
|||
<i class="fa fa-circle-o text-bold-700 text-warning"></i> |
|||
<span class="text-bold-600 ml-50">Pending</span> |
|||
</div> |
|||
<div class="product-result"> |
|||
<span>{$pending}</span> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="chart-info d-flex justify-content-between mb-1"> |
|||
<div class="series-info d-flex align-items-center"> |
|||
<i class="fa fa-circle-o text-bold-700 text-danger"></i> |
|||
<span class="text-bold-600 ml-50">Rejected</span> |
|||
</div> |
|||
<div class="product-result"> |
|||
<span>{$rejected}</span> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
HTML |
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,117 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Metrics\Examples; |
|||
|
|||
use Dcat\Admin\Admin; |
|||
use Dcat\Admin\Widgets\Metrics\Bar; |
|||
use Illuminate\Http\Request; |
|||
|
|||
class Sessions extends Bar |
|||
{ |
|||
/** |
|||
* 初始化卡片内容 |
|||
*/ |
|||
protected function init() |
|||
{ |
|||
parent::init(); |
|||
|
|||
$color = Admin::color(); |
|||
|
|||
$dark35 = $color->dark35(); |
|||
|
|||
// 卡片内容宽度 |
|||
$this->contentWidth(5, 7); |
|||
// 标题 |
|||
$this->title('Avg Sessions'); |
|||
// 设置下拉选项 |
|||
$this->dropdown([ |
|||
'7' => 'Last 7 Days', |
|||
'28' => 'Last 28 Days', |
|||
'30' => 'Last Month', |
|||
'365' => 'Last Year', |
|||
]); |
|||
// 设置图表颜色 |
|||
$this->chartColors([ |
|||
$dark35, |
|||
$dark35, |
|||
$color->primary(), |
|||
$dark35, |
|||
$dark35, |
|||
$dark35 |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 处理请求 |
|||
* |
|||
* @param Request $request |
|||
* |
|||
* @return mixed|void |
|||
*/ |
|||
public function handle(Request $request) |
|||
{ |
|||
switch ($request->get('option')) { |
|||
case '7': |
|||
default: |
|||
// 卡片内容 |
|||
$this->withContent('2.7k', '+5.2%'); |
|||
|
|||
// 图表数据 |
|||
$this->withChart([ |
|||
[ |
|||
'name' => 'Sessions', |
|||
'data' => [75, 125, 225, 175, 125, 75, 25], |
|||
], |
|||
]); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 设置图表数据. |
|||
* |
|||
* @param array $data |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withChart(array $data) |
|||
{ |
|||
return $this->chart([ |
|||
'series' => $data, |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 设置卡片内容. |
|||
* |
|||
* @param string $title |
|||
* @param string $value |
|||
* @param string $style |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withContent($title, $value, $style = 'success') |
|||
{ |
|||
// 根据选项显示 |
|||
$label = strtolower( |
|||
$this->dropdown[request()->option] ?? 'last 7 days' |
|||
); |
|||
|
|||
$minHeight = '183px'; |
|||
|
|||
return $this->content( |
|||
<<<HTML |
|||
<div class="d-flex p-1 flex-column justify-content-between" style="padding-top: 0;width: 100%;height: 100%;min-height: {$minHeight}"> |
|||
<div class="text-left"> |
|||
<h1 class="font-lg-2 mt-2 mb-0">{$title}</h1> |
|||
<h5 class="font-medium-2" style="margin-top: 10px;"> |
|||
<span class="text-{$style}">{$value} </span> |
|||
<span>vs {$label}</span> |
|||
</h5> |
|||
</div> |
|||
|
|||
<a href="#" class="btn btn-primary shadow waves-effect waves-light">View Details <i class="feather icon-chevrons-right"></i></a> |
|||
</div> |
|||
HTML |
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,116 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Metrics\Examples; |
|||
|
|||
use Dcat\Admin\Widgets\Metrics\RadialBar; |
|||
use Illuminate\Http\Request; |
|||
|
|||
class Tickets extends RadialBar |
|||
{ |
|||
/** |
|||
* 初始化卡片内容 |
|||
*/ |
|||
protected function init() |
|||
{ |
|||
parent::init(); |
|||
|
|||
$this->title('Tickets'); |
|||
$this->height(400); |
|||
$this->chartHeight(300); |
|||
$this->chartLabels('Completed Tickets'); |
|||
$this->dropdown([ |
|||
'7' => 'Last 7 Days', |
|||
'28' => 'Last 28 Days', |
|||
'30' => 'Last Month', |
|||
'365' => 'Last Year', |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 处理请求 |
|||
* |
|||
* @param Request $request |
|||
* |
|||
* @return mixed|void |
|||
*/ |
|||
public function handle(Request $request) |
|||
{ |
|||
switch ($request->get('option')) { |
|||
case '365': |
|||
case '30': |
|||
case '28': |
|||
case '7': |
|||
default: |
|||
// 卡片内容 |
|||
$this->withContent(162); |
|||
// 卡片底部 |
|||
$this->withFooter(29, 63, '1d'); |
|||
// 图表数据 |
|||
$this->withChart(83); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 设置图表数据. |
|||
* |
|||
* @param int $data |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withChart(int $data) |
|||
{ |
|||
return $this->chart([ |
|||
'series' => [$data], |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 卡片内容 |
|||
* |
|||
* @param string $content |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withContent($content) |
|||
{ |
|||
return $this->content( |
|||
<<<HTML |
|||
<div class="d-flex flex-column flex-wrap text-center"> |
|||
<h1 class="font-lg-2 mt-2 mb-0">{$content}</h1> |
|||
<small>Tickets</small> |
|||
</div> |
|||
HTML |
|||
); |
|||
} |
|||
|
|||
/** |
|||
* 卡片底部内容. |
|||
* |
|||
* @param string $new |
|||
* @param string $open |
|||
* @param string $response |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function withFooter($new, $open, $response) |
|||
{ |
|||
return $this->footer( |
|||
<<<HTML |
|||
<div class="d-flex justify-content-between p-1" style="padding-top: 0!important;"> |
|||
<div class="text-center"> |
|||
<p>New Tickets</p> |
|||
<span class="font-lg-1">{$new}</span> |
|||
</div> |
|||
<div class="text-center"> |
|||
<p>Open Tickets</p> |
|||
<span class="font-lg-1">{$open}</span> |
|||
</div> |
|||
<div class="text-center"> |
|||
<p>Response Time</p> |
|||
<span class="font-lg-1">{$response}</span> |
|||
</div> |
|||
</div> |
|||
HTML |
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,129 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Metrics\Examples; |
|||
|
|||
use Dcat\Admin\Widgets\Metrics\Card; |
|||
use Illuminate\Contracts\Support\Renderable; |
|||
use Illuminate\Http\Request; |
|||
|
|||
class TotalUsers extends Card |
|||
{ |
|||
/** |
|||
* 卡片底部内容. |
|||
* |
|||
* @var string|Renderable|\Closure |
|||
*/ |
|||
protected $footer; |
|||
|
|||
/** |
|||
* 初始化卡片. |
|||
*/ |
|||
protected function init() |
|||
{ |
|||
parent::init(); |
|||
|
|||
$this->title('Total Users'); |
|||
$this->dropdown([ |
|||
'7' => 'Last 7 Days', |
|||
'28' => 'Last 28 Days', |
|||
'30' => 'Last Month', |
|||
'365' => 'Last Year', |
|||
]); |
|||
} |
|||
|
|||
/** |
|||
* 处理请求. |
|||
* |
|||
* @param Request $request |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function handle(Request $request) |
|||
{ |
|||
switch ($request->get('option')) { |
|||
case '365': |
|||
$this->content(mt_rand(600, 1500)); |
|||
$this->down(mt_rand(1, 30)); |
|||
break; |
|||
case '30': |
|||
$this->content(mt_rand(170, 250)); |
|||
$this->up(mt_rand(12, 50)); |
|||
break; |
|||
case '28': |
|||
$this->content(mt_rand(155, 200)); |
|||
$this->up(mt_rand(5, 50)); |
|||
break; |
|||
case '7': |
|||
default: |
|||
$this->content(143); |
|||
$this->up(15); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* @param int $percent |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function up($percent) |
|||
{ |
|||
return $this->footer( |
|||
"<i class=\"feather icon-trending-up text-success\"></i> {$percent}% Increase" |
|||
); |
|||
} |
|||
|
|||
/** |
|||
* @param int $percent |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function down($percent) |
|||
{ |
|||
return $this->footer( |
|||
"<i class=\"feather icon-trending-down text-danger\"></i> {$percent}% Decrease" |
|||
); |
|||
} |
|||
|
|||
/** |
|||
* 设置卡片底部内容. |
|||
* |
|||
* @param string|Renderable|\Closure $footer |
|||
* |
|||
* @return $this |
|||
*/ |
|||
public function footer($footer) |
|||
{ |
|||
$this->footer = $footer; |
|||
|
|||
return $this; |
|||
} |
|||
|
|||
/** |
|||
* 渲染卡片内容. |
|||
* |
|||
* @return string |
|||
*/ |
|||
public function renderContent() |
|||
{ |
|||
$content = parent::renderContent(); |
|||
|
|||
return <<<HTML |
|||
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px"> |
|||
<h2 class="ml-1 font-lg-1">{$content}</h2> |
|||
</div> |
|||
<div class="ml-1 mt-1 font-weight-bold text-80"> |
|||
{$this->renderFooter()} |
|||
</div> |
|||
HTML; |
|||
} |
|||
|
|||
/** |
|||
* 渲染卡片底部内容. |
|||
* |
|||
* @return string |
|||
*/ |
|||
public function renderFooter() |
|||
{ |
|||
return $this->toString($this->footer); |
|||
} |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Repositories; |
|||
|
|||
use App\Models\EquipResourceRecord as Model; |
|||
use Dcat\Admin\Repositories\EloquentRepository; |
|||
|
|||
class EquipResourceRecord extends EloquentRepository |
|||
{ |
|||
/** |
|||
* Model. |
|||
* |
|||
* @var string |
|||
*/ |
|||
protected $eloquentClass = Model::class; |
|||
} |
|||
@ -0,0 +1,64 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Services; |
|||
|
|||
use GuzzleHttp\Client; |
|||
use Illuminate\Support\Facades\Http; |
|||
|
|||
class EquipResourceRecordService |
|||
{ |
|||
public function writeCache($param) |
|||
{ |
|||
|
|||
$query = http_build_query($param); |
|||
// Http::fake(); |
|||
// $response = Http::acceptJson() |
|||
// ->withHeaders([ |
|||
// 'api-key' => 'uEMPPhc4XKb25VLQSRJ3u=goLuw=', |
|||
// 'Content-Type' => 'application/json', |
|||
// ])->dump() |
|||
// ->post(config('onenet.api_host') . '/nbiot/offline?' . $query, [ |
|||
// 'data' => [ |
|||
// [ |
|||
// 'res_id' => 5750, |
|||
// 'val' => '68C0086647205990206801090111000000000002018D16', |
|||
// ] |
|||
// ] |
|||
// ]); |
|||
|
|||
// $response = Http::acceptJson() |
|||
// ->withHeaders([ |
|||
// 'api-key' => 'uEMPPhc4XKb25VLQSRJ3u=goLuw=', |
|||
// 'Content-Type' => 'application/json', |
|||
// ])->dump() |
|||
// ->post('http://local.onenetadmin.com/admin/test?' . $query, [ |
|||
// 'data' => [ |
|||
// [ |
|||
// 'res_id' => 5750, |
|||
// 'val' => '68C0086647205990206801090111000000000002018D16', |
|||
// ] |
|||
// ] |
|||
// ]); |
|||
$client = new Client([ |
|||
'base_uri' => config('onenet.api_host'), |
|||
'handler' => [ |
|||
'api-key' => 'uEMPPhc4XKb25VLQSRJ3u=goLuw=', |
|||
] |
|||
|
|||
]); |
|||
$response = $client->request('POST', '/nbiot/offline?' . $query, [ |
|||
'json' => [ |
|||
'data' => [ |
|||
[ |
|||
'res_id' => 5750, |
|||
'val' => '68C0086647205990206801090111000000000002018D16', |
|||
] |
|||
] |
|||
] |
|||
]); |
|||
|
|||
|
|||
var_dump($response->getBody()->getContents()); |
|||
// return $response->json(); |
|||
} |
|||
} |
|||
@ -0,0 +1,26 @@ |
|||
<?php |
|||
|
|||
use Dcat\Admin\Admin; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Form; |
|||
use Dcat\Admin\Grid\Filter; |
|||
use Dcat\Admin\Show; |
|||
|
|||
/** |
|||
* Dcat-admin - admin builder based on Laravel. |
|||
* @author jqh <https://github.com/jqhph> |
|||
* |
|||
* Bootstraper for Admin. |
|||
* |
|||
* Here you can remove builtin form field: |
|||
* |
|||
* extend custom field: |
|||
* Dcat\Admin\Form::extend('php', PHPEditor::class); |
|||
* Dcat\Admin\Grid\Column::extend('php', PHPEditor::class); |
|||
* Dcat\Admin\Grid\Filter::extend('php', PHPEditor::class); |
|||
* |
|||
* Or require js and css assets: |
|||
* Admin::css('/packages/prettydocs/css/styles.css'); |
|||
* Admin::js('/packages/prettydocs/js/main.js'); |
|||
* |
|||
*/ |
|||
@ -0,0 +1,30 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Routing\Router; |
|||
use Illuminate\Support\Facades\Route; |
|||
use Dcat\Admin\Admin; |
|||
|
|||
Admin::routes(); |
|||
|
|||
Route::group([ |
|||
'prefix' => config('admin.route.prefix'), |
|||
'namespace' => config('admin.route.namespace'), |
|||
'middleware' => config('admin.route.middleware'), |
|||
], function (Router $router) { |
|||
|
|||
$router->get('/', 'HomeController@index'); |
|||
$router->post('/test', 'HomeController@test'); |
|||
$router->resource('equip_resource', 'EquipResourceRecordController'); |
|||
|
|||
}); |
|||
|
|||
|
|||
Route::group([ |
|||
'prefix' => config('admin.route.prefix'), |
|||
'namespace' => config('admin.route.namespace'), |
|||
], function (Router $router) { |
|||
|
|||
$router->get('/test', 'HomeController@test'); |
|||
|
|||
}); |
|||
|
|||
@ -0,0 +1,32 @@ |
|||
<?php |
|||
|
|||
namespace App\Console; |
|||
|
|||
use Illuminate\Console\Scheduling\Schedule; |
|||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; |
|||
|
|||
class Kernel extends ConsoleKernel |
|||
{ |
|||
/** |
|||
* Define the application's command schedule. |
|||
* |
|||
* @param \Illuminate\Console\Scheduling\Schedule $schedule |
|||
* @return void |
|||
*/ |
|||
protected function schedule(Schedule $schedule) |
|||
{ |
|||
// $schedule->command('inspire')->hourly(); |
|||
} |
|||
|
|||
/** |
|||
* Register the commands for the application. |
|||
* |
|||
* @return void |
|||
*/ |
|||
protected function commands() |
|||
{ |
|||
$this->load(__DIR__.'/Commands'); |
|||
|
|||
require base_path('routes/console.php'); |
|||
} |
|||
} |
|||
@ -0,0 +1,50 @@ |
|||
<?php |
|||
|
|||
namespace App\Exceptions; |
|||
|
|||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; |
|||
use Throwable; |
|||
|
|||
class Handler extends ExceptionHandler |
|||
{ |
|||
/** |
|||
* A list of exception types with their corresponding custom log levels. |
|||
* |
|||
* @var array<class-string<\Throwable>, \Psr\Log\LogLevel::*> |
|||
*/ |
|||
protected $levels = [ |
|||
// |
|||
]; |
|||
|
|||
/** |
|||
* A list of the exception types that are not reported. |
|||
* |
|||
* @var array<int, class-string<\Throwable>> |
|||
*/ |
|||
protected $dontReport = [ |
|||
// |
|||
]; |
|||
|
|||
/** |
|||
* A list of the inputs that are never flashed to the session on validation exceptions. |
|||
* |
|||
* @var array<int, string> |
|||
*/ |
|||
protected $dontFlash = [ |
|||
'current_password', |
|||
'password', |
|||
'password_confirmation', |
|||
]; |
|||
|
|||
/** |
|||
* Register the exception handling callbacks for the application. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function register() |
|||
{ |
|||
$this->reportable(function (Throwable $e) { |
|||
// |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Controllers; |
|||
|
|||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; |
|||
use Illuminate\Foundation\Bus\DispatchesJobs; |
|||
use Illuminate\Foundation\Validation\ValidatesRequests; |
|||
use Illuminate\Routing\Controller as BaseController; |
|||
|
|||
class Controller extends BaseController |
|||
{ |
|||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests; |
|||
} |
|||
@ -0,0 +1,67 @@ |
|||
<?php |
|||
|
|||
namespace App\Http; |
|||
|
|||
use Illuminate\Foundation\Http\Kernel as HttpKernel; |
|||
|
|||
class Kernel extends HttpKernel |
|||
{ |
|||
/** |
|||
* The application's global HTTP middleware stack. |
|||
* |
|||
* These middleware are run during every request to your application. |
|||
* |
|||
* @var array<int, class-string|string> |
|||
*/ |
|||
protected $middleware = [ |
|||
// \App\Http\Middleware\TrustHosts::class, |
|||
\App\Http\Middleware\TrustProxies::class, |
|||
\Illuminate\Http\Middleware\HandleCors::class, |
|||
\App\Http\Middleware\PreventRequestsDuringMaintenance::class, |
|||
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, |
|||
\App\Http\Middleware\TrimStrings::class, |
|||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, |
|||
]; |
|||
|
|||
/** |
|||
* The application's route middleware groups. |
|||
* |
|||
* @var array<string, array<int, class-string|string>> |
|||
*/ |
|||
protected $middlewareGroups = [ |
|||
'web' => [ |
|||
\App\Http\Middleware\EncryptCookies::class, |
|||
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, |
|||
\Illuminate\Session\Middleware\StartSession::class, |
|||
\Illuminate\View\Middleware\ShareErrorsFromSession::class, |
|||
\App\Http\Middleware\VerifyCsrfToken::class, |
|||
\Illuminate\Routing\Middleware\SubstituteBindings::class, |
|||
], |
|||
|
|||
'api' => [ |
|||
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, |
|||
'throttle:api', |
|||
\Illuminate\Routing\Middleware\SubstituteBindings::class, |
|||
], |
|||
]; |
|||
|
|||
/** |
|||
* The application's route middleware. |
|||
* |
|||
* These middleware may be assigned to groups or used individually. |
|||
* |
|||
* @var array<string, class-string|string> |
|||
*/ |
|||
protected $routeMiddleware = [ |
|||
'auth' => \App\Http\Middleware\Authenticate::class, |
|||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, |
|||
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, |
|||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, |
|||
'can' => \Illuminate\Auth\Middleware\Authorize::class, |
|||
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, |
|||
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, |
|||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, |
|||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, |
|||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, |
|||
]; |
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use Illuminate\Auth\Middleware\Authenticate as Middleware; |
|||
|
|||
class Authenticate extends Middleware |
|||
{ |
|||
/** |
|||
* Get the path the user should be redirected to when they are not authenticated. |
|||
* |
|||
* @param \Illuminate\Http\Request $request |
|||
* @return string|null |
|||
*/ |
|||
protected function redirectTo($request) |
|||
{ |
|||
if (! $request->expectsJson()) { |
|||
return route('login'); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; |
|||
|
|||
class EncryptCookies extends Middleware |
|||
{ |
|||
/** |
|||
* The names of the cookies that should not be encrypted. |
|||
* |
|||
* @var array<int, string> |
|||
*/ |
|||
protected $except = [ |
|||
// |
|||
]; |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware; |
|||
|
|||
class PreventRequestsDuringMaintenance extends Middleware |
|||
{ |
|||
/** |
|||
* The URIs that should be reachable while maintenance mode is enabled. |
|||
* |
|||
* @var array<int, string> |
|||
*/ |
|||
protected $except = [ |
|||
// |
|||
]; |
|||
} |
|||
@ -0,0 +1,32 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use App\Providers\RouteServiceProvider; |
|||
use Closure; |
|||
use Illuminate\Http\Request; |
|||
use Illuminate\Support\Facades\Auth; |
|||
|
|||
class RedirectIfAuthenticated |
|||
{ |
|||
/** |
|||
* Handle an incoming request. |
|||
* |
|||
* @param \Illuminate\Http\Request $request |
|||
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next |
|||
* @param string|null ...$guards |
|||
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse |
|||
*/ |
|||
public function handle(Request $request, Closure $next, ...$guards) |
|||
{ |
|||
$guards = empty($guards) ? [null] : $guards; |
|||
|
|||
foreach ($guards as $guard) { |
|||
if (Auth::guard($guard)->check()) { |
|||
return redirect(RouteServiceProvider::HOME); |
|||
} |
|||
} |
|||
|
|||
return $next($request); |
|||
} |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; |
|||
|
|||
class TrimStrings extends Middleware |
|||
{ |
|||
/** |
|||
* The names of the attributes that should not be trimmed. |
|||
* |
|||
* @var array<int, string> |
|||
*/ |
|||
protected $except = [ |
|||
'current_password', |
|||
'password', |
|||
'password_confirmation', |
|||
]; |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use Illuminate\Http\Middleware\TrustHosts as Middleware; |
|||
|
|||
class TrustHosts extends Middleware |
|||
{ |
|||
/** |
|||
* Get the host patterns that should be trusted. |
|||
* |
|||
* @return array<int, string|null> |
|||
*/ |
|||
public function hosts() |
|||
{ |
|||
return [ |
|||
$this->allSubdomainsOfApplicationUrl(), |
|||
]; |
|||
} |
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use Illuminate\Http\Middleware\TrustProxies as Middleware; |
|||
use Illuminate\Http\Request; |
|||
|
|||
class TrustProxies extends Middleware |
|||
{ |
|||
/** |
|||
* The trusted proxies for this application. |
|||
* |
|||
* @var array<int, string>|string|null |
|||
*/ |
|||
protected $proxies; |
|||
|
|||
/** |
|||
* The headers that should be used to detect proxies. |
|||
* |
|||
* @var int |
|||
*/ |
|||
protected $headers = |
|||
Request::HEADER_X_FORWARDED_FOR | |
|||
Request::HEADER_X_FORWARDED_HOST | |
|||
Request::HEADER_X_FORWARDED_PORT | |
|||
Request::HEADER_X_FORWARDED_PROTO | |
|||
Request::HEADER_X_FORWARDED_AWS_ELB; |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; |
|||
|
|||
class VerifyCsrfToken extends Middleware |
|||
{ |
|||
/** |
|||
* The URIs that should be excluded from CSRF verification. |
|||
* |
|||
* @var array<int, string> |
|||
*/ |
|||
protected $except = [ |
|||
// |
|||
]; |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
<?php |
|||
|
|||
namespace App\Models; |
|||
|
|||
use Dcat\Admin\Traits\HasDateTimeFormatter; |
|||
|
|||
use Illuminate\Database\Eloquent\Model; |
|||
|
|||
class EquipResourceRecord extends Model |
|||
{ |
|||
use HasDateTimeFormatter; |
|||
protected $table = 'equip_resource_record'; |
|||
|
|||
} |
|||
@ -0,0 +1,44 @@ |
|||
<?php |
|||
|
|||
namespace App\Models; |
|||
|
|||
// use Illuminate\Contracts\Auth\MustVerifyEmail; |
|||
use Illuminate\Database\Eloquent\Factories\HasFactory; |
|||
use Illuminate\Foundation\Auth\User as Authenticatable; |
|||
use Illuminate\Notifications\Notifiable; |
|||
use Laravel\Sanctum\HasApiTokens; |
|||
|
|||
class User extends Authenticatable |
|||
{ |
|||
use HasApiTokens, HasFactory, Notifiable; |
|||
|
|||
/** |
|||
* The attributes that are mass assignable. |
|||
* |
|||
* @var array<int, string> |
|||
*/ |
|||
protected $fillable = [ |
|||
'name', |
|||
'email', |
|||
'password', |
|||
]; |
|||
|
|||
/** |
|||
* The attributes that should be hidden for serialization. |
|||
* |
|||
* @var array<int, string> |
|||
*/ |
|||
protected $hidden = [ |
|||
'password', |
|||
'remember_token', |
|||
]; |
|||
|
|||
/** |
|||
* The attributes that should be cast. |
|||
* |
|||
* @var array<string, string> |
|||
*/ |
|||
protected $casts = [ |
|||
'email_verified_at' => 'datetime', |
|||
]; |
|||
} |
|||
@ -0,0 +1,29 @@ |
|||
<?php |
|||
|
|||
namespace App\Providers; |
|||
|
|||
use Illuminate\Support\ServiceProvider; |
|||
|
|||
class AppServiceProvider extends ServiceProvider |
|||
{ |
|||
/** |
|||
* Register any application services. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function register() |
|||
{ |
|||
// |
|||
} |
|||
|
|||
/** |
|||
* Bootstrap any application services. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function boot() |
|||
{ |
|||
// |
|||
\Schema::defaultStringLength(191); |
|||
} |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
<?php |
|||
|
|||
namespace App\Providers; |
|||
|
|||
// use Illuminate\Support\Facades\Gate; |
|||
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; |
|||
|
|||
class AuthServiceProvider extends ServiceProvider |
|||
{ |
|||
/** |
|||
* The model to policy mappings for the application. |
|||
* |
|||
* @var array<class-string, class-string> |
|||
*/ |
|||
protected $policies = [ |
|||
// 'App\Models\Model' => 'App\Policies\ModelPolicy', |
|||
]; |
|||
|
|||
/** |
|||
* Register any authentication / authorization services. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function boot() |
|||
{ |
|||
$this->registerPolicies(); |
|||
|
|||
// |
|||
} |
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
<?php |
|||
|
|||
namespace App\Providers; |
|||
|
|||
use Illuminate\Support\Facades\Broadcast; |
|||
use Illuminate\Support\ServiceProvider; |
|||
|
|||
class BroadcastServiceProvider extends ServiceProvider |
|||
{ |
|||
/** |
|||
* Bootstrap any application services. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function boot() |
|||
{ |
|||
Broadcast::routes(); |
|||
|
|||
require base_path('routes/channels.php'); |
|||
} |
|||
} |
|||
@ -0,0 +1,42 @@ |
|||
<?php |
|||
|
|||
namespace App\Providers; |
|||
|
|||
use Illuminate\Auth\Events\Registered; |
|||
use Illuminate\Auth\Listeners\SendEmailVerificationNotification; |
|||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; |
|||
use Illuminate\Support\Facades\Event; |
|||
|
|||
class EventServiceProvider extends ServiceProvider |
|||
{ |
|||
/** |
|||
* The event to listener mappings for the application. |
|||
* |
|||
* @var array<class-string, array<int, class-string>> |
|||
*/ |
|||
protected $listen = [ |
|||
Registered::class => [ |
|||
SendEmailVerificationNotification::class, |
|||
], |
|||
]; |
|||
|
|||
/** |
|||
* Register any events for your application. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function boot() |
|||
{ |
|||
// |
|||
} |
|||
|
|||
/** |
|||
* Determine if events and listeners should be automatically discovered. |
|||
* |
|||
* @return bool |
|||
*/ |
|||
public function shouldDiscoverEvents() |
|||
{ |
|||
return false; |
|||
} |
|||
} |
|||
@ -0,0 +1,52 @@ |
|||
<?php |
|||
|
|||
namespace App\Providers; |
|||
|
|||
use Illuminate\Cache\RateLimiting\Limit; |
|||
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; |
|||
use Illuminate\Http\Request; |
|||
use Illuminate\Support\Facades\RateLimiter; |
|||
use Illuminate\Support\Facades\Route; |
|||
|
|||
class RouteServiceProvider extends ServiceProvider |
|||
{ |
|||
/** |
|||
* The path to the "home" route for your application. |
|||
* |
|||
* Typically, users are redirected here after authentication. |
|||
* |
|||
* @var string |
|||
*/ |
|||
public const HOME = '/home'; |
|||
|
|||
/** |
|||
* Define your route model bindings, pattern filters, and other route configuration. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function boot() |
|||
{ |
|||
$this->configureRateLimiting(); |
|||
|
|||
$this->routes(function () { |
|||
Route::middleware('api') |
|||
->prefix('api') |
|||
->group(base_path('routes/api.php')); |
|||
|
|||
Route::middleware('web') |
|||
->group(base_path('routes/web.php')); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Configure the rate limiters for the application. |
|||
* |
|||
* @return void |
|||
*/ |
|||
protected function configureRateLimiting() |
|||
{ |
|||
RateLimiter::for('api', function (Request $request) { |
|||
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,53 @@ |
|||
#!/usr/bin/env php |
|||
<?php |
|||
|
|||
define('LARAVEL_START', microtime(true)); |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Register The Auto Loader |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Composer provides a convenient, automatically generated class loader |
|||
| for our application. We just need to utilize it! We'll require it |
|||
| into the script here so that we do not have to worry about the |
|||
| loading of any of our classes manually. It's great to relax. |
|||
| |
|||
*/ |
|||
|
|||
require __DIR__.'/vendor/autoload.php'; |
|||
|
|||
$app = require_once __DIR__.'/bootstrap/app.php'; |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Run The Artisan Application |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| When we run the console application, the current CLI command will be |
|||
| executed in this console and the response sent back to a terminal |
|||
| or another output device for the developers. Here goes nothing! |
|||
| |
|||
*/ |
|||
|
|||
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class); |
|||
|
|||
$status = $kernel->handle( |
|||
$input = new Symfony\Component\Console\Input\ArgvInput, |
|||
new Symfony\Component\Console\Output\ConsoleOutput |
|||
); |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Shutdown The Application |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Once Artisan has finished running, we will fire off the shutdown events |
|||
| so that any final work may be done by the application before we shut |
|||
| down the process. This is the last thing to happen to the request. |
|||
| |
|||
*/ |
|||
|
|||
$kernel->terminate($input, $status); |
|||
|
|||
exit($status); |
|||
@ -0,0 +1,55 @@ |
|||
<?php |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Create The Application |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The first thing we will do is create a new Laravel application instance |
|||
| which serves as the "glue" for all the components of Laravel, and is |
|||
| the IoC container for the system binding all of the various parts. |
|||
| |
|||
*/ |
|||
|
|||
$app = new Illuminate\Foundation\Application( |
|||
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) |
|||
); |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Bind Important Interfaces |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Next, we need to bind some important interfaces into the container so |
|||
| we will be able to resolve them when needed. The kernels serve the |
|||
| incoming requests to this application from both the web and CLI. |
|||
| |
|||
*/ |
|||
|
|||
$app->singleton( |
|||
Illuminate\Contracts\Http\Kernel::class, |
|||
App\Http\Kernel::class |
|||
); |
|||
|
|||
$app->singleton( |
|||
Illuminate\Contracts\Console\Kernel::class, |
|||
App\Console\Kernel::class |
|||
); |
|||
|
|||
$app->singleton( |
|||
Illuminate\Contracts\Debug\ExceptionHandler::class, |
|||
App\Exceptions\Handler::class |
|||
); |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Return The Application |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This script returns the application instance. The instance is given to |
|||
| the calling script so we can separate the building of the instances |
|||
| from the actual running of the application and sending responses. |
|||
| |
|||
*/ |
|||
|
|||
return $app; |
|||
@ -0,0 +1,2 @@ |
|||
* |
|||
!.gitignore |
|||
@ -0,0 +1,66 @@ |
|||
{ |
|||
"name": "laravel/laravel", |
|||
"type": "project", |
|||
"description": "The Laravel Framework.", |
|||
"keywords": ["framework", "laravel"], |
|||
"license": "MIT", |
|||
"require": { |
|||
"php": "^8.0.2", |
|||
"dcat/laravel-admin": "2.*", |
|||
"guzzlehttp/guzzle": "^7.4", |
|||
"laravel/framework": "^9.19", |
|||
"laravel/sanctum": "^3.0", |
|||
"laravel/tinker": "^2.7" |
|||
}, |
|||
"require-dev": { |
|||
"fakerphp/faker": "^1.9.1", |
|||
"laravel/pint": "^1.0", |
|||
"laravel/sail": "^1.0.1", |
|||
"mockery/mockery": "^1.4.4", |
|||
"nunomaduro/collision": "^6.1", |
|||
"phpunit/phpunit": "^9.5.10", |
|||
"spatie/laravel-ignition": "^1.0" |
|||
}, |
|||
"autoload": { |
|||
"psr-4": { |
|||
"App\\": "app/", |
|||
"Database\\Factories\\": "database/factories/", |
|||
"Database\\Seeders\\": "database/seeders/" |
|||
} |
|||
}, |
|||
"autoload-dev": { |
|||
"psr-4": { |
|||
"Tests\\": "tests/" |
|||
} |
|||
}, |
|||
"scripts": { |
|||
"post-autoload-dump": [ |
|||
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", |
|||
"@php artisan package:discover --ansi" |
|||
], |
|||
"post-update-cmd": [ |
|||
"@php artisan vendor:publish --tag=laravel-assets --ansi --force" |
|||
], |
|||
"post-root-package-install": [ |
|||
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" |
|||
], |
|||
"post-create-project-cmd": [ |
|||
"@php artisan key:generate --ansi" |
|||
] |
|||
}, |
|||
"extra": { |
|||
"laravel": { |
|||
"dont-discover": [] |
|||
} |
|||
}, |
|||
"config": { |
|||
"optimize-autoloader": true, |
|||
"preferred-install": "dist", |
|||
"sort-packages": true, |
|||
"allow-plugins": { |
|||
"pestphp/pest-plugin": true |
|||
} |
|||
}, |
|||
"minimum-stability": "dev", |
|||
"prefer-stable": true |
|||
} |
|||
File diff suppressed because it is too large
@ -0,0 +1,368 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin name |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This value is the name of dcat-admin, This setting is displayed on the |
|||
| login page. |
|||
| |
|||
*/ |
|||
'name' => 'Dcat Admin', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin logo |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The logo of all admin pages. You can also set it as an image by using a |
|||
| `img` tag, eg '<img src="http://logo-url" alt="Admin logo">'. |
|||
| |
|||
*/ |
|||
'logo' => '<img src="/vendor/dcat-admin/images/logo.png" width="35"> Dcat Admin', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin mini logo |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The logo of all admin pages when the sidebar menu is collapsed. You can |
|||
| also set it as an image by using a `img` tag, eg |
|||
| '<img src="http://logo-url" alt="Admin logo">'. |
|||
| |
|||
*/ |
|||
'logo-mini' => '<img src="/vendor/dcat-admin/images/logo.png">', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin favicon |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
*/ |
|||
'favicon' => null, |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| User default avatar |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Set a default avatar for newly created users. |
|||
| |
|||
*/ |
|||
'default_avatar' => '@admin/images/default-avatar.jpg', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin route settings |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The routing configuration of the admin page, including the path prefix, |
|||
| the controller namespace, and the default middleware. If you want to |
|||
| access through the root path, just set the prefix to empty string. |
|||
| |
|||
*/ |
|||
'route' => [ |
|||
'domain' => env('ADMIN_ROUTE_DOMAIN'), |
|||
|
|||
'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'), |
|||
|
|||
'namespace' => 'App\\Admin\\Controllers', |
|||
|
|||
'middleware' => ['web', 'admin'], |
|||
|
|||
'enable_session_middleware' => false, |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin install directory |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The installation directory of the controller and routing configuration |
|||
| files of the administration page. The default is `app/Admin`, which must |
|||
| be set before running `artisan admin::install` to take effect. |
|||
| |
|||
*/ |
|||
'directory' => app_path('Admin'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin html title |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Html title for all pages. |
|||
| |
|||
*/ |
|||
'title' => 'Admin', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Assets hostname |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
*/ |
|||
'assets_server' => env('ADMIN_ASSETS_SERVER'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Access via `https` |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| If your page is going to be accessed via https, set it to `true`. |
|||
| |
|||
*/ |
|||
'https' => env('ADMIN_HTTPS', false), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin auth setting |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Authentication settings for all admin pages. Include an authentication |
|||
| guard and a user provider setting of authentication driver. |
|||
| |
|||
| You can specify a controller for `login` `logout` and other auth routes. |
|||
| |
|||
*/ |
|||
'auth' => [ |
|||
'enable' => true, |
|||
|
|||
'controller' => App\Admin\Controllers\AuthController::class, |
|||
|
|||
'guard' => 'admin', |
|||
|
|||
'guards' => [ |
|||
'admin' => [ |
|||
'driver' => 'session', |
|||
'provider' => 'admin', |
|||
], |
|||
], |
|||
|
|||
'providers' => [ |
|||
'admin' => [ |
|||
'driver' => 'eloquent', |
|||
'model' => Dcat\Admin\Models\Administrator::class, |
|||
], |
|||
], |
|||
|
|||
// Add "remember me" to login form |
|||
'remember' => true, |
|||
|
|||
// All method to path like: auth/users/*/edit |
|||
// or specific method to path like: get:auth/users. |
|||
'except' => [ |
|||
'auth/login', |
|||
'auth/logout', |
|||
], |
|||
|
|||
'enable_session_middleware' => false, |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| The global Grid setting |
|||
|-------------------------------------------------------------------------- |
|||
*/ |
|||
'grid' => [ |
|||
|
|||
// The global Grid action display class. |
|||
'grid_action_class' => Dcat\Admin\Grid\Displayers\DropdownActions::class, |
|||
|
|||
// The global Grid batch action display class. |
|||
'batch_action_class' => Dcat\Admin\Grid\Tools\BatchActions::class, |
|||
|
|||
// The global Grid pagination display class. |
|||
'paginator_class' => Dcat\Admin\Grid\Tools\Paginator::class, |
|||
|
|||
'actions' => [ |
|||
'view' => Dcat\Admin\Grid\Actions\Show::class, |
|||
'edit' => Dcat\Admin\Grid\Actions\Edit::class, |
|||
'quick_edit' => Dcat\Admin\Grid\Actions\QuickEdit::class, |
|||
'delete' => Dcat\Admin\Grid\Actions\Delete::class, |
|||
'batch_delete' => Dcat\Admin\Grid\Tools\BatchDelete::class, |
|||
], |
|||
|
|||
// The global Grid column selector setting. |
|||
'column_selector' => [ |
|||
'store' => Dcat\Admin\Grid\ColumnSelector\SessionStore::class, |
|||
'store_params' => [ |
|||
'driver' => 'file', |
|||
], |
|||
], |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin helpers setting. |
|||
|-------------------------------------------------------------------------- |
|||
*/ |
|||
'helpers' => [ |
|||
'enable' => true, |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin permission setting |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Permission settings for all admin pages. |
|||
| |
|||
*/ |
|||
'permission' => [ |
|||
// Whether enable permission. |
|||
'enable' => true, |
|||
|
|||
// All method to path like: auth/users/*/edit |
|||
// or specific method to path like: get:auth/users. |
|||
'except' => [ |
|||
'/', |
|||
'auth/login', |
|||
'auth/logout', |
|||
'auth/setting', |
|||
], |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin menu setting |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
*/ |
|||
'menu' => [ |
|||
'cache' => [ |
|||
// enable cache or not |
|||
'enable' => false, |
|||
'store' => 'file', |
|||
], |
|||
|
|||
// Whether enable menu bind to a permission. |
|||
'bind_permission' => true, |
|||
|
|||
// Whether enable role bind to menu. |
|||
'role_bind_menu' => true, |
|||
|
|||
// Whether enable permission bind to menu. |
|||
'permission_bind_menu' => true, |
|||
|
|||
'default_icon' => 'feather icon-circle', |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin upload setting |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| File system configuration for form upload files and images, including |
|||
| disk and upload path. |
|||
| |
|||
*/ |
|||
'upload' => [ |
|||
|
|||
// Disk in `config/filesystem.php`. |
|||
'disk' => 'public', |
|||
|
|||
// Image and file upload path under the disk above. |
|||
'directory' => [ |
|||
'image' => 'images', |
|||
'file' => 'files', |
|||
], |
|||
|
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| dcat-admin database settings |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here are database settings for dcat-admin builtin model & tables. |
|||
| |
|||
*/ |
|||
'database' => [ |
|||
|
|||
// Database connection for following tables. |
|||
'connection' => '', |
|||
|
|||
// User tables and model. |
|||
'users_table' => 'admin_users', |
|||
'users_model' => Dcat\Admin\Models\Administrator::class, |
|||
|
|||
// Role table and model. |
|||
'roles_table' => 'admin_roles', |
|||
'roles_model' => Dcat\Admin\Models\Role::class, |
|||
|
|||
// Permission table and model. |
|||
'permissions_table' => 'admin_permissions', |
|||
'permissions_model' => Dcat\Admin\Models\Permission::class, |
|||
|
|||
// Menu table and model. |
|||
'menu_table' => 'admin_menu', |
|||
'menu_model' => Dcat\Admin\Models\Menu::class, |
|||
|
|||
// Pivot table for table above. |
|||
'role_users_table' => 'admin_role_users', |
|||
'role_permissions_table' => 'admin_role_permissions', |
|||
'role_menu_table' => 'admin_role_menu', |
|||
'permission_menu_table' => 'admin_permission_menu', |
|||
'settings_table' => 'admin_settings', |
|||
'extensions_table' => 'admin_extensions', |
|||
'extension_histories_table' => 'admin_extension_histories', |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Application layout |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This value is the layout of admin pages. |
|||
*/ |
|||
'layout' => [ |
|||
// default, blue, blue-light, green |
|||
'color' => 'default', |
|||
|
|||
// sidebar-separate |
|||
'body_class' => [], |
|||
|
|||
'horizontal_menu' => false, |
|||
|
|||
'sidebar_collapsed' => false, |
|||
|
|||
// light, primary, dark |
|||
'sidebar_style' => 'light', |
|||
|
|||
'dark_mode_switch' => false, |
|||
|
|||
// bg-primary, bg-info, bg-warning, bg-success, bg-danger, bg-dark |
|||
'navbar_color' => '', |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| The exception handler class |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
*/ |
|||
'exception_handler' => Dcat\Admin\Exception\Handler::class, |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Enable default breadcrumb |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Whether enable default breadcrumb for every page content. |
|||
*/ |
|||
'enable_default_breadcrumb' => true, |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Extension |
|||
|-------------------------------------------------------------------------- |
|||
*/ |
|||
'extension' => [ |
|||
// When you use command `php artisan admin:ext-make` to generate extensions, |
|||
// the extension files will be generated in this directory. |
|||
'dir' => base_path('dcat-admin-extensions'), |
|||
], |
|||
]; |
|||
@ -0,0 +1,215 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Facades\Facade; |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Application Name |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This value is the name of your application. This value is used when the |
|||
| framework needs to place the application's name in a notification or |
|||
| any other location as required by the application or its packages. |
|||
| |
|||
*/ |
|||
|
|||
'name' => env('APP_NAME', 'Laravel'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Application Environment |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This value determines the "environment" your application is currently |
|||
| running in. This may determine how you prefer to configure various |
|||
| services the application utilizes. Set this in your ".env" file. |
|||
| |
|||
*/ |
|||
|
|||
'env' => env('APP_ENV', 'production'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Application Debug Mode |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| When your application is in debug mode, detailed error messages with |
|||
| stack traces will be shown on every error that occurs within your |
|||
| application. If disabled, a simple generic error page is shown. |
|||
| |
|||
*/ |
|||
|
|||
'debug' => (bool) env('APP_DEBUG', false), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Application URL |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This URL is used by the console to properly generate URLs when using |
|||
| the Artisan command line tool. You should set this to the root of |
|||
| your application so that it is used when running Artisan tasks. |
|||
| |
|||
*/ |
|||
|
|||
'url' => env('APP_URL', 'http://localhost'), |
|||
|
|||
'asset_url' => env('ASSET_URL'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Application Timezone |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may specify the default timezone for your application, which |
|||
| will be used by the PHP date and date-time functions. We have gone |
|||
| ahead and set this to a sensible default for you out of the box. |
|||
| |
|||
*/ |
|||
|
|||
'timezone' => 'UTC', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Application Locale Configuration |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The application locale determines the default locale that will be used |
|||
| by the translation service provider. You are free to set this value |
|||
| to any of the locales which will be supported by the application. |
|||
| |
|||
*/ |
|||
|
|||
'locale' => 'en', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Application Fallback Locale |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The fallback locale determines the locale to use when the current one |
|||
| is not available. You may change the value to correspond to any of |
|||
| the language folders that are provided through your application. |
|||
| |
|||
*/ |
|||
|
|||
'fallback_locale' => 'en', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Faker Locale |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This locale will be used by the Faker PHP library when generating fake |
|||
| data for your database seeds. For example, this will be used to get |
|||
| localized telephone numbers, street address information and more. |
|||
| |
|||
*/ |
|||
|
|||
'faker_locale' => 'en_US', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Encryption Key |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This key is used by the Illuminate encrypter service and should be set |
|||
| to a random, 32 character string, otherwise these encrypted strings |
|||
| will not be safe. Please do this before deploying an application! |
|||
| |
|||
*/ |
|||
|
|||
'key' => env('APP_KEY'), |
|||
|
|||
'cipher' => 'AES-256-CBC', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Maintenance Mode Driver |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| These configuration options determine the driver used to determine and |
|||
| manage Laravel's "maintenance mode" status. The "cache" driver will |
|||
| allow maintenance mode to be controlled across multiple machines. |
|||
| |
|||
| Supported drivers: "file", "cache" |
|||
| |
|||
*/ |
|||
|
|||
'maintenance' => [ |
|||
'driver' => 'file', |
|||
// 'store' => 'redis', |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Autoloaded Service Providers |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The service providers listed here will be automatically loaded on the |
|||
| request to your application. Feel free to add your own services to |
|||
| this array to grant expanded functionality to your applications. |
|||
| |
|||
*/ |
|||
|
|||
'providers' => [ |
|||
|
|||
/* |
|||
* Laravel Framework Service Providers... |
|||
*/ |
|||
Illuminate\Auth\AuthServiceProvider::class, |
|||
Illuminate\Broadcasting\BroadcastServiceProvider::class, |
|||
Illuminate\Bus\BusServiceProvider::class, |
|||
Illuminate\Cache\CacheServiceProvider::class, |
|||
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, |
|||
Illuminate\Cookie\CookieServiceProvider::class, |
|||
Illuminate\Database\DatabaseServiceProvider::class, |
|||
Illuminate\Encryption\EncryptionServiceProvider::class, |
|||
Illuminate\Filesystem\FilesystemServiceProvider::class, |
|||
Illuminate\Foundation\Providers\FoundationServiceProvider::class, |
|||
Illuminate\Hashing\HashServiceProvider::class, |
|||
Illuminate\Mail\MailServiceProvider::class, |
|||
Illuminate\Notifications\NotificationServiceProvider::class, |
|||
Illuminate\Pagination\PaginationServiceProvider::class, |
|||
Illuminate\Pipeline\PipelineServiceProvider::class, |
|||
Illuminate\Queue\QueueServiceProvider::class, |
|||
Illuminate\Redis\RedisServiceProvider::class, |
|||
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, |
|||
Illuminate\Session\SessionServiceProvider::class, |
|||
Illuminate\Translation\TranslationServiceProvider::class, |
|||
Illuminate\Validation\ValidationServiceProvider::class, |
|||
Illuminate\View\ViewServiceProvider::class, |
|||
|
|||
/* |
|||
* Package Service Providers... |
|||
*/ |
|||
|
|||
/* |
|||
* Application Service Providers... |
|||
*/ |
|||
App\Providers\AppServiceProvider::class, |
|||
App\Providers\AuthServiceProvider::class, |
|||
// App\Providers\BroadcastServiceProvider::class, |
|||
App\Providers\EventServiceProvider::class, |
|||
App\Providers\RouteServiceProvider::class, |
|||
|
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Class Aliases |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This array of class aliases will be registered when this application |
|||
| is started. However, feel free to register as many as you wish as |
|||
| the aliases are "lazy" loaded so they don't hinder performance. |
|||
| |
|||
*/ |
|||
|
|||
'aliases' => Facade::defaultAliases()->merge([ |
|||
// 'ExampleClass' => App\Example\ExampleClass::class, |
|||
])->toArray(), |
|||
|
|||
]; |
|||
@ -0,0 +1,111 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Authentication Defaults |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option controls the default authentication "guard" and password |
|||
| reset options for your application. You may change these defaults |
|||
| as required, but they're a perfect start for most applications. |
|||
| |
|||
*/ |
|||
|
|||
'defaults' => [ |
|||
'guard' => 'web', |
|||
'passwords' => 'users', |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Authentication Guards |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Next, you may define every authentication guard for your application. |
|||
| Of course, a great default configuration has been defined for you |
|||
| here which uses session storage and the Eloquent user provider. |
|||
| |
|||
| All authentication drivers have a user provider. This defines how the |
|||
| users are actually retrieved out of your database or other storage |
|||
| mechanisms used by this application to persist your user's data. |
|||
| |
|||
| Supported: "session" |
|||
| |
|||
*/ |
|||
|
|||
'guards' => [ |
|||
'web' => [ |
|||
'driver' => 'session', |
|||
'provider' => 'users', |
|||
], |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| User Providers |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| All authentication drivers have a user provider. This defines how the |
|||
| users are actually retrieved out of your database or other storage |
|||
| mechanisms used by this application to persist your user's data. |
|||
| |
|||
| If you have multiple user tables or models you may configure multiple |
|||
| sources which represent each model / table. These sources may then |
|||
| be assigned to any extra authentication guards you have defined. |
|||
| |
|||
| Supported: "database", "eloquent" |
|||
| |
|||
*/ |
|||
|
|||
'providers' => [ |
|||
'users' => [ |
|||
'driver' => 'eloquent', |
|||
'model' => App\Models\User::class, |
|||
], |
|||
|
|||
// 'users' => [ |
|||
// 'driver' => 'database', |
|||
// 'table' => 'users', |
|||
// ], |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Resetting Passwords |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| You may specify multiple password reset configurations if you have more |
|||
| than one user table or model in the application and you want to have |
|||
| separate password reset settings based on the specific user types. |
|||
| |
|||
| The expire time is the number of minutes that each reset token will be |
|||
| considered valid. This security feature keeps tokens short-lived so |
|||
| they have less time to be guessed. You may change this as needed. |
|||
| |
|||
*/ |
|||
|
|||
'passwords' => [ |
|||
'users' => [ |
|||
'provider' => 'users', |
|||
'table' => 'password_resets', |
|||
'expire' => 60, |
|||
'throttle' => 60, |
|||
], |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Password Confirmation Timeout |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may define the amount of seconds before a password confirmation |
|||
| times out and the user is prompted to re-enter their password via the |
|||
| confirmation screen. By default, the timeout lasts for three hours. |
|||
| |
|||
*/ |
|||
|
|||
'password_timeout' => 10800, |
|||
|
|||
]; |
|||
@ -0,0 +1,70 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Broadcaster |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option controls the default broadcaster that will be used by the |
|||
| framework when an event needs to be broadcast. You may set this to |
|||
| any of the connections defined in the "connections" array below. |
|||
| |
|||
| Supported: "pusher", "ably", "redis", "log", "null" |
|||
| |
|||
*/ |
|||
|
|||
'default' => env('BROADCAST_DRIVER', 'null'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Broadcast Connections |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may define all of the broadcast connections that will be used |
|||
| to broadcast events to other systems or over websockets. Samples of |
|||
| each available type of connection are provided inside this array. |
|||
| |
|||
*/ |
|||
|
|||
'connections' => [ |
|||
|
|||
'pusher' => [ |
|||
'driver' => 'pusher', |
|||
'key' => env('PUSHER_APP_KEY'), |
|||
'secret' => env('PUSHER_APP_SECRET'), |
|||
'app_id' => env('PUSHER_APP_ID'), |
|||
'options' => [ |
|||
'host' => env('PUSHER_HOST', 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', |
|||
'port' => env('PUSHER_PORT', 443), |
|||
'scheme' => env('PUSHER_SCHEME', 'https'), |
|||
'encrypted' => true, |
|||
'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', |
|||
], |
|||
'client_options' => [ |
|||
// Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html |
|||
], |
|||
], |
|||
|
|||
'ably' => [ |
|||
'driver' => 'ably', |
|||
'key' => env('ABLY_KEY'), |
|||
], |
|||
|
|||
'redis' => [ |
|||
'driver' => 'redis', |
|||
'connection' => 'default', |
|||
], |
|||
|
|||
'log' => [ |
|||
'driver' => 'log', |
|||
], |
|||
|
|||
'null' => [ |
|||
'driver' => 'null', |
|||
], |
|||
|
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,110 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Str; |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Cache Store |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option controls the default cache connection that gets used while |
|||
| using this caching library. This connection is used when another is |
|||
| not explicitly specified when executing a given caching function. |
|||
| |
|||
*/ |
|||
|
|||
'default' => env('CACHE_DRIVER', 'file'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Cache Stores |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may define all of the cache "stores" for your application as |
|||
| well as their drivers. You may even define multiple stores for the |
|||
| same cache driver to group types of items stored in your caches. |
|||
| |
|||
| Supported drivers: "apc", "array", "database", "file", |
|||
| "memcached", "redis", "dynamodb", "octane", "null" |
|||
| |
|||
*/ |
|||
|
|||
'stores' => [ |
|||
|
|||
'apc' => [ |
|||
'driver' => 'apc', |
|||
], |
|||
|
|||
'array' => [ |
|||
'driver' => 'array', |
|||
'serialize' => false, |
|||
], |
|||
|
|||
'database' => [ |
|||
'driver' => 'database', |
|||
'table' => 'cache', |
|||
'connection' => null, |
|||
'lock_connection' => null, |
|||
], |
|||
|
|||
'file' => [ |
|||
'driver' => 'file', |
|||
'path' => storage_path('framework/cache/data'), |
|||
], |
|||
|
|||
'memcached' => [ |
|||
'driver' => 'memcached', |
|||
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), |
|||
'sasl' => [ |
|||
env('MEMCACHED_USERNAME'), |
|||
env('MEMCACHED_PASSWORD'), |
|||
], |
|||
'options' => [ |
|||
// Memcached::OPT_CONNECT_TIMEOUT => 2000, |
|||
], |
|||
'servers' => [ |
|||
[ |
|||
'host' => env('MEMCACHED_HOST', '127.0.0.1'), |
|||
'port' => env('MEMCACHED_PORT', 11211), |
|||
'weight' => 100, |
|||
], |
|||
], |
|||
], |
|||
|
|||
'redis' => [ |
|||
'driver' => 'redis', |
|||
'connection' => 'cache', |
|||
'lock_connection' => 'default', |
|||
], |
|||
|
|||
'dynamodb' => [ |
|||
'driver' => 'dynamodb', |
|||
'key' => env('AWS_ACCESS_KEY_ID'), |
|||
'secret' => env('AWS_SECRET_ACCESS_KEY'), |
|||
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), |
|||
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), |
|||
'endpoint' => env('DYNAMODB_ENDPOINT'), |
|||
], |
|||
|
|||
'octane' => [ |
|||
'driver' => 'octane', |
|||
], |
|||
|
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Cache Key Prefix |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| When utilizing the APC, database, memcached, Redis, or DynamoDB cache |
|||
| stores there might be other applications using the same cache. For |
|||
| that reason, you may prefix every cache key to avoid collisions. |
|||
| |
|||
*/ |
|||
|
|||
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), |
|||
|
|||
]; |
|||
@ -0,0 +1,34 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Cross-Origin Resource Sharing (CORS) Configuration |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may configure your settings for cross-origin resource sharing |
|||
| or "CORS". This determines what cross-origin operations may execute |
|||
| in web browsers. You are free to adjust these settings as needed. |
|||
| |
|||
| To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS |
|||
| |
|||
*/ |
|||
|
|||
'paths' => ['api/*', 'sanctum/csrf-cookie'], |
|||
|
|||
'allowed_methods' => ['*'], |
|||
|
|||
'allowed_origins' => ['*'], |
|||
|
|||
'allowed_origins_patterns' => [], |
|||
|
|||
'allowed_headers' => ['*'], |
|||
|
|||
'exposed_headers' => [], |
|||
|
|||
'max_age' => 0, |
|||
|
|||
'supports_credentials' => false, |
|||
|
|||
]; |
|||
@ -0,0 +1,151 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Str; |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Database Connection Name |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may specify which of the database connections below you wish |
|||
| to use as your default connection for all database work. Of course |
|||
| you may use many connections at once using the Database library. |
|||
| |
|||
*/ |
|||
|
|||
'default' => env('DB_CONNECTION', 'mysql'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Database Connections |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here are each of the database connections setup for your application. |
|||
| Of course, examples of configuring each database platform that is |
|||
| supported by Laravel is shown below to make development simple. |
|||
| |
|||
| |
|||
| All database work in Laravel is done through the PHP PDO facilities |
|||
| so make sure you have the driver for your particular database of |
|||
| choice installed on your machine before you begin development. |
|||
| |
|||
*/ |
|||
|
|||
'connections' => [ |
|||
|
|||
'sqlite' => [ |
|||
'driver' => 'sqlite', |
|||
'url' => env('DATABASE_URL'), |
|||
'database' => env('DB_DATABASE', database_path('database.sqlite')), |
|||
'prefix' => '', |
|||
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), |
|||
], |
|||
|
|||
'mysql' => [ |
|||
'driver' => 'mysql', |
|||
'url' => env('DATABASE_URL'), |
|||
'host' => env('DB_HOST', '127.0.0.1'), |
|||
'port' => env('DB_PORT', '3306'), |
|||
'database' => env('DB_DATABASE', 'forge'), |
|||
'username' => env('DB_USERNAME', 'forge'), |
|||
'password' => env('DB_PASSWORD', ''), |
|||
'unix_socket' => env('DB_SOCKET', ''), |
|||
'charset' => 'utf8mb4', |
|||
'collation' => 'utf8mb4_unicode_ci', |
|||
'prefix' => '', |
|||
'prefix_indexes' => true, |
|||
'strict' => true, |
|||
'engine' => null, |
|||
'options' => extension_loaded('pdo_mysql') ? array_filter([ |
|||
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), |
|||
]) : [], |
|||
], |
|||
|
|||
'pgsql' => [ |
|||
'driver' => 'pgsql', |
|||
'url' => env('DATABASE_URL'), |
|||
'host' => env('DB_HOST', '127.0.0.1'), |
|||
'port' => env('DB_PORT', '5432'), |
|||
'database' => env('DB_DATABASE', 'forge'), |
|||
'username' => env('DB_USERNAME', 'forge'), |
|||
'password' => env('DB_PASSWORD', ''), |
|||
'charset' => 'utf8', |
|||
'prefix' => '', |
|||
'prefix_indexes' => true, |
|||
'search_path' => 'public', |
|||
'sslmode' => 'prefer', |
|||
], |
|||
|
|||
'sqlsrv' => [ |
|||
'driver' => 'sqlsrv', |
|||
'url' => env('DATABASE_URL'), |
|||
'host' => env('DB_HOST', 'localhost'), |
|||
'port' => env('DB_PORT', '1433'), |
|||
'database' => env('DB_DATABASE', 'forge'), |
|||
'username' => env('DB_USERNAME', 'forge'), |
|||
'password' => env('DB_PASSWORD', ''), |
|||
'charset' => 'utf8', |
|||
'prefix' => '', |
|||
'prefix_indexes' => true, |
|||
// 'encrypt' => env('DB_ENCRYPT', 'yes'), |
|||
// 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), |
|||
], |
|||
|
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Migration Repository Table |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This table keeps track of all the migrations that have already run for |
|||
| your application. Using this information, we can determine which of |
|||
| the migrations on disk haven't actually been run in the database. |
|||
| |
|||
*/ |
|||
|
|||
'migrations' => 'migrations', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Redis Databases |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Redis is an open source, fast, and advanced key-value store that also |
|||
| provides a richer body of commands than a typical key-value system |
|||
| such as APC or Memcached. Laravel makes it easy to dig right in. |
|||
| |
|||
*/ |
|||
|
|||
'redis' => [ |
|||
|
|||
'client' => env('REDIS_CLIENT', 'phpredis'), |
|||
|
|||
'options' => [ |
|||
'cluster' => env('REDIS_CLUSTER', 'redis'), |
|||
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), |
|||
], |
|||
|
|||
'default' => [ |
|||
'url' => env('REDIS_URL'), |
|||
'host' => env('REDIS_HOST', '127.0.0.1'), |
|||
'username' => env('REDIS_USERNAME'), |
|||
'password' => env('REDIS_PASSWORD'), |
|||
'port' => env('REDIS_PORT', '6379'), |
|||
'database' => env('REDIS_DB', '0'), |
|||
], |
|||
|
|||
'cache' => [ |
|||
'url' => env('REDIS_URL'), |
|||
'host' => env('REDIS_HOST', '127.0.0.1'), |
|||
'username' => env('REDIS_USERNAME'), |
|||
'password' => env('REDIS_PASSWORD'), |
|||
'port' => env('REDIS_PORT', '6379'), |
|||
'database' => env('REDIS_CACHE_DB', '1'), |
|||
], |
|||
|
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,76 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Filesystem Disk |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may specify the default filesystem disk that should be used |
|||
| by the framework. The "local" disk, as well as a variety of cloud |
|||
| based disks are available to your application. Just store away! |
|||
| |
|||
*/ |
|||
|
|||
'default' => env('FILESYSTEM_DISK', 'local'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Filesystem Disks |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may configure as many filesystem "disks" as you wish, and you |
|||
| may even configure multiple disks of the same driver. Defaults have |
|||
| been set up for each driver as an example of the required values. |
|||
| |
|||
| Supported Drivers: "local", "ftp", "sftp", "s3" |
|||
| |
|||
*/ |
|||
|
|||
'disks' => [ |
|||
|
|||
'local' => [ |
|||
'driver' => 'local', |
|||
'root' => storage_path('app'), |
|||
'throw' => false, |
|||
], |
|||
|
|||
'public' => [ |
|||
'driver' => 'local', |
|||
'root' => storage_path('app/public'), |
|||
'url' => env('APP_URL').'/storage', |
|||
'visibility' => 'public', |
|||
'throw' => false, |
|||
], |
|||
|
|||
's3' => [ |
|||
'driver' => 's3', |
|||
'key' => env('AWS_ACCESS_KEY_ID'), |
|||
'secret' => env('AWS_SECRET_ACCESS_KEY'), |
|||
'region' => env('AWS_DEFAULT_REGION'), |
|||
'bucket' => env('AWS_BUCKET'), |
|||
'url' => env('AWS_URL'), |
|||
'endpoint' => env('AWS_ENDPOINT'), |
|||
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), |
|||
'throw' => false, |
|||
], |
|||
|
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Symbolic Links |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may configure the symbolic links that will be created when the |
|||
| `storage:link` Artisan command is executed. The array keys should be |
|||
| the locations of the links and the values should be their targets. |
|||
| |
|||
*/ |
|||
|
|||
'links' => [ |
|||
public_path('storage') => storage_path('app/public'), |
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,52 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Hash Driver |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option controls the default hash driver that will be used to hash |
|||
| passwords for your application. By default, the bcrypt algorithm is |
|||
| used; however, you remain free to modify this option if you wish. |
|||
| |
|||
| Supported: "bcrypt", "argon", "argon2id" |
|||
| |
|||
*/ |
|||
|
|||
'driver' => 'bcrypt', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Bcrypt Options |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may specify the configuration options that should be used when |
|||
| passwords are hashed using the Bcrypt algorithm. This will allow you |
|||
| to control the amount of time it takes to hash the given password. |
|||
| |
|||
*/ |
|||
|
|||
'bcrypt' => [ |
|||
'rounds' => env('BCRYPT_ROUNDS', 10), |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Argon Options |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may specify the configuration options that should be used when |
|||
| passwords are hashed using the Argon algorithm. These will allow you |
|||
| to control the amount of time it takes to hash the given password. |
|||
| |
|||
*/ |
|||
|
|||
'argon' => [ |
|||
'memory' => 65536, |
|||
'threads' => 1, |
|||
'time' => 4, |
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,122 @@ |
|||
<?php |
|||
|
|||
use Monolog\Handler\NullHandler; |
|||
use Monolog\Handler\StreamHandler; |
|||
use Monolog\Handler\SyslogUdpHandler; |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Log Channel |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option defines the default log channel that gets used when writing |
|||
| messages to the logs. The name specified in this option should match |
|||
| one of the channels defined in the "channels" configuration array. |
|||
| |
|||
*/ |
|||
|
|||
'default' => env('LOG_CHANNEL', 'stack'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Deprecations Log Channel |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option controls the log channel that should be used to log warnings |
|||
| regarding deprecated PHP and library features. This allows you to get |
|||
| your application ready for upcoming major versions of dependencies. |
|||
| |
|||
*/ |
|||
|
|||
'deprecations' => [ |
|||
'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), |
|||
'trace' => false, |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Log Channels |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may configure the log channels for your application. Out of |
|||
| the box, Laravel uses the Monolog PHP logging library. This gives |
|||
| you a variety of powerful log handlers / formatters to utilize. |
|||
| |
|||
| Available Drivers: "single", "daily", "slack", "syslog", |
|||
| "errorlog", "monolog", |
|||
| "custom", "stack" |
|||
| |
|||
*/ |
|||
|
|||
'channels' => [ |
|||
'stack' => [ |
|||
'driver' => 'stack', |
|||
'channels' => ['single'], |
|||
'ignore_exceptions' => false, |
|||
], |
|||
|
|||
'single' => [ |
|||
'driver' => 'single', |
|||
'path' => storage_path('logs/laravel.log'), |
|||
'level' => env('LOG_LEVEL', 'debug'), |
|||
], |
|||
|
|||
'daily' => [ |
|||
'driver' => 'daily', |
|||
'path' => storage_path('logs/laravel.log'), |
|||
'level' => env('LOG_LEVEL', 'debug'), |
|||
'days' => 14, |
|||
], |
|||
|
|||
'slack' => [ |
|||
'driver' => 'slack', |
|||
'url' => env('LOG_SLACK_WEBHOOK_URL'), |
|||
'username' => 'Laravel Log', |
|||
'emoji' => ':boom:', |
|||
'level' => env('LOG_LEVEL', 'critical'), |
|||
], |
|||
|
|||
'papertrail' => [ |
|||
'driver' => 'monolog', |
|||
'level' => env('LOG_LEVEL', 'debug'), |
|||
'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), |
|||
'handler_with' => [ |
|||
'host' => env('PAPERTRAIL_URL'), |
|||
'port' => env('PAPERTRAIL_PORT'), |
|||
'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), |
|||
], |
|||
], |
|||
|
|||
'stderr' => [ |
|||
'driver' => 'monolog', |
|||
'level' => env('LOG_LEVEL', 'debug'), |
|||
'handler' => StreamHandler::class, |
|||
'formatter' => env('LOG_STDERR_FORMATTER'), |
|||
'with' => [ |
|||
'stream' => 'php://stderr', |
|||
], |
|||
], |
|||
|
|||
'syslog' => [ |
|||
'driver' => 'syslog', |
|||
'level' => env('LOG_LEVEL', 'debug'), |
|||
], |
|||
|
|||
'errorlog' => [ |
|||
'driver' => 'errorlog', |
|||
'level' => env('LOG_LEVEL', 'debug'), |
|||
], |
|||
|
|||
'null' => [ |
|||
'driver' => 'monolog', |
|||
'handler' => NullHandler::class, |
|||
], |
|||
|
|||
'emergency' => [ |
|||
'path' => storage_path('logs/laravel.log'), |
|||
], |
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,118 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Mailer |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option controls the default mailer that is used to send any email |
|||
| messages sent by your application. Alternative mailers may be setup |
|||
| and used as needed; however, this mailer will be used by default. |
|||
| |
|||
*/ |
|||
|
|||
'default' => env('MAIL_MAILER', 'smtp'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Mailer Configurations |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may configure all of the mailers used by your application plus |
|||
| their respective settings. Several examples have been configured for |
|||
| you and you are free to add your own as your application requires. |
|||
| |
|||
| Laravel supports a variety of mail "transport" drivers to be used while |
|||
| sending an e-mail. You will specify which one you are using for your |
|||
| mailers below. You are free to add additional mailers as required. |
|||
| |
|||
| Supported: "smtp", "sendmail", "mailgun", "ses", |
|||
| "postmark", "log", "array", "failover" |
|||
| |
|||
*/ |
|||
|
|||
'mailers' => [ |
|||
'smtp' => [ |
|||
'transport' => 'smtp', |
|||
'host' => env('MAIL_HOST', 'smtp.mailgun.org'), |
|||
'port' => env('MAIL_PORT', 587), |
|||
'encryption' => env('MAIL_ENCRYPTION', 'tls'), |
|||
'username' => env('MAIL_USERNAME'), |
|||
'password' => env('MAIL_PASSWORD'), |
|||
'timeout' => null, |
|||
'local_domain' => env('MAIL_EHLO_DOMAIN'), |
|||
], |
|||
|
|||
'ses' => [ |
|||
'transport' => 'ses', |
|||
], |
|||
|
|||
'mailgun' => [ |
|||
'transport' => 'mailgun', |
|||
], |
|||
|
|||
'postmark' => [ |
|||
'transport' => 'postmark', |
|||
], |
|||
|
|||
'sendmail' => [ |
|||
'transport' => 'sendmail', |
|||
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), |
|||
], |
|||
|
|||
'log' => [ |
|||
'transport' => 'log', |
|||
'channel' => env('MAIL_LOG_CHANNEL'), |
|||
], |
|||
|
|||
'array' => [ |
|||
'transport' => 'array', |
|||
], |
|||
|
|||
'failover' => [ |
|||
'transport' => 'failover', |
|||
'mailers' => [ |
|||
'smtp', |
|||
'log', |
|||
], |
|||
], |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Global "From" Address |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| You may wish for all e-mails sent by your application to be sent from |
|||
| the same address. Here, you may specify a name and address that is |
|||
| used globally for all e-mails that are sent by your application. |
|||
| |
|||
*/ |
|||
|
|||
'from' => [ |
|||
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), |
|||
'name' => env('MAIL_FROM_NAME', 'Example'), |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Markdown Mail Settings |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| If you are using Markdown based email rendering, you may configure your |
|||
| theme and component paths here, allowing you to customize the design |
|||
| of the emails. Or, you may simply stick with the Laravel defaults! |
|||
| |
|||
*/ |
|||
|
|||
'markdown' => [ |
|||
'theme' => 'default', |
|||
|
|||
'paths' => [ |
|||
resource_path('views/vendor/mail'), |
|||
], |
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,5 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'api_host' => env('ONENET_API_HOST', 'https://api.heclouds.com'), |
|||
]; |
|||
@ -0,0 +1,93 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Queue Connection Name |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Laravel's queue API supports an assortment of back-ends via a single |
|||
| API, giving you convenient access to each back-end using the same |
|||
| syntax for every one. Here you may define a default connection. |
|||
| |
|||
*/ |
|||
|
|||
'default' => env('QUEUE_CONNECTION', 'sync'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Queue Connections |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may configure the connection information for each server that |
|||
| is used by your application. A default configuration has been added |
|||
| for each back-end shipped with Laravel. You are free to add more. |
|||
| |
|||
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" |
|||
| |
|||
*/ |
|||
|
|||
'connections' => [ |
|||
|
|||
'sync' => [ |
|||
'driver' => 'sync', |
|||
], |
|||
|
|||
'database' => [ |
|||
'driver' => 'database', |
|||
'table' => 'jobs', |
|||
'queue' => 'default', |
|||
'retry_after' => 90, |
|||
'after_commit' => false, |
|||
], |
|||
|
|||
'beanstalkd' => [ |
|||
'driver' => 'beanstalkd', |
|||
'host' => 'localhost', |
|||
'queue' => 'default', |
|||
'retry_after' => 90, |
|||
'block_for' => 0, |
|||
'after_commit' => false, |
|||
], |
|||
|
|||
'sqs' => [ |
|||
'driver' => 'sqs', |
|||
'key' => env('AWS_ACCESS_KEY_ID'), |
|||
'secret' => env('AWS_SECRET_ACCESS_KEY'), |
|||
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), |
|||
'queue' => env('SQS_QUEUE', 'default'), |
|||
'suffix' => env('SQS_SUFFIX'), |
|||
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), |
|||
'after_commit' => false, |
|||
], |
|||
|
|||
'redis' => [ |
|||
'driver' => 'redis', |
|||
'connection' => 'default', |
|||
'queue' => env('REDIS_QUEUE', 'default'), |
|||
'retry_after' => 90, |
|||
'block_for' => null, |
|||
'after_commit' => false, |
|||
], |
|||
|
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Failed Queue Jobs |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| These options configure the behavior of failed queue job logging so you |
|||
| can control which database and table are used to store the jobs that |
|||
| have failed. You may change them to any database / table you wish. |
|||
| |
|||
*/ |
|||
|
|||
'failed' => [ |
|||
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), |
|||
'database' => env('DB_CONNECTION', 'mysql'), |
|||
'table' => 'failed_jobs', |
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,67 @@ |
|||
<?php |
|||
|
|||
use Laravel\Sanctum\Sanctum; |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Stateful Domains |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Requests from the following domains / hosts will receive stateful API |
|||
| authentication cookies. Typically, these should include your local |
|||
| and production domains which access your API via a frontend SPA. |
|||
| |
|||
*/ |
|||
|
|||
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( |
|||
'%s%s', |
|||
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', |
|||
Sanctum::currentApplicationUrlWithPort() |
|||
))), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Sanctum Guards |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This array contains the authentication guards that will be checked when |
|||
| Sanctum is trying to authenticate a request. If none of these guards |
|||
| are able to authenticate the request, Sanctum will use the bearer |
|||
| token that's present on an incoming request for authentication. |
|||
| |
|||
*/ |
|||
|
|||
'guard' => ['web'], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Expiration Minutes |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This value controls the number of minutes until an issued token will be |
|||
| considered expired. If this value is null, personal access tokens do |
|||
| not expire. This won't tweak the lifetime of first-party sessions. |
|||
| |
|||
*/ |
|||
|
|||
'expiration' => null, |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Sanctum Middleware |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| When authenticating your first-party SPA with Sanctum you may need to |
|||
| customize some of the middleware Sanctum uses while processing the |
|||
| request. You may change the middleware listed below as required. |
|||
| |
|||
*/ |
|||
|
|||
'middleware' => [ |
|||
'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, |
|||
'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, |
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,34 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Third Party Services |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This file is for storing the credentials for third party services such |
|||
| as Mailgun, Postmark, AWS and more. This file provides the de facto |
|||
| location for this type of information, allowing packages to have |
|||
| a conventional file to locate the various service credentials. |
|||
| |
|||
*/ |
|||
|
|||
'mailgun' => [ |
|||
'domain' => env('MAILGUN_DOMAIN'), |
|||
'secret' => env('MAILGUN_SECRET'), |
|||
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), |
|||
'scheme' => 'https', |
|||
], |
|||
|
|||
'postmark' => [ |
|||
'token' => env('POSTMARK_TOKEN'), |
|||
], |
|||
|
|||
'ses' => [ |
|||
'key' => env('AWS_ACCESS_KEY_ID'), |
|||
'secret' => env('AWS_SECRET_ACCESS_KEY'), |
|||
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), |
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,201 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Str; |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Default Session Driver |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option controls the default session "driver" that will be used on |
|||
| requests. By default, we will use the lightweight native driver but |
|||
| you may specify any of the other wonderful drivers provided here. |
|||
| |
|||
| Supported: "file", "cookie", "database", "apc", |
|||
| "memcached", "redis", "dynamodb", "array" |
|||
| |
|||
*/ |
|||
|
|||
'driver' => env('SESSION_DRIVER', 'file'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Lifetime |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may specify the number of minutes that you wish the session |
|||
| to be allowed to remain idle before it expires. If you want them |
|||
| to immediately expire on the browser closing, set that option. |
|||
| |
|||
*/ |
|||
|
|||
'lifetime' => env('SESSION_LIFETIME', 120), |
|||
|
|||
'expire_on_close' => false, |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Encryption |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option allows you to easily specify that all of your session data |
|||
| should be encrypted before it is stored. All encryption will be run |
|||
| automatically by Laravel and you can use the Session like normal. |
|||
| |
|||
*/ |
|||
|
|||
'encrypt' => false, |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session File Location |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| When using the native session driver, we need a location where session |
|||
| files may be stored. A default has been set for you but a different |
|||
| location may be specified. This is only needed for file sessions. |
|||
| |
|||
*/ |
|||
|
|||
'files' => storage_path('framework/sessions'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Database Connection |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| When using the "database" or "redis" session drivers, you may specify a |
|||
| connection that should be used to manage these sessions. This should |
|||
| correspond to a connection in your database configuration options. |
|||
| |
|||
*/ |
|||
|
|||
'connection' => env('SESSION_CONNECTION'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Database Table |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| When using the "database" session driver, you may specify the table we |
|||
| should use to manage the sessions. Of course, a sensible default is |
|||
| provided for you; however, you are free to change this as needed. |
|||
| |
|||
*/ |
|||
|
|||
'table' => 'sessions', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Cache Store |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| While using one of the framework's cache driven session backends you may |
|||
| list a cache store that should be used for these sessions. This value |
|||
| must match with one of the application's configured cache "stores". |
|||
| |
|||
| Affects: "apc", "dynamodb", "memcached", "redis" |
|||
| |
|||
*/ |
|||
|
|||
'store' => env('SESSION_STORE'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Sweeping Lottery |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Some session drivers must manually sweep their storage location to get |
|||
| rid of old sessions from storage. Here are the chances that it will |
|||
| happen on a given request. By default, the odds are 2 out of 100. |
|||
| |
|||
*/ |
|||
|
|||
'lottery' => [2, 100], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Cookie Name |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may change the name of the cookie used to identify a session |
|||
| instance by ID. The name specified here will get used every time a |
|||
| new session cookie is created by the framework for every driver. |
|||
| |
|||
*/ |
|||
|
|||
'cookie' => env( |
|||
'SESSION_COOKIE', |
|||
Str::slug(env('APP_NAME', 'laravel'), '_').'_session' |
|||
), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Cookie Path |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The session cookie path determines the path for which the cookie will |
|||
| be regarded as available. Typically, this will be the root path of |
|||
| your application but you are free to change this when necessary. |
|||
| |
|||
*/ |
|||
|
|||
'path' => '/', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Session Cookie Domain |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may change the domain of the cookie used to identify a session |
|||
| in your application. This will determine which domains the cookie is |
|||
| available to in your application. A sensible default has been set. |
|||
| |
|||
*/ |
|||
|
|||
'domain' => env('SESSION_DOMAIN'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| HTTPS Only Cookies |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| By setting this option to true, session cookies will only be sent back |
|||
| to the server if the browser has a HTTPS connection. This will keep |
|||
| the cookie from being sent to you when it can't be done securely. |
|||
| |
|||
*/ |
|||
|
|||
'secure' => env('SESSION_SECURE_COOKIE'), |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| HTTP Access Only |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Setting this value to true will prevent JavaScript from accessing the |
|||
| value of the cookie and the cookie will only be accessible through |
|||
| the HTTP protocol. You are free to modify this option if needed. |
|||
| |
|||
*/ |
|||
|
|||
'http_only' => true, |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Same-Site Cookies |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option determines how your cookies behave when cross-site requests |
|||
| take place, and can be used to mitigate CSRF attacks. By default, we |
|||
| will set this value to "lax" since this is a secure default value. |
|||
| |
|||
| Supported: "lax", "strict", "none", null |
|||
| |
|||
*/ |
|||
|
|||
'same_site' => 'lax', |
|||
|
|||
]; |
|||
@ -0,0 +1,36 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| View Storage Paths |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Most templating systems load templates from disk. Here you may specify |
|||
| an array of paths that should be checked for your views. Of course |
|||
| the usual Laravel view path has already been registered for you. |
|||
| |
|||
*/ |
|||
|
|||
'paths' => [ |
|||
resource_path('views'), |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Compiled View Path |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| This option determines where all the compiled Blade templates will be |
|||
| stored for your application. Typically, this is within the storage |
|||
| directory. However, as usual, you are free to change this value. |
|||
| |
|||
*/ |
|||
|
|||
'compiled' => env( |
|||
'VIEW_COMPILED_PATH', |
|||
realpath(storage_path('framework/views')) |
|||
), |
|||
|
|||
]; |
|||
@ -0,0 +1 @@ |
|||
*.sqlite* |
|||
@ -0,0 +1,42 @@ |
|||
<?php |
|||
|
|||
namespace Database\Factories; |
|||
|
|||
use Illuminate\Database\Eloquent\Factories\Factory; |
|||
use Illuminate\Support\Str; |
|||
|
|||
/** |
|||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User> |
|||
*/ |
|||
class UserFactory extends Factory |
|||
{ |
|||
/** |
|||
* Define the model's default state. |
|||
* |
|||
* @return array<string, mixed> |
|||
*/ |
|||
public function definition() |
|||
{ |
|||
return [ |
|||
'name' => fake()->name(), |
|||
'email' => fake()->safeEmail(), |
|||
'email_verified_at' => now(), |
|||
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password |
|||
'remember_token' => Str::random(10), |
|||
]; |
|||
} |
|||
|
|||
/** |
|||
* Indicate that the model's email address should be unverified. |
|||
* |
|||
* @return static |
|||
*/ |
|||
public function unverified() |
|||
{ |
|||
return $this->state(function (array $attributes) { |
|||
return [ |
|||
'email_verified_at' => null, |
|||
]; |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
<?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('users', function (Blueprint $table) { |
|||
$table->id(); |
|||
$table->string('name'); |
|||
$table->string('email')->unique(); |
|||
$table->timestamp('email_verified_at')->nullable(); |
|||
$table->string('password'); |
|||
$table->rememberToken(); |
|||
$table->timestamps(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists('users'); |
|||
} |
|||
}; |
|||
@ -0,0 +1,32 @@ |
|||
<?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('password_resets', function (Blueprint $table) { |
|||
$table->string('email')->index(); |
|||
$table->string('token'); |
|||
$table->timestamp('created_at')->nullable(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists('password_resets'); |
|||
} |
|||
}; |
|||
@ -0,0 +1,110 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Database\Migrations\Migration; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Support\Facades\Schema; |
|||
|
|||
class CreateAdminTables extends Migration |
|||
{ |
|||
public function getConnection() |
|||
{ |
|||
return $this->config('database.connection') ?: config('database.default'); |
|||
} |
|||
|
|||
public function config($key) |
|||
{ |
|||
return config('admin.'.$key); |
|||
} |
|||
|
|||
/** |
|||
* Run the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::create($this->config('database.users_table'), function (Blueprint $table) { |
|||
$table->bigIncrements('id'); |
|||
$table->string('username', 120)->unique(); |
|||
$table->string('password', 80); |
|||
$table->string('name'); |
|||
$table->string('avatar')->nullable(); |
|||
$table->string('remember_token', 100)->nullable(); |
|||
$table->timestamps(); |
|||
}); |
|||
|
|||
Schema::create($this->config('database.roles_table'), function (Blueprint $table) { |
|||
$table->bigIncrements('id'); |
|||
$table->string('name', 50); |
|||
$table->string('slug', 50)->unique(); |
|||
$table->timestamps(); |
|||
}); |
|||
|
|||
Schema::create($this->config('database.permissions_table'), function (Blueprint $table) { |
|||
$table->bigIncrements('id'); |
|||
$table->string('name', 50); |
|||
$table->string('slug', 50)->unique(); |
|||
$table->string('http_method')->nullable(); |
|||
$table->text('http_path')->nullable(); |
|||
$table->integer('order')->default(0); |
|||
$table->bigInteger('parent_id')->default(0); |
|||
$table->timestamps(); |
|||
}); |
|||
|
|||
Schema::create($this->config('database.menu_table'), function (Blueprint $table) { |
|||
$table->bigIncrements('id'); |
|||
$table->bigInteger('parent_id')->default(0); |
|||
$table->integer('order')->default(0); |
|||
$table->string('title', 50); |
|||
$table->string('icon', 50)->nullable(); |
|||
$table->string('uri', 50)->nullable(); |
|||
|
|||
$table->timestamps(); |
|||
}); |
|||
|
|||
Schema::create($this->config('database.role_users_table'), function (Blueprint $table) { |
|||
$table->bigInteger('role_id'); |
|||
$table->bigInteger('user_id'); |
|||
$table->unique(['role_id', 'user_id']); |
|||
$table->timestamps(); |
|||
}); |
|||
|
|||
Schema::create($this->config('database.role_permissions_table'), function (Blueprint $table) { |
|||
$table->bigInteger('role_id'); |
|||
$table->bigInteger('permission_id'); |
|||
$table->unique(['role_id', 'permission_id']); |
|||
$table->timestamps(); |
|||
}); |
|||
|
|||
Schema::create($this->config('database.role_menu_table'), function (Blueprint $table) { |
|||
$table->bigInteger('role_id'); |
|||
$table->bigInteger('menu_id'); |
|||
$table->unique(['role_id', 'menu_id']); |
|||
$table->timestamps(); |
|||
}); |
|||
|
|||
Schema::create($this->config('database.permission_menu_table'), function (Blueprint $table) { |
|||
$table->bigInteger('permission_id'); |
|||
$table->bigInteger('menu_id'); |
|||
$table->unique(['permission_id', 'menu_id']); |
|||
$table->timestamps(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists($this->config('database.users_table')); |
|||
Schema::dropIfExists($this->config('database.roles_table')); |
|||
Schema::dropIfExists($this->config('database.permissions_table')); |
|||
Schema::dropIfExists($this->config('database.menu_table')); |
|||
Schema::dropIfExists($this->config('database.role_users_table')); |
|||
Schema::dropIfExists($this->config('database.role_permissions_table')); |
|||
Schema::dropIfExists($this->config('database.role_menu_table')); |
|||
Schema::dropIfExists($this->config('database.permission_menu_table')); |
|||
} |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
<?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('failed_jobs', function (Blueprint $table) { |
|||
$table->id(); |
|||
$table->string('uuid')->unique(); |
|||
$table->text('connection'); |
|||
$table->text('queue'); |
|||
$table->longText('payload'); |
|||
$table->longText('exception'); |
|||
$table->timestamp('failed_at')->useCurrent(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists('failed_jobs'); |
|||
} |
|||
}; |
|||
@ -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('personal_access_tokens', function (Blueprint $table) { |
|||
$table->id(); |
|||
$table->morphs('tokenable'); |
|||
$table->string('name'); |
|||
$table->string('token', 64)->unique(); |
|||
$table->text('abilities')->nullable(); |
|||
$table->timestamp('last_used_at')->nullable(); |
|||
$table->timestamp('expires_at')->nullable(); |
|||
$table->timestamps(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists('personal_access_tokens'); |
|||
} |
|||
}; |
|||
@ -0,0 +1,42 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Database\Migrations\Migration; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Support\Facades\Schema; |
|||
|
|||
class CreateAdminSettingsTable extends Migration |
|||
{ |
|||
public function getConnection() |
|||
{ |
|||
return $this->config('database.connection') ?: config('database.default'); |
|||
} |
|||
|
|||
public function config($key) |
|||
{ |
|||
return config('admin.'.$key); |
|||
} |
|||
|
|||
/** |
|||
* Run the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::create($this->config('database.settings_table') ?: 'admin_settings', function (Blueprint $table) { |
|||
$table->string('slug', 100)->primary(); |
|||
$table->longText('value'); |
|||
$table->timestamps(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists($this->config('database.settings_table') ?: 'admin_settings'); |
|||
} |
|||
} |
|||
@ -0,0 +1,61 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Database\Migrations\Migration; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Support\Facades\Schema; |
|||
|
|||
class CreateAdminExtensionsTable extends Migration |
|||
{ |
|||
public function getConnection() |
|||
{ |
|||
return $this->config('database.connection') ?: config('database.default'); |
|||
} |
|||
|
|||
public function config($key) |
|||
{ |
|||
return config('admin.'.$key); |
|||
} |
|||
|
|||
/** |
|||
* Run the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::create($this->config('database.extensions_table') ?: 'admin_extensions', function (Blueprint $table) { |
|||
$table->increments('id')->unsigned(); |
|||
$table->string('name', 100)->unique(); |
|||
$table->string('version', 20)->default(''); |
|||
$table->tinyInteger('is_enabled')->default(0); |
|||
$table->text('options')->nullable(); |
|||
$table->timestamps(); |
|||
|
|||
$table->engine = 'InnoDB'; |
|||
}); |
|||
|
|||
Schema::create($this->config('database.extension_histories_table') ?: 'admin_extension_histories', function (Blueprint $table) { |
|||
$table->bigIncrements('id')->unsigned(); |
|||
$table->string('name', 100); |
|||
$table->tinyInteger('type')->default(1); |
|||
$table->string('version', 20)->default(0); |
|||
$table->text('detail')->nullable(); |
|||
|
|||
$table->index('name'); |
|||
$table->timestamps(); |
|||
|
|||
$table->engine = 'InnoDB'; |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists($this->config('database.extensions_table') ?: 'admin_extensions'); |
|||
Schema::dropIfExists($this->config('database.extension_histories_table') ?: 'admin_extension_histories'); |
|||
} |
|||
} |
|||
@ -0,0 +1,44 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Database\Migrations\Migration; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Support\Facades\Schema; |
|||
|
|||
class UpdateAdminMenuTable extends Migration |
|||
{ |
|||
public function getConnection() |
|||
{ |
|||
return $this->config('database.connection') ?: config('database.default'); |
|||
} |
|||
|
|||
public function config($key) |
|||
{ |
|||
return config('admin.'.$key); |
|||
} |
|||
|
|||
/** |
|||
* Run the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::table($this->config('database.menu_table'), function (Blueprint $table) { |
|||
$table->tinyInteger('show')->default(1)->after('uri'); |
|||
$table->string('extension', 50)->default('')->after('uri'); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::table($this->config('database.menu_table'), function (Blueprint $table) { |
|||
$table->dropColumn('show'); |
|||
$table->dropColumn('extension'); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,37 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Facades\Schema; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Database\Migrations\Migration; |
|||
|
|||
class CreateRecordEquipResourceWriteTable extends Migration |
|||
{ |
|||
/** |
|||
* Run the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::create('record_equip_resource_write', function (Blueprint $table) { |
|||
$table->increments('id'); |
|||
$table->string('imei')->default('')->comment('nbiot设备的身份码'); |
|||
$table->string('obj_id')->default('')->comment('设备的object id , 对应到平台模型中为数据流id,必填'); |
|||
$table->string('obj_inst_id')->default('0')->comment('nbiot设备object下具体一个instance的id ,对应到平台模型中数据点key值的一部分,必填'); |
|||
$table->string('mode')->default('')->comment('write的写模式,只能是1或者2'); |
|||
$table->string('expired_time')->default('')->comment('命令过期时间戳,必填且大于valid_time'); |
|||
$table->string('trigger_msg')->default('')->comment('命令触发的上行消息类型,填写时必须在[1,7]之间;不填写默认为7'); |
|||
$table->timestamps(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists('record_equip_resource_write'); |
|||
} |
|||
} |
|||
@ -0,0 +1,37 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Facades\Schema; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Database\Migrations\Migration; |
|||
|
|||
class CreateEquipResourceRecordTable extends Migration |
|||
{ |
|||
/** |
|||
* Run the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::create('equip_resource_record', function (Blueprint $table) { |
|||
$table->increments('id'); |
|||
$table->string('imei')->default('')->comment('nbiot设备的身份码'); |
|||
$table->string('obj_id')->default('')->comment('设备的object id , 对应到平台模型中为数据流id,必填'); |
|||
$table->string('obj_inst_id')->default('0')->comment('nbiot设备object下具体一个instance的id ,对应到平台模型中数据点key值的一部分,必填'); |
|||
$table->string('mode')->default('')->comment('write的写模式,只能是1或者2'); |
|||
$table->string('expired_time')->default('')->comment('命令过期时间戳,必填且大于valid_time'); |
|||
$table->string('trigger_msg')->default('')->comment('命令触发的上行消息类型,填写时必须在[1,7]之间;不填写默认为7'); |
|||
$table->timestamps(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists('equip_resource_record'); |
|||
} |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
<?php |
|||
|
|||
namespace Database\Seeders; |
|||
|
|||
// use Illuminate\Database\Console\Seeds\WithoutModelEvents; |
|||
use Illuminate\Database\Seeder; |
|||
|
|||
class DatabaseSeeder extends Seeder |
|||
{ |
|||
/** |
|||
* Seed the application's database. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function run() |
|||
{ |
|||
// \App\Models\User::factory(10)->create(); |
|||
|
|||
// \App\Models\User::factory()->create([ |
|||
// 'name' => 'Test User', |
|||
// 'email' => 'test@example.com', |
|||
// ]); |
|||
} |
|||
} |
|||
@ -0,0 +1,229 @@ |
|||
<?php |
|||
|
|||
/** |
|||
* A helper file for Dcat Admin, to provide autocomplete information to your IDE |
|||
* |
|||
* This file should not be included in your code, only analyzed by your IDE! |
|||
* |
|||
* @author jqh <841324345@qq.com> |
|||
*/ |
|||
namespace Dcat\Admin { |
|||
use Illuminate\Support\Collection; |
|||
|
|||
/** |
|||
* @property Grid\Column|Collection created_at |
|||
* @property Grid\Column|Collection detail |
|||
* @property Grid\Column|Collection id |
|||
* @property Grid\Column|Collection name |
|||
* @property Grid\Column|Collection type |
|||
* @property Grid\Column|Collection updated_at |
|||
* @property Grid\Column|Collection version |
|||
* @property Grid\Column|Collection is_enabled |
|||
* @property Grid\Column|Collection extension |
|||
* @property Grid\Column|Collection icon |
|||
* @property Grid\Column|Collection order |
|||
* @property Grid\Column|Collection parent_id |
|||
* @property Grid\Column|Collection uri |
|||
* @property Grid\Column|Collection menu_id |
|||
* @property Grid\Column|Collection permission_id |
|||
* @property Grid\Column|Collection http_method |
|||
* @property Grid\Column|Collection http_path |
|||
* @property Grid\Column|Collection slug |
|||
* @property Grid\Column|Collection role_id |
|||
* @property Grid\Column|Collection user_id |
|||
* @property Grid\Column|Collection value |
|||
* @property Grid\Column|Collection avatar |
|||
* @property Grid\Column|Collection password |
|||
* @property Grid\Column|Collection remember_token |
|||
* @property Grid\Column|Collection username |
|||
* @property Grid\Column|Collection expired_time |
|||
* @property Grid\Column|Collection imei |
|||
* @property Grid\Column|Collection mode |
|||
* @property Grid\Column|Collection obj_id |
|||
* @property Grid\Column|Collection obj_inst_id |
|||
* @property Grid\Column|Collection trigger_msg |
|||
* @property Grid\Column|Collection connection |
|||
* @property Grid\Column|Collection exception |
|||
* @property Grid\Column|Collection failed_at |
|||
* @property Grid\Column|Collection payload |
|||
* @property Grid\Column|Collection queue |
|||
* @property Grid\Column|Collection uuid |
|||
* @property Grid\Column|Collection email |
|||
* @property Grid\Column|Collection token |
|||
* @property Grid\Column|Collection abilities |
|||
* @property Grid\Column|Collection expires_at |
|||
* @property Grid\Column|Collection last_used_at |
|||
* @property Grid\Column|Collection tokenable_id |
|||
* @property Grid\Column|Collection tokenable_type |
|||
* @property Grid\Column|Collection email_verified_at |
|||
* |
|||
* @method Grid\Column|Collection created_at(string $label = null) |
|||
* @method Grid\Column|Collection detail(string $label = null) |
|||
* @method Grid\Column|Collection id(string $label = null) |
|||
* @method Grid\Column|Collection name(string $label = null) |
|||
* @method Grid\Column|Collection type(string $label = null) |
|||
* @method Grid\Column|Collection updated_at(string $label = null) |
|||
* @method Grid\Column|Collection version(string $label = null) |
|||
* @method Grid\Column|Collection is_enabled(string $label = null) |
|||
* @method Grid\Column|Collection extension(string $label = null) |
|||
* @method Grid\Column|Collection icon(string $label = null) |
|||
* @method Grid\Column|Collection order(string $label = null) |
|||
* @method Grid\Column|Collection parent_id(string $label = null) |
|||
* @method Grid\Column|Collection uri(string $label = null) |
|||
* @method Grid\Column|Collection menu_id(string $label = null) |
|||
* @method Grid\Column|Collection permission_id(string $label = null) |
|||
* @method Grid\Column|Collection http_method(string $label = null) |
|||
* @method Grid\Column|Collection http_path(string $label = null) |
|||
* @method Grid\Column|Collection slug(string $label = null) |
|||
* @method Grid\Column|Collection role_id(string $label = null) |
|||
* @method Grid\Column|Collection user_id(string $label = null) |
|||
* @method Grid\Column|Collection value(string $label = null) |
|||
* @method Grid\Column|Collection avatar(string $label = null) |
|||
* @method Grid\Column|Collection password(string $label = null) |
|||
* @method Grid\Column|Collection remember_token(string $label = null) |
|||
* @method Grid\Column|Collection username(string $label = null) |
|||
* @method Grid\Column|Collection expired_time(string $label = null) |
|||
* @method Grid\Column|Collection imei(string $label = null) |
|||
* @method Grid\Column|Collection mode(string $label = null) |
|||
* @method Grid\Column|Collection obj_id(string $label = null) |
|||
* @method Grid\Column|Collection obj_inst_id(string $label = null) |
|||
* @method Grid\Column|Collection trigger_msg(string $label = null) |
|||
* @method Grid\Column|Collection connection(string $label = null) |
|||
* @method Grid\Column|Collection exception(string $label = null) |
|||
* @method Grid\Column|Collection failed_at(string $label = null) |
|||
* @method Grid\Column|Collection payload(string $label = null) |
|||
* @method Grid\Column|Collection queue(string $label = null) |
|||
* @method Grid\Column|Collection uuid(string $label = null) |
|||
* @method Grid\Column|Collection email(string $label = null) |
|||
* @method Grid\Column|Collection token(string $label = null) |
|||
* @method Grid\Column|Collection abilities(string $label = null) |
|||
* @method Grid\Column|Collection expires_at(string $label = null) |
|||
* @method Grid\Column|Collection last_used_at(string $label = null) |
|||
* @method Grid\Column|Collection tokenable_id(string $label = null) |
|||
* @method Grid\Column|Collection tokenable_type(string $label = null) |
|||
* @method Grid\Column|Collection email_verified_at(string $label = null) |
|||
*/ |
|||
class Grid {} |
|||
|
|||
class MiniGrid extends Grid {} |
|||
|
|||
/** |
|||
* @property Show\Field|Collection created_at |
|||
* @property Show\Field|Collection detail |
|||
* @property Show\Field|Collection id |
|||
* @property Show\Field|Collection name |
|||
* @property Show\Field|Collection type |
|||
* @property Show\Field|Collection updated_at |
|||
* @property Show\Field|Collection version |
|||
* @property Show\Field|Collection is_enabled |
|||
* @property Show\Field|Collection extension |
|||
* @property Show\Field|Collection icon |
|||
* @property Show\Field|Collection order |
|||
* @property Show\Field|Collection parent_id |
|||
* @property Show\Field|Collection uri |
|||
* @property Show\Field|Collection menu_id |
|||
* @property Show\Field|Collection permission_id |
|||
* @property Show\Field|Collection http_method |
|||
* @property Show\Field|Collection http_path |
|||
* @property Show\Field|Collection slug |
|||
* @property Show\Field|Collection role_id |
|||
* @property Show\Field|Collection user_id |
|||
* @property Show\Field|Collection value |
|||
* @property Show\Field|Collection avatar |
|||
* @property Show\Field|Collection password |
|||
* @property Show\Field|Collection remember_token |
|||
* @property Show\Field|Collection username |
|||
* @property Show\Field|Collection expired_time |
|||
* @property Show\Field|Collection imei |
|||
* @property Show\Field|Collection mode |
|||
* @property Show\Field|Collection obj_id |
|||
* @property Show\Field|Collection obj_inst_id |
|||
* @property Show\Field|Collection trigger_msg |
|||
* @property Show\Field|Collection connection |
|||
* @property Show\Field|Collection exception |
|||
* @property Show\Field|Collection failed_at |
|||
* @property Show\Field|Collection payload |
|||
* @property Show\Field|Collection queue |
|||
* @property Show\Field|Collection uuid |
|||
* @property Show\Field|Collection email |
|||
* @property Show\Field|Collection token |
|||
* @property Show\Field|Collection abilities |
|||
* @property Show\Field|Collection expires_at |
|||
* @property Show\Field|Collection last_used_at |
|||
* @property Show\Field|Collection tokenable_id |
|||
* @property Show\Field|Collection tokenable_type |
|||
* @property Show\Field|Collection email_verified_at |
|||
* |
|||
* @method Show\Field|Collection created_at(string $label = null) |
|||
* @method Show\Field|Collection detail(string $label = null) |
|||
* @method Show\Field|Collection id(string $label = null) |
|||
* @method Show\Field|Collection name(string $label = null) |
|||
* @method Show\Field|Collection type(string $label = null) |
|||
* @method Show\Field|Collection updated_at(string $label = null) |
|||
* @method Show\Field|Collection version(string $label = null) |
|||
* @method Show\Field|Collection is_enabled(string $label = null) |
|||
* @method Show\Field|Collection extension(string $label = null) |
|||
* @method Show\Field|Collection icon(string $label = null) |
|||
* @method Show\Field|Collection order(string $label = null) |
|||
* @method Show\Field|Collection parent_id(string $label = null) |
|||
* @method Show\Field|Collection uri(string $label = null) |
|||
* @method Show\Field|Collection menu_id(string $label = null) |
|||
* @method Show\Field|Collection permission_id(string $label = null) |
|||
* @method Show\Field|Collection http_method(string $label = null) |
|||
* @method Show\Field|Collection http_path(string $label = null) |
|||
* @method Show\Field|Collection slug(string $label = null) |
|||
* @method Show\Field|Collection role_id(string $label = null) |
|||
* @method Show\Field|Collection user_id(string $label = null) |
|||
* @method Show\Field|Collection value(string $label = null) |
|||
* @method Show\Field|Collection avatar(string $label = null) |
|||
* @method Show\Field|Collection password(string $label = null) |
|||
* @method Show\Field|Collection remember_token(string $label = null) |
|||
* @method Show\Field|Collection username(string $label = null) |
|||
* @method Show\Field|Collection expired_time(string $label = null) |
|||
* @method Show\Field|Collection imei(string $label = null) |
|||
* @method Show\Field|Collection mode(string $label = null) |
|||
* @method Show\Field|Collection obj_id(string $label = null) |
|||
* @method Show\Field|Collection obj_inst_id(string $label = null) |
|||
* @method Show\Field|Collection trigger_msg(string $label = null) |
|||
* @method Show\Field|Collection connection(string $label = null) |
|||
* @method Show\Field|Collection exception(string $label = null) |
|||
* @method Show\Field|Collection failed_at(string $label = null) |
|||
* @method Show\Field|Collection payload(string $label = null) |
|||
* @method Show\Field|Collection queue(string $label = null) |
|||
* @method Show\Field|Collection uuid(string $label = null) |
|||
* @method Show\Field|Collection email(string $label = null) |
|||
* @method Show\Field|Collection token(string $label = null) |
|||
* @method Show\Field|Collection abilities(string $label = null) |
|||
* @method Show\Field|Collection expires_at(string $label = null) |
|||
* @method Show\Field|Collection last_used_at(string $label = null) |
|||
* @method Show\Field|Collection tokenable_id(string $label = null) |
|||
* @method Show\Field|Collection tokenable_type(string $label = null) |
|||
* @method Show\Field|Collection email_verified_at(string $label = null) |
|||
*/ |
|||
class Show {} |
|||
|
|||
/** |
|||
|
|||
*/ |
|||
class Form {} |
|||
|
|||
} |
|||
|
|||
namespace Dcat\Admin\Grid { |
|||
/** |
|||
|
|||
*/ |
|||
class Column {} |
|||
|
|||
/** |
|||
|
|||
*/ |
|||
class Filter {} |
|||
} |
|||
|
|||
namespace Dcat\Admin\Show { |
|||
/** |
|||
|
|||
*/ |
|||
class Field {} |
|||
} |
|||
@ -0,0 +1,228 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'scaffold' => [ |
|||
'header' => 'Scaffold', |
|||
'choose' => 'choose', |
|||
'table' => 'Table', |
|||
'model' => 'Model', |
|||
'controller' => 'Controller', |
|||
'repository' => 'Repository', |
|||
'add_field' => 'Add field', |
|||
'pk' => 'Primary key', |
|||
'soft_delete' => 'Soft delete', |
|||
'create_migration' => 'Create migration', |
|||
'create_model' => 'Create model', |
|||
'create_repository' => 'Create repository', |
|||
'create_controller' => 'Create controller', |
|||
'run_migrate' => 'Run migrate', |
|||
'create_lang' => 'Create lang', |
|||
'field' => 'field', |
|||
'translation' => 'translation', |
|||
'comment' => 'comment', |
|||
'default' => 'default', |
|||
'field_name' => 'field name', |
|||
'type' => 'type', |
|||
'nullable' => 'nullable', |
|||
'key' => 'key', |
|||
'translate_title' => 'Translate Title', |
|||
'sync_translation_with_comment' => 'Sync translation and comment', |
|||
], |
|||
'client' => [ |
|||
'delete_confirm' => 'Are you sure to delete this item ?', |
|||
'confirm' => 'Confirm', |
|||
'cancel' => 'Cancel', |
|||
'refresh_succeeded' => 'Refresh succeeded !', |
|||
'close' => 'Close', |
|||
'selected_options' => ':num options selected', |
|||
'exceed_max_item' => 'Maximum items exceeded.', |
|||
'no_preview' => 'No preview available.', |
|||
|
|||
'500' => 'Internal server error !', |
|||
'403' => 'Permission deny !', |
|||
'401' => 'Unauthorized !', |
|||
'419' => 'Page expired !', |
|||
], |
|||
'online' => 'Online', |
|||
'login' => 'Login', |
|||
'logout' => 'Logout', |
|||
'setting' => 'Setting', |
|||
'name' => 'Name', |
|||
'username' => 'Username', |
|||
'user' => 'User', |
|||
'alias' => 'Alias', |
|||
'routes' => 'Routes', |
|||
'route_action' => 'Route Action', |
|||
'middleware' => 'Middleware', |
|||
'method' => 'Method', |
|||
'old_password' => 'Old password', |
|||
'password' => 'Password', |
|||
'password_confirmation' => 'Password confirmation', |
|||
'old_password_error' => 'Incorrect password', |
|||
'remember_me' => 'Remember me', |
|||
'user_setting' => 'User setting', |
|||
'avatar' => 'Avatar', |
|||
'list' => 'List', |
|||
'new' => 'New', |
|||
'create' => 'Create', |
|||
'delete' => 'Delete', |
|||
'remove' => 'Remove', |
|||
'edit' => 'Edit', |
|||
'quick_edit' => 'Quick Edit', |
|||
'view' => 'View', |
|||
'continue_editing' => 'Continue editing', |
|||
'continue_creating' => 'Continue creating', |
|||
'detail' => 'Detail', |
|||
'browse' => 'Browse', |
|||
'reset' => 'Reset', |
|||
'export' => 'Export', |
|||
'batch_delete' => 'Batch delete', |
|||
'save' => 'Save', |
|||
'refresh' => 'Refresh', |
|||
'order' => 'Order', |
|||
'expand' => 'Expand', |
|||
'collapse' => 'Collapse', |
|||
'filter' => 'Filter', |
|||
'search' => 'Search', |
|||
'close' => 'Close', |
|||
'show' => 'Show', |
|||
'entries' => 'entries', |
|||
'captcha' => 'Captcha', |
|||
'action' => 'Action', |
|||
'title' => 'Title', |
|||
'description' => 'Description', |
|||
'back' => 'Back', |
|||
'back_to_list' => 'Back to List', |
|||
'submit' => 'Submit', |
|||
'menu' => 'Menu', |
|||
'input' => 'Input', |
|||
'succeeded' => 'Succeeded', |
|||
'failed' => 'Failed', |
|||
'delete_confirm' => 'Are you sure to delete this item ?', |
|||
'delete_succeeded' => 'Delete succeeded !', |
|||
'delete_failed' => 'Delete failed !', |
|||
'update_succeeded' => 'Update succeeded !', |
|||
'update_failed' => 'Update failed !', |
|||
'save_succeeded' => 'Save succeeded !', |
|||
'save_failed' => 'Save failed !', |
|||
'refresh_succeeded' => 'Refresh succeeded !', |
|||
'login_successful' => 'Login successful', |
|||
'choose' => 'Choose', |
|||
'choose_file' => 'Select file', |
|||
'choose_image' => 'Select image', |
|||
'more' => 'More', |
|||
'deny' => 'Permission denied', |
|||
'administrator' => 'Administrator', |
|||
'no_data' => 'No data.', |
|||
'roles' => 'Roles', |
|||
'permissions' => 'Permissions', |
|||
'slug' => 'Slug', |
|||
'created_at' => 'Created At', |
|||
'updated_at' => 'Updated At', |
|||
'alert' => 'Alert', |
|||
'parent_id' => 'Parent', |
|||
'icon' => 'Icon', |
|||
'uri' => 'URI', |
|||
'operation_log' => 'Operation log', |
|||
'parent_select_error' => 'Parent select error', |
|||
'tree' => 'Tree', |
|||
'table' => 'Table', |
|||
'default' => 'Default', |
|||
'import' => 'Import', |
|||
'is_not_import' => 'No', |
|||
'selected_options' => ':num options selected', |
|||
'pagination' => [ |
|||
'range' => 'Showing :first to :last of :total entries', |
|||
], |
|||
'role' => 'Role', |
|||
'permission' => 'Permission', |
|||
'route' => 'Route', |
|||
'confirm' => 'Confirm', |
|||
'cancel' => 'Cancel', |
|||
'selectall' => 'Select all', |
|||
'http' => [ |
|||
'method' => 'HTTP method', |
|||
'path' => 'HTTP path', |
|||
], |
|||
'all_methods_if_empty' => 'All methods if empty', |
|||
'all' => 'All', |
|||
'current_page' => 'Current page', |
|||
'selected_rows' => 'Selected rows', |
|||
'upload' => 'Upload', |
|||
'new_folder' => 'New folder', |
|||
'time' => 'Time', |
|||
'size' => 'Size', |
|||
'between_start' => 'Start', |
|||
'between_end' => 'End', |
|||
'next_page' => 'Next', |
|||
'prev_page' => 'Previous', |
|||
'next_step' => 'Next', |
|||
'prev_step' => 'Previous', |
|||
'done' => 'Done', |
|||
'listbox' => [ |
|||
'text_total' => 'Showing all {0}', |
|||
'text_empty' => 'Empty list', |
|||
'filtered' => '{0} / {1}', |
|||
'filter_clear' => 'Show all', |
|||
'filter_placeholder' => 'Filter', |
|||
], |
|||
'responsive' => [ |
|||
'display_all' => 'Display all', |
|||
'display' => 'Display', |
|||
'focus' => 'Focus', |
|||
], |
|||
'uploader' => [ |
|||
'add_new_media' => 'Browse', |
|||
'drag_file' => 'Or drag file here', |
|||
'max_file_limit' => 'The :attribute may not be greater than :max.', |
|||
'exceed_size' => 'Exceeds the maximum file-size', |
|||
'interrupt' => 'Interrupt', |
|||
'upload_failed' => 'Upload failed! Please try again.', |
|||
'selected_files' => ':num files selected,size: :size。', |
|||
'selected_has_failed' => 'Uploaded: :success, failed: :fail, <a class="retry" href="javascript:"";">retry </a>or<a class="ignore" href="javascript:"";"> ignore</a>', |
|||
'selected_success' => ':num(:size) files selected, Uploaded: :success.', |
|||
'dot' => ', ', |
|||
'failed_num' => 'failed::fail.', |
|||
'pause_upload' => 'Pause', |
|||
'go_on_upload' => 'Go On', |
|||
'start_upload' => 'Upload', |
|||
'upload_success_message' => ':success files uploaded successfully', |
|||
'go_on_add' => 'New File', |
|||
'Q_TYPE_DENIED' => 'Sorry, the type of this file is not allowed!', |
|||
'Q_EXCEED_NUM_LIMIT' => 'Sorry, maximum number of allowable file uploads has been exceeded!', |
|||
'F_EXCEED_SIZE' => 'Sorry,the maximum file-size has been exceeded!', |
|||
'Q_EXCEED_SIZE_LIMIT' => 'Sorry, the maximum file-size has been exceeded!', |
|||
'F_DUPLICATE' => 'Duplicate file.', |
|||
'confirm_delete_file' => 'Are you sure delete this file from server?', |
|||
'dimensions' => 'The image dimensions is invalid.', |
|||
], |
|||
'import_extension_confirm' => 'Are you sure import the extension?', |
|||
'quick_create' => 'Quick create', |
|||
'grid_items_selected' => '{n} items selected', |
|||
'nothing_updated' => 'Nothing has been updated.', |
|||
'welcome_back' => 'Welcome back, please login to your account.', |
|||
'documentation' => 'Documentation', |
|||
'demo' => 'Demo', |
|||
'extensions' => 'Extensions', |
|||
'version' => 'Version', |
|||
'current_version' => 'Current version', |
|||
'latest_version' => 'Latest version', |
|||
'upgrade_to_version' => 'Upgrade to version :version', |
|||
'enable' => 'Enable', |
|||
'disable' => 'Disable', |
|||
'uninstall' => 'Uninstall', |
|||
'confirm_uninstall' => 'Please confirm that you wish to uninstall this extension. This may result in potential data loss.', |
|||
'marketplace' => 'Marketplace', |
|||
'theme' => 'Theme', |
|||
'application' => 'Application', |
|||
'install_from_local' => 'Install From Local', |
|||
'install_succeeded' => 'Install succeeded !', |
|||
'invalid_extension_package' => 'Invalid extension package !', |
|||
'copied' => 'Copied', |
|||
'auth_failed' => 'These credentials do not match our records.', |
|||
'validation' => [ |
|||
'match' => 'The :attribute and :other must match.', |
|||
'minlength' => 'The :attribute must be at least :min characters.', |
|||
'maxlength' => 'The :attribute may not be greater than :max characters.', |
|||
], |
|||
]; |
|||
@ -0,0 +1,20 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Authentication Language Lines |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The following language lines are used during authentication for various |
|||
| messages that we need to display to the user. You are free to modify |
|||
| these language lines according to your application's requirements. |
|||
| |
|||
*/ |
|||
|
|||
'failed' => 'These credentials do not match our records.', |
|||
'password' => 'The provided password is incorrect.', |
|||
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', |
|||
|
|||
]; |
|||
@ -0,0 +1,17 @@ |
|||
<?php |
|||
return [ |
|||
'labels' => [ |
|||
'EquipResourceRecord' => '缓存命令-写设备资源记录', |
|||
'equip-resource-record' => '缓存命令-写设备资源记录', |
|||
], |
|||
'fields' => [ |
|||
'imei' => 'nbiot设备的身份码', |
|||
'obj_id' => '设备的object id , 对应到平台模型中为数据流id,必填', |
|||
'obj_inst_id' => 'nbiot设备object下具体一个instance的id ,对应到平台模型中数据点key值的一部分,必填', |
|||
'mode' => 'write的写模式,只能是1或者2', |
|||
'expired_time' => '命令过期时间戳,必填且大于valid_time', |
|||
'trigger_msg' => '命令触发的上行消息类型,填写时必须在[1,7]之间;不填写默认为7', |
|||
], |
|||
'options' => [ |
|||
], |
|||
]; |
|||
@ -0,0 +1,19 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Pagination Language Lines |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The following language lines are used by the paginator library to build |
|||
| the simple pagination links. You are free to change them to anything |
|||
| you want to customize your views to better match your application. |
|||
| |
|||
*/ |
|||
|
|||
'previous' => '« Previous', |
|||
'next' => 'Next »', |
|||
|
|||
]; |
|||
@ -0,0 +1,22 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Password Reset Language Lines |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The following language lines are the default lines which match reasons |
|||
| that are given by the password broker for a password update attempt |
|||
| has failed, such as for an invalid token or invalid new password. |
|||
| |
|||
*/ |
|||
|
|||
'reset' => 'Your password has been reset!', |
|||
'sent' => 'We have emailed your password reset link!', |
|||
'throttled' => 'Please wait before retrying.', |
|||
'token' => 'This password reset token is invalid.', |
|||
'user' => "We can't find a user with that email address.", |
|||
|
|||
]; |
|||
@ -0,0 +1,17 @@ |
|||
<?php |
|||
return [ |
|||
'labels' => [ |
|||
'RecordEquipResourceWrite' => '缓存命令-写设备资源/Write', |
|||
'record-equip-resource-write' => '缓存命令-写设备资源/Write', |
|||
], |
|||
'fields' => [ |
|||
'imei' => 'nbiot设备的身份码', |
|||
'obj_id' => '设备的object id , 对应到平台模型中为数据流id,必填', |
|||
'obj_inst_id' => 'nbiot设备object下具体一个instance的id ,对应到平台模型中数据点key值的一部分,必填', |
|||
'mode' => 'write的写模式,只能是1或者2', |
|||
'expired_time' => '命令过期时间戳,必填且大于valid_time', |
|||
'trigger_msg' => '命令触发的上行消息类型,填写时必须在[1,7]之间;不填写默认为7', |
|||
], |
|||
'options' => [ |
|||
], |
|||
]; |
|||
@ -0,0 +1,171 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Validation Language Lines |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The following language lines contain the default error messages used by |
|||
| the validator class. Some of these rules have multiple versions such |
|||
| as the size rules. Feel free to tweak each of these messages here. |
|||
| |
|||
*/ |
|||
|
|||
'accepted' => 'The :attribute must be accepted.', |
|||
'accepted_if' => 'The :attribute must be accepted when :other is :value.', |
|||
'active_url' => 'The :attribute is not a valid URL.', |
|||
'after' => 'The :attribute must be a date after :date.', |
|||
'after_or_equal' => 'The :attribute must be a date after or equal to :date.', |
|||
'alpha' => 'The :attribute must only contain letters.', |
|||
'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.', |
|||
'alpha_num' => 'The :attribute must only contain letters and numbers.', |
|||
'array' => 'The :attribute must be an array.', |
|||
'before' => 'The :attribute must be a date before :date.', |
|||
'before_or_equal' => 'The :attribute must be a date before or equal to :date.', |
|||
'between' => [ |
|||
'array' => 'The :attribute must have between :min and :max items.', |
|||
'file' => 'The :attribute must be between :min and :max kilobytes.', |
|||
'numeric' => 'The :attribute must be between :min and :max.', |
|||
'string' => 'The :attribute must be between :min and :max characters.', |
|||
], |
|||
'boolean' => 'The :attribute field must be true or false.', |
|||
'confirmed' => 'The :attribute confirmation does not match.', |
|||
'current_password' => 'The password is incorrect.', |
|||
'date' => 'The :attribute is not a valid date.', |
|||
'date_equals' => 'The :attribute must be a date equal to :date.', |
|||
'date_format' => 'The :attribute does not match the format :format.', |
|||
'declined' => 'The :attribute must be declined.', |
|||
'declined_if' => 'The :attribute must be declined when :other is :value.', |
|||
'different' => 'The :attribute and :other must be different.', |
|||
'digits' => 'The :attribute must be :digits digits.', |
|||
'digits_between' => 'The :attribute must be between :min and :max digits.', |
|||
'dimensions' => 'The :attribute has invalid image dimensions.', |
|||
'distinct' => 'The :attribute field has a duplicate value.', |
|||
'doesnt_end_with' => 'The :attribute may not end with one of the following: :values.', |
|||
'doesnt_start_with' => 'The :attribute may not start with one of the following: :values.', |
|||
'email' => 'The :attribute must be a valid email address.', |
|||
'ends_with' => 'The :attribute must end with one of the following: :values.', |
|||
'enum' => 'The selected :attribute is invalid.', |
|||
'exists' => 'The selected :attribute is invalid.', |
|||
'file' => 'The :attribute must be a file.', |
|||
'filled' => 'The :attribute field must have a value.', |
|||
'gt' => [ |
|||
'array' => 'The :attribute must have more than :value items.', |
|||
'file' => 'The :attribute must be greater than :value kilobytes.', |
|||
'numeric' => 'The :attribute must be greater than :value.', |
|||
'string' => 'The :attribute must be greater than :value characters.', |
|||
], |
|||
'gte' => [ |
|||
'array' => 'The :attribute must have :value items or more.', |
|||
'file' => 'The :attribute must be greater than or equal to :value kilobytes.', |
|||
'numeric' => 'The :attribute must be greater than or equal to :value.', |
|||
'string' => 'The :attribute must be greater than or equal to :value characters.', |
|||
], |
|||
'image' => 'The :attribute must be an image.', |
|||
'in' => 'The selected :attribute is invalid.', |
|||
'in_array' => 'The :attribute field does not exist in :other.', |
|||
'integer' => 'The :attribute must be an integer.', |
|||
'ip' => 'The :attribute must be a valid IP address.', |
|||
'ipv4' => 'The :attribute must be a valid IPv4 address.', |
|||
'ipv6' => 'The :attribute must be a valid IPv6 address.', |
|||
'json' => 'The :attribute must be a valid JSON string.', |
|||
'lt' => [ |
|||
'array' => 'The :attribute must have less than :value items.', |
|||
'file' => 'The :attribute must be less than :value kilobytes.', |
|||
'numeric' => 'The :attribute must be less than :value.', |
|||
'string' => 'The :attribute must be less than :value characters.', |
|||
], |
|||
'lte' => [ |
|||
'array' => 'The :attribute must not have more than :value items.', |
|||
'file' => 'The :attribute must be less than or equal to :value kilobytes.', |
|||
'numeric' => 'The :attribute must be less than or equal to :value.', |
|||
'string' => 'The :attribute must be less than or equal to :value characters.', |
|||
], |
|||
'mac_address' => 'The :attribute must be a valid MAC address.', |
|||
'max' => [ |
|||
'array' => 'The :attribute must not have more than :max items.', |
|||
'file' => 'The :attribute must not be greater than :max kilobytes.', |
|||
'numeric' => 'The :attribute must not be greater than :max.', |
|||
'string' => 'The :attribute must not be greater than :max characters.', |
|||
], |
|||
'mimes' => 'The :attribute must be a file of type: :values.', |
|||
'mimetypes' => 'The :attribute must be a file of type: :values.', |
|||
'min' => [ |
|||
'array' => 'The :attribute must have at least :min items.', |
|||
'file' => 'The :attribute must be at least :min kilobytes.', |
|||
'numeric' => 'The :attribute must be at least :min.', |
|||
'string' => 'The :attribute must be at least :min characters.', |
|||
], |
|||
'multiple_of' => 'The :attribute must be a multiple of :value.', |
|||
'not_in' => 'The selected :attribute is invalid.', |
|||
'not_regex' => 'The :attribute format is invalid.', |
|||
'numeric' => 'The :attribute must be a number.', |
|||
'password' => [ |
|||
'letters' => 'The :attribute must contain at least one letter.', |
|||
'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.', |
|||
'numbers' => 'The :attribute must contain at least one number.', |
|||
'symbols' => 'The :attribute must contain at least one symbol.', |
|||
'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', |
|||
], |
|||
'present' => 'The :attribute field must be present.', |
|||
'prohibited' => 'The :attribute field is prohibited.', |
|||
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', |
|||
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', |
|||
'prohibits' => 'The :attribute field prohibits :other from being present.', |
|||
'regex' => 'The :attribute format is invalid.', |
|||
'required' => 'The :attribute field is required.', |
|||
'required_array_keys' => 'The :attribute field must contain entries for: :values.', |
|||
'required_if' => 'The :attribute field is required when :other is :value.', |
|||
'required_unless' => 'The :attribute field is required unless :other is in :values.', |
|||
'required_with' => 'The :attribute field is required when :values is present.', |
|||
'required_with_all' => 'The :attribute field is required when :values are present.', |
|||
'required_without' => 'The :attribute field is required when :values is not present.', |
|||
'required_without_all' => 'The :attribute field is required when none of :values are present.', |
|||
'same' => 'The :attribute and :other must match.', |
|||
'size' => [ |
|||
'array' => 'The :attribute must contain :size items.', |
|||
'file' => 'The :attribute must be :size kilobytes.', |
|||
'numeric' => 'The :attribute must be :size.', |
|||
'string' => 'The :attribute must be :size characters.', |
|||
], |
|||
'starts_with' => 'The :attribute must start with one of the following: :values.', |
|||
'string' => 'The :attribute must be a string.', |
|||
'timezone' => 'The :attribute must be a valid timezone.', |
|||
'unique' => 'The :attribute has already been taken.', |
|||
'uploaded' => 'The :attribute failed to upload.', |
|||
'url' => 'The :attribute must be a valid URL.', |
|||
'uuid' => 'The :attribute must be a valid UUID.', |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Custom Validation Language Lines |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Here you may specify custom validation messages for attributes using the |
|||
| convention "attribute.rule" to name the lines. This makes it quick to |
|||
| specify a specific custom language line for a given attribute rule. |
|||
| |
|||
*/ |
|||
|
|||
'custom' => [ |
|||
'attribute-name' => [ |
|||
'rule-name' => 'custom-message', |
|||
], |
|||
], |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Custom Validation Attributes |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| The following language lines are used to swap our attribute placeholder |
|||
| with something more reader friendly such as "E-Mail Address" instead |
|||
| of "email". This simply helps us make our message more expressive. |
|||
| |
|||
*/ |
|||
|
|||
'attributes' => [], |
|||
|
|||
]; |
|||
@ -0,0 +1,229 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'scaffold' => [ |
|||
'header' => '代码生成器', |
|||
'choose' => '选择已有数据表', |
|||
'table' => '表名', |
|||
'model' => '模型', |
|||
'controller' => '控制器', |
|||
'repository' => '数据仓库', |
|||
'add_field' => '添加字段', |
|||
'pk' => '主键', |
|||
'soft_delete' => '软删除', |
|||
'create_migration' => '创建表迁移文件', |
|||
'create_model' => '创建模型', |
|||
'create_repository' => '创建数据仓库', |
|||
'create_controller' => '创建控制器', |
|||
'run_migrate' => '创建数据表', |
|||
'create_lang' => '创建翻译文件', |
|||
'field' => '字段', |
|||
'translation' => '翻译', |
|||
'comment' => '注释', |
|||
'default' => '默认值', |
|||
'field_name' => '字段名', |
|||
'type' => '类型', |
|||
'nullable' => '允许空值', |
|||
'key' => '索引', |
|||
'translate_title' => '翻译标题', |
|||
'sync_translation_with_comment' => '同步翻译与注释', |
|||
], |
|||
'client' => [ |
|||
'delete_confirm' => '确认删除?', |
|||
'confirm' => '确认', |
|||
'cancel' => '取消', |
|||
'refresh_succeeded' => '刷新成功 !', |
|||
'submit' => '提交', |
|||
'close' => '关闭', |
|||
'selected_options' => '已选中:num个选项', |
|||
'exceed_max_item' => '已超出最大可选数量', |
|||
'no_preview' => '预览失败', |
|||
|
|||
'500' => '系统繁忙,请稍后再试!', |
|||
'403' => '对不起,您没有权限访问,请与管理员联系。', |
|||
'401' => '请登录!', |
|||
'419' => '对不起,当前页面已失效,请刷新浏览器。', |
|||
], |
|||
'home' => '主页', |
|||
'online' => '在线', |
|||
'login' => '登录', |
|||
'logout' => '登出', |
|||
'setting' => '设置', |
|||
'name' => '名称', |
|||
'username' => '用户名', |
|||
'old_password' => '旧密码', |
|||
'password' => '密码', |
|||
'password_confirmation' => '确认密码', |
|||
'old_password_error' => '请输入正确的旧密码', |
|||
'remember_me' => '记住我', |
|||
'user_setting' => '用户设置', |
|||
'avatar' => '头像', |
|||
'list' => '列表', |
|||
'new' => '新增', |
|||
'create' => '创建', |
|||
'delete' => '删除', |
|||
'remove' => '移除', |
|||
'edit' => '编辑', |
|||
'quick_edit' => '快捷编辑', |
|||
'continue_editing' => '继续编辑', |
|||
'continue_creating' => '继续创建', |
|||
'view' => '查看', |
|||
'detail' => '详细', |
|||
'browse' => '浏览', |
|||
'reset' => '重置', |
|||
'export' => '导出', |
|||
'batch_delete' => '批量删除', |
|||
'save' => '保存', |
|||
'refresh' => '刷新', |
|||
'order' => '排序', |
|||
'expand' => '展开', |
|||
'collapse' => '收起', |
|||
'filter' => '筛选', |
|||
'search' => '搜索', |
|||
'close' => '关闭', |
|||
'show' => '显示', |
|||
'entries' => '条', |
|||
'captcha' => '验证码', |
|||
'action' => '操作', |
|||
'title' => '标题', |
|||
'description' => '简介', |
|||
'back' => '返回', |
|||
'back_to_list' => '返回列表', |
|||
'submit' => '提交', |
|||
'menu' => '菜单', |
|||
'input' => '输入', |
|||
'succeeded' => '成功', |
|||
'failed' => '失败', |
|||
'delete_confirm' => '确认删除?', |
|||
'delete_succeeded' => '删除成功 !', |
|||
'delete_failed' => '删除失败 !', |
|||
'update_succeeded' => '更新成功 !', |
|||
'update_failed' => '更新失败 !', |
|||
'save_succeeded' => '保存成功 !', |
|||
'save_failed' => '保存失败 !', |
|||
'refresh_succeeded' => '刷新成功 !', |
|||
'login_successful' => '登录成功 !', |
|||
'choose' => '选择', |
|||
'choose_file' => '选择文件', |
|||
'choose_image' => '选择图片', |
|||
'more' => '更多', |
|||
'deny' => '无权访问', |
|||
'administrator' => '管理员', |
|||
'roles' => '角色', |
|||
'permissions' => '权限', |
|||
'slug' => '标识', |
|||
'created_at' => '创建时间', |
|||
'updated_at' => '更新时间', |
|||
'alert' => '注意', |
|||
'parent_id' => '父级', |
|||
'icon' => '图标', |
|||
'uri' => '路径', |
|||
'operation_log' => '操作日志', |
|||
'parent_select_error' => '父级选择错误', |
|||
'default' => '默认', |
|||
'table' => '表格', |
|||
'no_data' => '暂无数据', |
|||
'routes' => '路由', |
|||
'alias' => '别名', |
|||
'route_action' => '处理器', |
|||
'middleware' => '中间件', |
|||
'import' => '导入', |
|||
'is_not_import' => '未导入', |
|||
'selected_options' => '已选中:num个选项', |
|||
'method' => '方法', |
|||
'user' => '用户', |
|||
'pagination' => [ |
|||
'range' => '从 :first 到 :last ,总共 :total 条', |
|||
], |
|||
'role' => '角色', |
|||
'permission' => '权限', |
|||
'route' => '路由', |
|||
'confirm' => '确认', |
|||
'cancel' => '取消', |
|||
'selectall' => '全选', |
|||
'http' => [ |
|||
'method' => 'HTTP方法', |
|||
'path' => 'HTTP路径', |
|||
], |
|||
'all_methods_if_empty' => '为空默认为所有方法', |
|||
'all' => '全部', |
|||
'current_page' => '当前页', |
|||
'selected_rows' => '选择的行', |
|||
'upload' => '上传', |
|||
'new_folder' => '新建文件夹', |
|||
'time' => '时间', |
|||
'size' => '大小', |
|||
'between_start' => '起始', |
|||
'between_end' => '结束', |
|||
'next_page' => '下一页', |
|||
'prev_page' => '上一页', |
|||
'next_step' => '下一步', |
|||
'prev_step' => '上一步', |
|||
'done' => '完成', |
|||
'listbox' => [ |
|||
'text_total' => '总共 {0} 项', |
|||
'text_empty' => '空列表', |
|||
'filtered' => '{0} / {1}', |
|||
'filter_clear' => '显示全部', |
|||
'filter_placeholder' => '过滤', |
|||
], |
|||
'responsive' => [ |
|||
'display_all' => '显示全部', |
|||
'display' => '字段', |
|||
'focus' => '聚焦', |
|||
], |
|||
'uploader' => [ |
|||
'add_new_media' => '添加文件', |
|||
'drag_file' => '或将文件拖到这里', |
|||
'max_file_limit' => 'The :attribute may not be greater than :max.', |
|||
'exceed_size' => '文件大小超出', |
|||
'interrupt' => '上传暂停', |
|||
'upload_failed' => '上传失败,请重试', |
|||
'selected_files' => '选中:num个文件,共:size。', |
|||
'selected_has_failed' => '已成功上传:success个文件,:fail个文件上传失败,<a class="retry" href="javascript:"";">重新上传</a>失败文件或<a class="ignore" href="javascript:"";">忽略</a>', |
|||
'selected_success' => '共:num个(:size),已上传:success个。', |
|||
'dot' => ',', |
|||
'failed_num' => '失败:fail个。', |
|||
'pause_upload' => '暂停上传', |
|||
'go_on_upload' => '继续上传', |
|||
'start_upload' => '开始上传', |
|||
'upload_success_message' => '已成功上传:success个文件', |
|||
'go_on_add' => '继续添加', |
|||
'Q_TYPE_DENIED' => '对不起,不允许上传此类型文件', |
|||
'Q_EXCEED_NUM_LIMIT' => '对不起,已超出文件上传数量限制,最多只能上传:num个文件', |
|||
'F_EXCEED_SIZE' => '对不起,当前选择的文件过大', |
|||
'Q_EXCEED_SIZE_LIMIT' => '对不起,已超出文件大小限制', |
|||
'F_DUPLICATE' => '文件重复', |
|||
'confirm_delete_file' => '您确定要删除这个文件吗?', |
|||
'dimensions' => '图片规格不正确', |
|||
], |
|||
'import_extension_confirm' => '确认导入拓展?', |
|||
'quick_create' => '快速创建', |
|||
'grid_items_selected' => '已选择 {n} 项', |
|||
'nothing_updated' => '没有任何数据被更改', |
|||
'welcome_back' => '欢迎回来,请登录您的账号。', |
|||
'documentation' => '文档', |
|||
'demo' => '示例', |
|||
'extensions' => '扩展', |
|||
'version' => '版本', |
|||
'current_version' => '当前版本', |
|||
'latest_version' => '最新版本', |
|||
'upgrade_to_version' => '更新至版本 :version', |
|||
'enable' => '启用', |
|||
'disable' => '禁用', |
|||
'uninstall' => '卸载', |
|||
'confirm_uninstall' => '您确定要卸载当前扩展吗?此操作将会移除扩展数据!', |
|||
'marketplace' => '应用市场', |
|||
'theme' => '主题', |
|||
'application' => '应用', |
|||
'install_from_local' => '本地安装', |
|||
'install_succeeded' => '安装成功', |
|||
'invalid_extension_package' => '安装包异常', |
|||
'copied' => '已复制', |
|||
'auth_failed' => '账号或密码错误', |
|||
'validation' => [ |
|||
'match' => '与 :attribute 不匹配。', |
|||
'minlength' => ':attribute 字符长度不能少于 :min。', |
|||
'maxlength' => ':attribute 字符长度不能超出 :max。', |
|||
], |
|||
]; |
|||
@ -0,0 +1,22 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'labels' => [ |
|||
'Extensions' => '扩展', |
|||
], |
|||
'fields' => [ |
|||
'alias' => '别名', |
|||
'description' => '描述', |
|||
'authors' => '开发者', |
|||
'homepage' => '主页', |
|||
'require' => '依赖', |
|||
'require_dev' => '开发环境依赖', |
|||
'name' => '包名', |
|||
'version' => '版本', |
|||
'enable' => '启用', |
|||
'config' => '配置', |
|||
'imported' => '导入', |
|||
], |
|||
'options' => [ |
|||
], |
|||
]; |
|||
@ -0,0 +1,37 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'fields' => [ |
|||
'id' => 'ID', |
|||
'name' => '名称', |
|||
'username' => '用户名', |
|||
'email' => '邮箱', |
|||
'http_path' => 'HTTP路径', |
|||
'password' => '密码', |
|||
'password_confirmation' => '确认密码', |
|||
'created_at' => '创建时间', |
|||
'updated_at' => '更新时间', |
|||
'permissions' => '权限', |
|||
'slug' => '标识', |
|||
'user' => '用户', |
|||
'order' => '排序', |
|||
'ip' => 'IP', |
|||
'method' => '方法', |
|||
'uri' => 'URI', |
|||
'roles' => '角色', |
|||
'path' => '路径', |
|||
'input' => '输入', |
|||
'type' => '类型', |
|||
], |
|||
'labels' => [ |
|||
'list' => '列表', |
|||
'edit' => '编辑', |
|||
'detail' => '详细', |
|||
'create' => '创建', |
|||
'root' => '顶级', |
|||
'scaffold' => '代码生成器', |
|||
], |
|||
'options' => [ |
|||
// |
|||
], |
|||
]; |
|||
@ -0,0 +1,17 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'titles' => [ |
|||
'index' => '主页', |
|||
'admin' => '系统', |
|||
'users' => '管理员', |
|||
'roles' => '角色', |
|||
'permission' => '权限', |
|||
'menu' => '菜单', |
|||
'operation_log' => '操作日志', |
|||
'helpers' => '开发工具', |
|||
'extensions' => '扩展', |
|||
'scaffold' => '代码生成器', |
|||
'icons' => '图标', |
|||
], |
|||
]; |
|||
@ -0,0 +1,229 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'scaffold' => [ |
|||
'header' => '代碼生成器', |
|||
'choose' => '選擇已有數據表', |
|||
'table' => '表名', |
|||
'model' => '模型', |
|||
'controller' => '控制器', |
|||
'repository' => '數據倉庫', |
|||
'add_field' => '添加欄位', |
|||
'pk' => '主鍵', |
|||
'soft_delete' => '軟刪除', |
|||
'create_migration' => '創建表遷移文件', |
|||
'create_model' => '創建模型', |
|||
'create_repository' => '創建數據倉庫', |
|||
'create_controller' => '創建控制器', |
|||
'run_migrate' => '創建數據表', |
|||
'create_lang' => '創建翻譯文件', |
|||
'field' => '欄位', |
|||
'translation' => '翻譯', |
|||
'comment' => '註解', |
|||
'default' => '預設值', |
|||
'field_name' => '欄位名', |
|||
'type' => '類型', |
|||
'nullable' => '允許null', |
|||
'key' => '索引', |
|||
'translate_title' => '翻譯標題', |
|||
'sync_translation_with_comment' => '同步翻譯與註釋', |
|||
], |
|||
'client' => [ |
|||
'delete_confirm' => '確認刪除?', |
|||
'confirm' => '確認', |
|||
'cancel' => '取消', |
|||
'refresh_succeeded' => '刷新成功!', |
|||
'close' => '關閉', |
|||
'submit' => '提交', |
|||
'selected_options' => '已選中:num個選項', |
|||
'exceed_max_item' => '已超出最大可選數量', |
|||
'no_preview' => '預覽失敗', |
|||
|
|||
'500' => '系統繁忙,請稍後再試!', |
|||
'403' => '對不起,您無訪問權限,請聯繫管理員。', |
|||
'401' => '請先登入!', |
|||
'419' => '對不起,當前頁面已失效,請刷新瀏覽器。', |
|||
], |
|||
'home' => '首頁', |
|||
'online' => '在線', |
|||
'login' => '登入', |
|||
'logout' => '登出', |
|||
'setting' => '設置', |
|||
'name' => '名稱', |
|||
'username' => '用戶名', |
|||
'old_password' => '舊密碼', |
|||
'password' => '密碼', |
|||
'password_confirmation' => '確認密碼', |
|||
'old_password_error' => '舊密碼輸入錯誤', |
|||
'remember_me' => '記住我', |
|||
'user_setting' => '用戶設置', |
|||
'avatar' => '頭像', |
|||
'list' => '列表', |
|||
'new' => '新增', |
|||
'create' => '創建', |
|||
'delete' => '刪除', |
|||
'remove' => '移除', |
|||
'edit' => '編輯', |
|||
'quick_edit' => '快速編輯', |
|||
'continue_editing' => '繼續編輯', |
|||
'continue_creating' => '繼續新增', |
|||
'view' => '查看', |
|||
'detail' => '詳細', |
|||
'browse' => '瀏覽', |
|||
'reset' => '重置', |
|||
'export' => '匯出', |
|||
'batch_delete' => '批次刪除', |
|||
'save' => '儲存', |
|||
'refresh' => '重新整理', |
|||
'order' => '排序', |
|||
'expand' => '展開', |
|||
'collapse' => '收起', |
|||
'filter' => '篩選', |
|||
'search' => '搜索', |
|||
'close' => '關閉', |
|||
'show' => '詳情', |
|||
'entries' => '條', |
|||
'captcha' => '驗證碼', |
|||
'action' => '操作', |
|||
'title' => '標題', |
|||
'description' => '簡介', |
|||
'back' => '返回', |
|||
'back_to_list' => '返回列表', |
|||
'submit' => '送出', |
|||
'menu' => '目錄', |
|||
'input' => '輸入', |
|||
'succeeded' => '成功', |
|||
'failed' => '失敗', |
|||
'delete_confirm' => '確認刪除?', |
|||
'delete_succeeded' => '刪除成功!', |
|||
'delete_failed' => '刪除失敗!', |
|||
'update_succeeded' => '更新成功!', |
|||
'update_failed' => '更新失敗 !', |
|||
'save_succeeded' => '儲存成功!', |
|||
'save_failed' => '儲存失敗 !', |
|||
'refresh_succeeded' => '刷新成功!', |
|||
'login_successful' => '登入成功!', |
|||
'choose' => '選擇', |
|||
'choose_file' => '選擇檔案', |
|||
'choose_image' => '選擇圖片', |
|||
'more' => '更多', |
|||
'deny' => '權限不足', |
|||
'administrator' => '管理員', |
|||
'roles' => '角色', |
|||
'permissions' => '權限', |
|||
'slug' => '標誌', |
|||
'created_at' => '建立時間', |
|||
'updated_at' => '更新時間', |
|||
'alert' => '警告', |
|||
'parent_id' => '父級', |
|||
'icon' => '圖示', |
|||
'uri' => '路徑', |
|||
'operation_log' => '操作記錄', |
|||
'parent_select_error' => '父級選擇錯誤', |
|||
'default' => '預設', |
|||
'table' => '表格', |
|||
'no_data' => '暫無數據', |
|||
'routes' => '路由', |
|||
'alias' => '別名', |
|||
'route_action' => '處理器', |
|||
'middleware' => '中間件', |
|||
'import' => '導入', |
|||
'is_not_import' => '未導入', |
|||
'selected_options' => '已選中:num個選項', |
|||
'method' => '方法', |
|||
'user' => '用戶', |
|||
'pagination' => [ |
|||
'range' => '從 :first 到 :last ,總共 :total 條', |
|||
], |
|||
'role' => '角色', |
|||
'permission' => '權限', |
|||
'route' => '路由', |
|||
'confirm' => '確認', |
|||
'cancel' => '取消', |
|||
'selectall' => '全選', |
|||
'http' => [ |
|||
'method' => 'HTTP方法', |
|||
'path' => 'HTTP路徑', |
|||
], |
|||
'all_methods_if_empty' => '所有方法預設為空', |
|||
'all' => '全部', |
|||
'current_page' => '現在頁面', |
|||
'selected_rows' => '選擇的行', |
|||
'upload' => '上傳', |
|||
'new_folder' => '新建資料夾', |
|||
'time' => '時間', |
|||
'size' => '大小', |
|||
'between_start' => '起始', |
|||
'between_end' => '結束', |
|||
'next_page' => '下一頁', |
|||
'prev_page' => '上一頁', |
|||
'next_step' => '下一步', |
|||
'prev_step' => '上一步', |
|||
'done' => '完成', |
|||
'listbox' => [ |
|||
'text_total' => '總共 {0} 項', |
|||
'text_empty' => '空列表', |
|||
'filtered' => '{0} / {1}', |
|||
'filter_clear' => '顯示全部', |
|||
'filter_placeholder' => '過濾', |
|||
], |
|||
'responsive' => [ |
|||
'display_all' => '顯示全部', |
|||
'display' => '欄位', |
|||
'focus' => '聚焦', |
|||
], |
|||
'uploader' => [ |
|||
'add_new_media' => '添加檔案', |
|||
'drag_file' => '或將檔案拖移到這裡', |
|||
'max_file_limit' => ':attribute不能超過:max.', |
|||
'exceed_size' => '檔案大小過大', |
|||
'interrupt' => '暫停上傳', |
|||
'upload_failed' => '上傳失敗,請再試一次', |
|||
'selected_files' => '選中:num個檔案,共:size。', |
|||
'selected_has_failed' => '已成功上傳:success個檔案,:fail個檔案上傳失敗,<a class="retry" href="javascript:"";">重新上傳</a>失敗檔案或<a class="ignore" href="javascript:"";">忽略</a>', |
|||
'selected_success' => '共:num个(:size),已上傳:success個。', |
|||
'dot' => ',', |
|||
'failed_num' => '失敗:fail個。', |
|||
'pause_upload' => '暫停上傳', |
|||
'go_on_upload' => '繼續上傳', |
|||
'start_upload' => '開始上傳', |
|||
'upload_success_message' => '已成功上傳:success個檔案', |
|||
'go_on_add' => '繼續添加', |
|||
'Q_TYPE_DENIED' => '對不起,無法上傳該類型檔案', |
|||
'Q_EXCEED_NUM_LIMIT' => '对不起,超出上傳數量限制,最多只能上傳:num個檔案', |
|||
'F_EXCEED_SIZE' => '对不起,當前選擇的檔案過大', |
|||
'Q_EXCEED_SIZE_LIMIT' => '对不起,檔案大小超出限制', |
|||
'F_DUPLICATE' => '檔案重複', |
|||
'confirm_delete_file' => '您確定要刪除該檔案嗎?', |
|||
'dimensions' => '圖片規格不正確', |
|||
], |
|||
'import_extension_confirm' => '確認導入擴展?', |
|||
'quick_create' => '快速新增', |
|||
'grid_items_selected' => '已選擇 {n} 項', |
|||
'nothing_updated' => '沒有任何資料被更改', |
|||
'welcome_back' => '歡迎回來,請登入帳號', |
|||
'documentation' => '文檔', |
|||
'demo' => '範例', |
|||
'extensions' => '擴展', |
|||
'version' => '版本', |
|||
'current_version' => '当前版本', |
|||
'latest_version' => '當前版本', |
|||
'upgrade_to_version' => '更新至版本 :version', |
|||
'enable' => '啟用', |
|||
'disable' => '禁用', |
|||
'uninstall' => '卸載', |
|||
'confirm_uninstall' => '您確定要卸載當前擴展嗎?此操作將會移除擴展數據!', |
|||
'marketplace' => '應用市場', |
|||
'theme' => '主題', |
|||
'application' => '應用', |
|||
'install_from_local' => '本地安装', |
|||
'install_succeeded' => '本地安裝', |
|||
'invalid_extension_package' => '安裝包異常', |
|||
'copied' => '已複製', |
|||
'auth_failed' => '帳號或密碼錯誤', |
|||
'validation' => [ |
|||
'match' => '與 :attribute 不匹配。', |
|||
'minlength' => ':attribute 長度不能少於 :min。', |
|||
'maxlength' => ':attribute 長度不能超過 :max。', |
|||
], |
|||
]; |
|||
@ -0,0 +1,22 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'labels' => [ |
|||
'Extensions' => '擴展', |
|||
], |
|||
'fields' => [ |
|||
'alias' => '別名', |
|||
'description' => '說明', |
|||
'authors' => '作者', |
|||
'homepage' => '首頁', |
|||
'require' => '依賴', |
|||
'require_dev' => '開發環境依賴', |
|||
'name' => '名稱', |
|||
'version' => '版本', |
|||
'enable' => '啟用', |
|||
'config' => '設定', |
|||
'imported' => '導入', |
|||
], |
|||
'options' => [ |
|||
], |
|||
]; |
|||
@ -0,0 +1,41 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'fields' => [ |
|||
'id' => 'ID', |
|||
'name' => '名稱', |
|||
'username' => '用戶名', |
|||
'email' => '信箱', |
|||
'http_path' => 'HTTP路徑', |
|||
'password' => '密碼', |
|||
'password_confirmation' => '確認密碼', |
|||
'created_at' => '建立時間', |
|||
'updated_at' => '更新時間', |
|||
'permissions' => '權限', |
|||
'slug' => '標示', |
|||
'user' => '用戶', |
|||
'order' => '排序', |
|||
'ip' => 'IP', |
|||
'method' => '方法', |
|||
'uri' => 'URI', |
|||
'roles' => '角色', |
|||
'path' => '路徑', |
|||
'input' => '輸入', |
|||
'type' => '类型', |
|||
], |
|||
'labels' => [ |
|||
'list' => '列表', |
|||
'edit' => '編輯', |
|||
'detail' => '詳細', |
|||
'create' => '創建', |
|||
'root' => 'root', |
|||
'scaffold' => '代碼生成器', |
|||
], |
|||
|
|||
'options' => [ |
|||
'permissions' => [ |
|||
|
|||
], |
|||
], |
|||
|
|||
]; |
|||
@ -0,0 +1,17 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
'titles' => [ |
|||
'index' => '首頁', |
|||
'admin' => '系統', |
|||
'users' => '管理員', |
|||
'roles' => '角色', |
|||
'permission' => '權限', |
|||
'menu' => '菜單', |
|||
'operation_log' => '操作日誌', |
|||
'helpers' => '開發工具', |
|||
'extensions' => '擴展', |
|||
'scaffold' => '代碼生成器', |
|||
'icons' => '圖示', |
|||
], |
|||
]; |
|||
@ -0,0 +1,14 @@ |
|||
{ |
|||
"private": true, |
|||
"scripts": { |
|||
"dev": "vite", |
|||
"build": "vite build" |
|||
}, |
|||
"devDependencies": { |
|||
"axios": "^0.27", |
|||
"laravel-vite-plugin": "^0.5.0", |
|||
"lodash": "^4.17.19", |
|||
"postcss": "^8.1.14", |
|||
"vite": "^3.0.0" |
|||
} |
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd" |
|||
bootstrap="vendor/autoload.php" |
|||
colors="true" |
|||
> |
|||
<testsuites> |
|||
<testsuite name="Unit"> |
|||
<directory suffix="Test.php">./tests/Unit</directory> |
|||
</testsuite> |
|||
<testsuite name="Feature"> |
|||
<directory suffix="Test.php">./tests/Feature</directory> |
|||
</testsuite> |
|||
</testsuites> |
|||
<coverage processUncoveredFiles="true"> |
|||
<include> |
|||
<directory suffix=".php">./app</directory> |
|||
</include> |
|||
</coverage> |
|||
<php> |
|||
<env name="APP_ENV" value="testing"/> |
|||
<env name="BCRYPT_ROUNDS" value="4"/> |
|||
<env name="CACHE_DRIVER" value="array"/> |
|||
<!-- <env name="DB_CONNECTION" value="sqlite"/> --> |
|||
<!-- <env name="DB_DATABASE" value=":memory:"/> --> |
|||
<env name="MAIL_MAILER" value="array"/> |
|||
<env name="QUEUE_CONNECTION" value="sync"/> |
|||
<env name="SESSION_DRIVER" value="array"/> |
|||
<env name="TELESCOPE_ENABLED" value="false"/> |
|||
</php> |
|||
</phpunit> |
|||
@ -0,0 +1,21 @@ |
|||
<IfModule mod_rewrite.c> |
|||
<IfModule mod_negotiation.c> |
|||
Options -MultiViews -Indexes |
|||
</IfModule> |
|||
|
|||
RewriteEngine On |
|||
|
|||
# Handle Authorization Header |
|||
RewriteCond %{HTTP:Authorization} . |
|||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] |
|||
|
|||
# Redirect Trailing Slashes If Not A Folder... |
|||
RewriteCond %{REQUEST_FILENAME} !-d |
|||
RewriteCond %{REQUEST_URI} (.+)/$ |
|||
RewriteRule ^ %1 [L,R=301] |
|||
|
|||
# Send Requests To Front Controller... |
|||
RewriteCond %{REQUEST_FILENAME} !-d |
|||
RewriteCond %{REQUEST_FILENAME} !-f |
|||
RewriteRule ^ index.php [L] |
|||
</IfModule> |
|||
@ -0,0 +1,55 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Contracts\Http\Kernel; |
|||
use Illuminate\Http\Request; |
|||
|
|||
define('LARAVEL_START', microtime(true)); |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Check If The Application Is Under Maintenance |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| If the application is in maintenance / demo mode via the "down" command |
|||
| we will load this file so that any pre-rendered content can be shown |
|||
| instead of starting the framework, which could cause an exception. |
|||
| |
|||
*/ |
|||
|
|||
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) { |
|||
require $maintenance; |
|||
} |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Register The Auto Loader |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Composer provides a convenient, automatically generated class loader for |
|||
| this application. We just need to utilize it! We'll simply require it |
|||
| into the script here so we don't need to manually load our classes. |
|||
| |
|||
*/ |
|||
|
|||
require __DIR__.'/../vendor/autoload.php'; |
|||
|
|||
/* |
|||
|-------------------------------------------------------------------------- |
|||
| Run The Application |
|||
|-------------------------------------------------------------------------- |
|||
| |
|||
| Once we have the application, we can handle the incoming request using |
|||
| the application's HTTP kernel. Then, we will send the response back |
|||
| to this client's browser, allowing them to enjoy our application. |
|||
| |
|||
*/ |
|||
|
|||
$app = require_once __DIR__.'/../bootstrap/app.php'; |
|||
|
|||
$kernel = $app->make(Kernel::class); |
|||
|
|||
$response = $kernel->handle( |
|||
$request = Request::capture() |
|||
)->send(); |
|||
|
|||
$kernel->terminate($request, $response); |
|||
@ -0,0 +1,2 @@ |
|||
User-agent: * |
|||
Disallow: |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue