brilliant-portal / framework
BrilliantPortal 是一个有观点的 Laravel 预设。
Requires
- php: ^8.0
- illuminate/contracts: ^11.0
- laravel/framework: ^11.0
- laravel/jetstream: ^5.1
- laravel/telescope: ^5.1
- spatie/laravel-package-tools: ^1.16
- spatie/laravel-robots-middleware: ^1.4
- tartanlegrand/laravel-openapi: ^1.13
Requires (Dev)
- brianium/paratest: ^7.5
- larastan/larastan: ^2.9
- nunomaduro/collision: ^8.3
- orchestra/testbench: ^8.0 || ^9.2
- phpunit/phpunit: ^9.0 || ^10.0 || ^11.2
- dev-develop
- 3.0.1
- 3.0.0
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.0
- 1.18.0
- 1.17.1
- 1.17.0
- 1.16.1
- 1.16.0
- 1.15.0
- 1.14.1
- 1.14.0
- 1.13.0
- 1.12.3
- 1.12.2
- 1.12.1
- 1.12.0
- 1.11.0
- 1.10.1
- 1.10.0
- 1.9.0
- 1.8.0
- 1.7.1
- 1.7.0
- 1.6.0
- 1.5.0
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.0
- 0.2.0
- 0.1.0
- 0.0.1
- dev-master
This package is auto-updated.
Last update: 2024-09-08 02:07:49 UTC
README
[目录]
BrilliantPortal
BrilliantPortal 是一个有观点的 Laravel 预设。
它提供启动团队和用户模型,简化的团队管理以及基本的 API 端点。
默认情况下,Jetstream 假设每个用户都将有一个个人团队,并且可能被邀请加入其他团队。BrilliantPortal 框架去除了所有用户都将拥有个人团队的假设。更多信息请见 使用说明。
BrilliantPortal 框架还安装了它提供的功能的测试集。
PHP 支持矩阵
安装
通过 composer 使用自定义仓库安装此包。
- 安装应用
# Require the framework. composer require brilliant-portal/framework # Run installation steps. php artisan brilliant-portal:install # Available options: # --stack=livewire|inertia (default livewire) # --teams (default disabled) # --api (default disabled) # --with-airdrop=true (default enabled)
您可以使用以下命令发布配置文件:
php artisan vendor:publish --provider="BrilliantPortal\Framework\FrameworkServiceProvider" --tag="framework-config"
这是发布配置文件的内容
return [ 'api' => [ 'version' => env('BPORTAL_FRAMEWORK_API_VERSION', 'v1'), // API versioning. ], 'telescope' => [ 'prune' => [ 'hours' => env('TELESCOPE_PRUNE_HOURS', 48), // Prune entries older than this many hours. ], ], ];
更新
在更新 BrilliantPortal Payments 时,您可能希望运行 php artisan brilliant-portal-payments:install-tests
以将任何更新的测试安装到您的应用中。
定制
品牌
要定制品牌,请运行此命令并在您的应用程序中修改新文件
php artisan brilliant-portal:publish-branding
视图
要发布 BrilliantPortal 框架提供的所有视图,请运行此命令并在您的应用程序中修改新文件
php artisan vendor:publish --tag brilliant-portal-framework-views
BetterUptime
有关文档,请参阅 https://betteruptime-laravel.brilliantpackages.com
使用说明
权限
将 HasTeamPermission
中间件添加到需要特定权限的路由,该权限在您的 JetstreamServiceProvider
中定义。
# Routes file in your app. use BrilliantPortal\Framework\Http\Middleware\HasTeamPermission; Route::middleware(['auth:sanctum', HasTeamPermission::class.':create']) ->post(/* any endpoint where the user must have the `create` permission on their current team */);
团队
将 EnsureHasTeam
中间件添加到需要团队的任何路由。如果用户没有团队,他们将被重定向到提示他们创建团队的屏幕。
# Routes file in your app. use BrilliantPortal\Framework\Http\Middleware\EnsureHasTeam; Route::middleware(['auth:sanctum', EnsureHasTeam::class]) ->get('/team/settings/', function () { // });
创建新团队的截图
加入现有团队的提示截图
用户
管理员
BrilliantPortal 框架在 users
表和模型中添加了一个 is_super_admin
列。默认情况下,它设置为 false
。
超级管理员有权限在应用程序中做 任何事情,因此请谨慎使用这些权限。
可以使用 super-admin
能力在授权检查中确定用户是否为超级管理员
if (Auth::user()->can('super-admin')) { // User is super-admin. }
将 SuperAdmin
中间件添加到需要超级管理员访问的任何路由。如果用户不是超级管理员,他们将收到 403 Forbidden
响应。
# Routes file in your app. use BrilliantPortal\Framework\Http\Middleware\SuperAdmin; # Using class name Route::middleware(['auth:sanctum', SuperAdmin::class]) ->get('/admin/dashboard/', function () { // }); # Using ability Route::middleware(['auth:sanctum', 'can:super-admin']) ->get('/admin/dashboard/', function () { // });
密码
BrilliantPortal 框架设置了一些默认的密码复杂性要求。有关更多信息,请参阅 Laravel 文档。
- 生产环境:最小 8 个字符,大小写混合,不能存在于已知泄露中
- 非生产环境:最小 8 个字符
单个名称字段
可以使用 \BrilliantPortal\Framework\Traits\HasIndividualNameFields
特性在 User
模型上使用,以指示用户表有独立的 first_name
和 last_name
字段,而不是 Laravel 提供的标准 name
字段。
组件
默认提供了一些实用的组件
{{-- Headers --}} <x-brilliant-portal-framework::h1>I’m an h1</x-brilliant-portal-framework::h1> <x-brilliant-portal-framework::h2>I’m an h2</x-brilliant-portal-framework::h2> <x-brilliant-portal-framework::h3>I’m an h3</x-brilliant-portal-framework::h3> <x-brilliant-portal-framework::h4>I’m an h4</x-brilliant-portal-framework::h4> <x-brilliant-portal-framework::h5>I’m an h5</x-brilliant-portal-framework::h5> <x-brilliant-portal-framework::h6>I’m an h6</x-brilliant-portal-framework::h6> {{-- Buttons --}} <p class="mt-4"> <x-brilliant-portal-framework::button-link href="#">normal</x-brilliant-portal-framework::button-link> <x-brilliant-portal-framework::button-link-success href="#">success</x-brilliant-portal-framework::button-link-success> <x-brilliant-portal-framework::button-link-danger href="#">danger</x-brilliant-portal-framework::button-link-danger> <x-brilliant-portal-framework::button-link-disabled href="#">disabled</x-brilliant-portal-framework::button-link-danger> </p> {{-- Pills (Hardcoded) --}} <x-brilliant-portal-framework::pills.active>Active</x-brilliant-portal-framework::pills.active> <x-brilliant-portal-framework::pills.complete>Complete</x-brilliant-portal-framework::pills.complete> <x-brilliant-portal-framework::pills.inactive>Inactive</x-brilliant-portal-framework::pills.inactive> <x-brilliant-portal-framework::pills.on-hold>On Hold</x-brilliant-portal-framework::pills.on-hold> <x-brilliant-portal-framework::pills.pending>Pending</x-brilliant-portal-framework::pills.pending> {{-- Pills (Dynamic) --}} @php switch ($status) { case 'special': $pillSlug = 'something-else'; break; default: $pillSlug = $status; break; } $pillName = 'brilliant-portal-framework::pills.'.$pillSlug; @endphp <x-dynamic-component :component="$pillName"> {{ $status->label }} </x-dynamic-component>
// Pills (as a view). return view('brilliant-portal-framework::components.pills.active', ['slot' => $value]);
示例截图
要定制这些组件,请参阅 发布视图。
搜索引擎优化
本包使用 Spatie Laravel Robots Middleware 包 来验证 x-robots-tag
头信息。
要使用此功能,请将 \BrilliantPortal\Framework\Http\Middleware\RobotsMiddleware
类添加到您的应用的 bootstrap/app.php
文件中
->withMiddleware(function (Middleware $middleware) { - // + $middleware->append([ + RobotsMiddleware::class, + ]); })
您可以使用环境变量 SEARCH_ENGINES_SHOULD_INDEX
和/或 SEARCH_ENGINES_BLOCK_PATTERNS
来控制访问,或者将文件 vendor/brilliant-portal/framework/src/Http/Middleware/RobotsMiddleware.php
复制到您的应用中并进行逻辑修改。
SEARCH_ENGINES_SHOULD_INDEX=false # by default, is true only in production environment
SEARCH_ENGINES_BLOCK_PATTERNS="login,two-factor.*,admin.*" # comma-separated string of route names; wildcards are supported
API
管理端点
BrilliantPortal 框架提供用于管理团队和用户的管理端点。
详情请查看 /dashboard/api-documentation
。
管理端点需要超级管理员或以下明确权限(要使用这些权限,请将它们添加到应用的 app/Providers/JetstreamServiceProvider.php
中对应角色)
admin:create
admin:read
admin:update
admin:delete
通用端点
BrilliantPortal 框架提供用于管理应用中除团队和用户外的任何模型的通用端点。
详情请查看 /dashboard/api-documentation
。
这主要用于简单的 API 集成,不需要花费时间构建完整的端点和文档。URL 参数 type
指定了要使用的模型。
您应该为每个模型创建策略,并将它们添加到 app/Providers/AuthServiceProvider.php
文件中。
为了方便使用,您可以扩展 BrilliantPortal\Framework\Policies\BasePolicy.php
并使用 return $this->checkTeamOwnership($user, $model, $action);
。请参考 BrilliantPortal\Framework\User.php
中的示例。
创建新端点
您应该为每个模型创建策略,并将它们添加到 app/Providers/AuthServiceProvider.php
文件中。
为了方便使用,您可以扩展 BrilliantPortal\Framework\Policies\BasePolicy.php
并使用 return $this->checkTeamOwnership($user, $model, $action);
。请参考 BrilliantPortal\Framework\User.php
中的示例。
您可以将 BrilliantPortal\Framework\Http\Controllers\Api\Admin\User
复制过来,用作自定义 API 控制器的起点。这扩展了 BrilliantPortal\Framework\Http\Controllers\Api\Controller
,它提供了默认的授权策略。它还提供了示例 OpenAPI 路由注解。
请查看 brilliant-portal/framework/src/OpenApi
中的示例 OpenAPI 请求、响应和模式文件,以及 https://vyuldashev.github.io/laravel-openapi 中的文档。
您还可以使用或扩展 BrilliantPortal\Framework\Http\Resources\DataWrapCollection
来包装模型索引响应,以及 BrilliantPortal\Framework\Http\Resources\JsonResource
来处理单个模型响应。
测试
composer test
变更日志
请查看 CHANGELOG 了解最近的变化。
许可证
MIT 许可证 (MIT)。请查看 许可证文件 了解更多信息。