luissobrinho / builder
使用各种命令、服务、门面和模板,快速准备您的Laravel应用程序。
Requires
- php: >=7.3
- ext-json: *
- doctrine/dbal: ^2.10
- laravel/ui: ^2.0
- luissobrinho/lcrud: ^1.4
Requires (Dev)
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^1.3
- orchestra/testbench: ^5.2
- phpunit/phpunit: ^9.1
This package is auto-updated.
Last update: 2024-09-14 06:24:36 UTC
README
Builder - 一系列用于快速Laravel开发的工具
这是一个工具集,可以帮助您加快Laravel应用程序的开发速度。您可以使用预先编写的各种部分(用户、用户元数据、角色、团队)开始一个应用程序。它还包含一个功能强大的表单生成器,可以从表格和对象中生成表单内容。它可以快速生成CRUD原型,并提供完整的测试脚本,几乎不需要编辑。它还提供了一种优雅的密码学工具,对URL友好。最后,它还附带了一些LaravelCollective的供应商。
作者
一般要求
- PHP 7.3+
- OpenSSL
- JSON
兼容性和支持
安装
启动一个新的Laravel项目
laravel new {project_name}
或者
composer create-project laravel/laravel {project_name}
然后运行以下命令以添加Luissobrinho Builder
composer require "luissobrinho/builder"
是时候发布这些资产了!Luissobrinho Builder使用LCrud和LForm,它们具有可发布的资产。
php artisan vendor:publish
或者
php artisan vendor:publish --provider="Luissobrinho\LCrud\LCrudProvider"
现在您已安装了Luissobrinho Builder。尝试使用入门套件。
应用程序入门套件
!!!警告 "请确保您已遵循入门说明!"
Luissobrinho Builder通过为您的应用程序构建最基本的外观、控制器、模型和迁移,提供了一个优雅的解决方案来启动应用程序。现在您可以使用单个命令轻松地启动整个应用程序,无需使用php artisan make:auth
。
!!!提示 "但在我们这样做之前,让我们先做一些准备工作。"
为了使用入门套件,您需要修改一些文件。请查看以下修改
修改以下内容到您的app/Providers/RouteServiceProvider.php
文件中的const HOME
。
public const HOME = '/dashboard';
将以下内容添加到您的app/Http/Kernel.php
文件中的$routeMiddleware
数组中。
'admin' => \App\Http\Middleware\Admin::class,
'permissions' => \App\Http\Middleware\Permissions::class,
'roles' => \App\Http\Middleware\Roles::class,
'active' => \App\Http\Middleware\Active::class,
如果您不希望担心电子邮件激活,请从路由的中介数组中删除以下内容
'active'
将以下内容添加到 'app/Providers/AuthServiceProvider.php' 文件的 boot 方法中
Gate::define('admin', function ($user) { return ($user->roles->first()->name === 'admin'); }); Gate::define('team-member', function ($user, $team) { return ($user->teams->find($team->id)); });
将以下内容添加到 'app/Providers/EventServiceProvider.php' 文件的 $listen 属性中
\App\Events\UserRegisteredEmail::class => [ \App\Listeners\UserRegisteredEmailListener::class, ],
关于电子邮件激活
入门套件已将电子邮件激活组件添加到应用程序中,以确保您的用户已验证他们的电子邮件地址。您可以通过从 web
路由中删除 active
中介来禁用它。您还必须禁用通知,但如果您删除电子邮件激活,则不会造成任何问题。
您还需要设置密码重置电子邮件的位置。(在 config/auth.php 的底部)
'passwords' => [ 'users' => [ 'provider' => 'users', 'email' => 'emails.password', 'table' => 'password_resets', 'expire' => 60, 'throttle' => 60, ], ],
注意事项
您可以通过测试注册来快速开始,但请确保您的应用程序的电子邮件已配置,否则它将抛出异常。您可以在 .env
文件中轻松地将它临时设置为 'log'。
MAIL_DRIVER=log
最后一步
一旦添加了所有这些部分,您将想要运行入门命令!
php artisan luissobrinho:starter
然后您需要刷新项目中需要包含的所有类的列表。
composer dump-autoload
然后您需要迁移以添加用户、用户元数据、角色和团队表。运行种子设置应用程序的初始角色。
php artisan migrate --seed
一旦启动套件运行,您就可以注册并登录您的应用。然后您可以访问应用的设置部分,将您的角色设置为管理员以全面控制应用。
启动套件发布的内容
控制器
Luissobrinho Builder更新了基本控制器,以处理像用户注册时创建个人资料、设置默认返回路由到仪表板
等操作。它还提供了处理个人资料修改、页面、团队管理等控制器。管理员控制器处理用户管理,修改用户(如果用户具有管理员角色)。
- app/Http/Controllers/
- Admin/
- DashboardController.php
- UserController.php
- RoleController.php
- Auth/
- ActivateController.php
- ForgotPasswordController.php
- LoginController.php
- RegisterController.php
- ResetPasswordController.php
- User/
- PasswordController.php
- SettingsController.php
- PagesController.php
- TeamController.php
- Admin/
中间件
Luissobrinho Builder由于重定向更改而覆盖了默认中间件。它还提供了用于角色级别路由保护的Admin
中间件。
- app/Http/Middleware/
- Active.php
- Admin.php
- Permissions.php
- RedirectIfAuthenticated.php
- Roles.php
请求
提供了处理团队创建和所有组件更新的请求。在这里,我们集成所需的规则,以便运行验证并返回错误。(如果您使用Luissobrinho Builder FormMaker Facade,它甚至可以处理接受错误并突出显示适当的字段。)
- app/Http/Requests/
- PasswordUpdateRequest.php
- RoleCreateRequest.php
- TeamCreateRequest.php
- TeamUpdateRequest.php
- UserInviteRequest.php
- UserUpdateRequest.php
路由
鉴于添加了处理团队、个人资料、密码等的大量路由,所有路由都被启动套件覆盖。
- routes/web.php
配置
权限配置文件被发布,这是您设置角色
可以拥有的访问级别和权限类型的一种方法
- config/permissions.php
事件
各种操作的事件。
- app/Events/
- UserRegisteredEmail.php
监听器
各种操作的监听器。
- app/Listeners/
- UserRegisteredEmailListener.php
模型
模型很明显,但当我们然后集成服务,它处理所有业务逻辑等,调用模型时,我们实施SOLID实践,控制器、控制台或其他服务,它调用服务仅通过它访问模型。一旦这些已经集成,请确保您删除了User.php
模型文件,并确保您已遵循安装和配置说明。
- app/Models/
- UserMeta.php
- User.php
- Team.php
- Role.php
通知
这些都是我们需要在应用中发送给用户的电子邮件。它们很棒,因为它们利用了Laravel通知组件的强大功能。
- app/Notifications/
- ActivateUserEmail.php
- NewAccountEmail.php
- ResetPasswordEmail.php
服务
服务结构使我们能够将业务逻辑保持在外部模型和控制器中。这种方法最适合可能希望将来集成API或其他应用的程序。它还允许应用具有高度可测试的结构。
- app/Services/
- 特质/
- HasRoles.php
- HasTeams.php
- ActivateService.php
- RoleService.php
- TeamService.php
- UserService.php
- 特质/
数据库
请确保在安装后运行所有迁移和种子。这些种子设置了应用中可用的默认角色。
- database/factories/
- RoleFactory.php
- TeamFactory.php
- UserFactory.php
- UserMetaFactory.php
- database/migrations/
- 2015_11_30_191713_create_user_meta_table.php
- 2015_11_30_215038_create_roles_table.php
- 2015_11_30_215040_create_role_user_table.php
- 2015_12_04_155900_create_teams_table.php
- 2015_12_04_155900_create_teams_users_table.php
- database/seeds/
- DatabaseSeeder.php
- RolesTableSeeder.php
- UserTableSeeder.php
Views
视图尽可能少包含HTML,以执行逻辑操作。它们旨在尽可能基础,所有这些都可以进行修改。
- resources/views/
- admin/
- roles/
- edit.blade.php
- index.blade.php
- invite.blade.php
- users/
- edit.blade.php
- index.blade.php
- invite.blade.php
- dashboard.blade.php
- roles/
- auth/
- activate/
- email.blade.php
- token.blade.php
- passwords/
- email.blade.php
- reset.blade.php
- login.blade.php
- register.blade.php
- activate/
- errors/
- 401.blade.php
- 404.blade.php
- 503.blade.php
- partials/
- errors.blade.php
- message.blade.php
- status.blade.php
- team/
- create.blade.php
- edit.blade.php
- index.blade.php
- show.blade.php
- user/
- meta.blade.php
- password.blade.php
- settings.blade.php
- dashboard.blade.php
- admin/
Tests
Luissobrinho Builder starter kit提供了它自己各部分的单元测试基础。这提供了一些快速构建应用程序的测试的优秀例子。
- tests/
- Feature/
- TeamIntegrationTest.php
- Unit/
- UserServiceTest.php
- TeamServiceTest.php
- RoleServiceTest.php
- Feature/
设置之后
仪表板访问
通过访问/dashbord端点可以找到应用程序仪表板。默认管理员用户登录凭证为
- 邮箱:admin@example.com
- 密码:admin
用户
用户模型通过Luissobrinho Builder Starter Kit进行扩展。它添加了基本用户模型:角色、团队和用户元。关系如下
- 元数据:hasOne
- 角色:belongsToMany
- 团队:belongsToMany
它还提供了以下方法
meta() // The relationship method
roles() // The relationship method
hasRole(role_name) // checks if user has role
teams() // The relationship method
isTeamMember(team_id) // checks if user is member
isTeamAdmin(team_id) // checks if user is admin level member
中间件
管理员
Admin中间件作为在路由或控制器级别设置管理员级别权限的工具。
['middleware' => 'admin']
此简单路由添加将确保用户有权访问管理员级别,如果没有,则将其返回到来源位置。
激活
Active中间件检查账户是否通过访问激活url和通过电子邮件发送的token进行了激活。
['middleware' => 'active']
此简单路由添加将确保用户有一个激活的账户,如果没有,则将其重定向到/active页面,以便在必要时请求另一个激活token。
角色
Roles中间件允许您为路由设置自定义角色。
['middleware' => 'roles:admin|member']
权限
Permissions中间件允许您为路由设置自定义权限(角色的子集)
['middleware' => 'permissions:admin|somethingDescriptive']
您可以在config/permissions.php
中设置权限
Bootstrap UI
!!! 提示 "Bootstrap 版本 4"
如果您想选择Application starter kit,您还有为视图提供很好的启动选项。您可以通过快速构建应用程序并立即运行!
您可以使用LCrud为Laravel创建神奇的CRUD。
php artisan luissobrinho:bootstrap
!!! 提示 "这还将确保您的webpack文件已准备好运行"
Bootstrap 发布的内容
该命令将覆盖任何现有文件及其Bootstrap版本
- resources/views/
- user/
- meta.blade.php
- password.blade.php
- settings.blade.php
- admin/
- users/
- edit.blade.php
- index.blade.php
- invite.blade.php
- users/
- auth/
- login.blade.php
- password.blade.php
- register.blade.php
- reset.blade.php
- dashboard/
- main.blade.php
- panel.blade.php
- emails/
- new-user.blade.php
- password.blade.php
- errors/
- 404.blade.php
- 503.blade.php
- partials/
- errors.blade.php
- message.blade.php
- team/
- create.blade.php
- edit.blade.php
- index.blade.php
- show.blade.php
- user/
应用程序活动
在用户浏览您的网站或应用时,了解他们的行为有时会很有帮助。活动套件为您提供了跟踪用户及其所有行为的所需一切。中间件会为您完成大部分工作,但您也可以根据需要对其进行自定义。
设置
php artisan luissobrinho:activity
将以下内容添加到您的 config/app.php
中:
App\Providers\ActivityServiceProvider::class,
外观
为应用功能提供以下工具:
Activity::log($description); Activity::getByUser($userId);
辅助工具
activity($description) // will log the activity
应用功能
有时我们需要简单的方法来打开或关闭应用的部分功能,或者客户可能需要这样的功能。无论哪种情况,使用功能管理套件都可以解决这些问题。现在您或您的客户可以打开或关闭注册功能,或应用中的任何其他功能。只需利用 blade 或辅助组件,就可以完全控制您的应用。
设置
php artisan luissobrinho:features
您可能想将此行添加到您的导航中:
<li class="nav-item"><a class="nav-link" href="{!! url('admin/features') !!}"><span class="fa fa-cog"></span> Features</a></li>
将以下内容添加到您的 config/app.php
中:
App\Providers\FeatureServiceProvider::class,
将以下内容添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数:
require base_path('routes/features.php');
外观
为应用功能提供以下工具:
Features::isActive($key);
Blade
@feature($key) // code goes here @endfeature
辅助工具
feature($key) // will return true|false
发布的功能
该命令将覆盖任何现有文件,使用具有功能版本的文件
- app/Facades/Features.php
- app/Http/Controllers/Admin/FeatureController.php
- app/Http/Requests/FeatureCreateRequest.php
- app/Http/Requests/FeatureUpdateRequest.php
- app/Models/Feature.php
- app/Providers/FeatureServiceProvider.php
- app/Services/FeatureService.php
- database/migrations/2016_04_14_210036_create_features_table.php
- resources/views/admin/features/create.blade.php
- resources/views/admin/features/edit.blade.php
- resources/views/admin/features/index.blade.php
- routes/features.php
- tests/Feature/FeatureIntegrationTest.php
- tests/Unit/FeatureServiceTest.php
应用日志
日志工具简单地将应用日志视图添加到您的管理员面板。这可以在开发过程中或保持应用运行正常时提供帮助。
设置
php artisan luissobrinho:logs
您可能想将此行添加到您的导航中:
<li class="nav-item"><a href="{!! url('admin/logs') !!}"><span class="fa fa-line-chart"></span> Logs</a></li>
将以下内容添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数:
require base_path('routes/logs.php');
应用通知
Luissobrinho Builder 的通知将为用户和管理员构建基本的控制器、服务和视图,这样您就可以轻松地批量或特定地通知用户。
设置
php artisan luissobrinho:notifications
您可能想将此行添加到您的导航中:
<li><a href="{!! url('user/notifications') !!}"><span class="fa fa-envelope-o"></span> Notifications</a></li> <li><a href="{!! url('admin/notifications') !!}"><span class="fa fa-envelope-o"></span> Notifications</a></li>
将以下内容添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数:
require base_path('routes/notification.php');
外观
为应用通知提供以下工具
Notifications::notify($userId, $flag, $title, $details);
标志可以是任何 Bootstrap 提醒:默认、信息、成功、警告、危险
发布的通知
该命令将覆盖任何现有文件,使用具有通知版本的文件
- app/Facades/Notifications.php
- app/Http/Controllers/Admin/NotificationController.php
- app/Http/Controllers/User/NotificationController.php
- app/Http/Requests/NotificationRequest.php
- app/Models/Notification.php
- app/Services/NotificationService.php
- database/migrations/2016_04_14_180036_create_notifications_table.php
- resources/views/admin/notifications/create.blade.php
- resources/views/admin/notifications/edit.blade.php
- resources/views/admin/notifications/index.blade.php
- resources/views/notifications/index.blade.php
- resources/views/notifications/show.blade.php
- routes/notification.php
- tests/NotificationIntegrationTest.php
- tests/NotificationServiceTest.php
Forge 集成
FORGE 组件为您提供了在管理员面板中访问 FORGE API 的权限。您无需为每个调整登录 FORGE,现在只需登录您自己的应用,在管理员面板中调整调度器或服务器配置中的工作者。
要求
composer require themsaid/forge-sdk
设置
php artisan luissobrinho:forge
您可能想将此行添加到您的导航中:
<li class="nav-item"><a href="{{ url('admin/forge/settings') }}"><span class="fa fa-fw fa-server"></span> Forge Settings</a></li> <li class="nav-item"><a href="{{ url('admin/forge/scheduler') }}"><span class="fa fa-fw fa-calendar"></span> Forge Calendar</a></li> <li class="nav-item"><a href="{{ url('admin/forge/workers') }}"><span class="fa fa-fw fa-cogs"></span> Forge Workers</a></li>
将以下内容添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数:
您将看到类似这样的行: ->group(base_path('routes/web.php'));
您需要将其更改为类似以下的内容:
->group(function () { require base_path('routes/web.php'); require base_path('routes/forge.php'); }
将以下内容添加到 .env 文件:
FORGE_TOKEN= FORGE_SERVER_ID= FORGE_SITE_ID=
应用 API
如果您想选择使用 Laracogs 入门套件,您也可以轻松构建 API 层。运行 luissobrinho:api
命令将设置基本组件,但您也可以使用 API 工具作为 CRUD 的一部分,现在通过使用 --api
选项。
要求
composer require tymon/jwt-auth
设置
php artisan luissobrinho:api
基本上,您需要为 JWT 执行所有基本设置,例如这里的一切:然后按照以下地址的安装说明进行操作: https://github.com/tymondesigns/jwt-auth/wiki/Installation
将以下内容添加到 app/Providers/RouteServiceProvider.php
文件中的 mapWebRoutes(Router $router)
函数:
require base_path('routes/api.php');
在 app/Http/Kernal.php 下的 routeMiddleware 中添加以下内容:
'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class, 'jwt.refresh' => \Tymon\JWTAuth\Middleware\RefreshToken::class,
将 app/Http/Middleware/VerifyCsrfToken.php 添加到 except 属性(对于你添加的 CRUDs 也需要这样做)
'api/v1/login', 'api/v1/user/profile',
如果你使用 Apache,请将以下内容添加到 .htaccess 文件中
RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
同时更新你的 jwt 配置文件,并设置用户为
\App\Models\User::class
发布 API 的用户
该命令将覆盖现有文件,并使用 API 版本的文件
- app/Http/Controllers/Api/AuthController.php
- app/Http/Controllers/Api/UserController.php
- routes/api.php
应用队列
如果你已经配置了 redis 实例并通过它运行队列,Horizon 是非常出色的,但并非所有应用程序都需要这样做,也不必从这里开始。如果你有一个数据库驱动的队列,并正在寻找一个易于管理的组件来处理作业重试和取消,那么这将是你的应用程序的完美补充。
设置
php artisan luissobrinho:queue
将以下内容添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数:
require base_path('routes/queue.php');
您可能想将此行添加到您的导航中:
<li><a href="{!! url('admin/queue') !!}"><span class="fa fa-list"></span> Queue</a></li>
社交媒体登录
如果你想在应用程序中提供社交媒体登录并且想要一个简单的开始方式,那么无需再寻找其他方法。只需运行命令,按照以下步骤操作,你将获得 GitHub 登录。在查看代码库后,集成 Facebook 等其他社交媒体将变得非常简单。
要求
composer require laravel/socialite
设置
php artisan luissobrinho:socialite
下一步是使用 socialite 准备你的应用程序
在 app 配置文件下的 providers 中添加以下内容
Laravel\Socialite\SocialiteServiceProvider::class
在 app 配置文件下的 aliases 中添加以下内容
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
将 require base_path('routes/socialite.php');
添加到 app/Providers/RouteServiceProvider.php
文件中的 mapWebRoutes(Router $router)
函数
Route::middleware('web') ->namespace($this->namespace) ->group(function () { require base_path('routes/socialite.php'); require base_path('routes/web.php'); });
最后在 services 配置中设置访问详情
'github' => [ 'client_id' => 'id code', 'client_secret' => 'secret code', 'redirect' => 'http://your-domain/auth/github/callback', 'scopes' => ['user:email'], ],
审计
这个包可以帮助你了解 Eloquent 模型的变化,通过提供有关可能的不一致和异常的信息,这些异常可能表明业务问题或可疑活动。
要求
composer require owen-it/laravel-auditing
基本上,你想要为 Laravel 审计完成所有基本设置,例如这里的一切:然后按照以下说明进行安装:http://www.laravel-auditing.com/docs/9.0/installation
设置
php artisan luissobrinho:auditing
审计发布的内容
该命令将覆盖现有文件,并使用审计版本的文件
- resources/lcrud/Model.txt
- app/Listeners/AuditedListener.php
- app/Listeners/AuditingListener.php
Debugbar
这是一个用于集成 Laravel 调试条的包。您可以通过 Laravel 发布资产和配置它。即使调试条在 APP_DEBUG = false
时被禁用,也可以使用 Start 包放置的 "Dev" 权限启用它。
要求
composer require barryvdh/laravel-debugbar --dev
基本上,你想要为 Laravel Debugbar 完成所有基本设置,例如这里的一切:然后按照以下说明进行安装:https://github.com/barryvdh/laravel-debugbar
设置
php artisan luissobrinho:debugbar
在 Kernel.php 文件的 $ middlewareGroups 变量中的 web index 中插入 Middleware
protected $middlewareGroups = [ 'web' => [ // ... \App\Http\Middleware\DebugMiddleware::class ], 'api' => [ // ... ] ];
可选
通过在 .env 文件中将 APP_DEBUG
变量的值更改为 false 来禁用 Laravel 调试
APP_DEBUG=false
DebugBar 发布的内容
该命令将覆盖现有文件,并使用 debugbar 版本的文件
- app/Http/Middleware/DebugMiddleware.php
许可证
Luissobrinho Builder 是开源软件,许可协议为 MIT 许可协议
错误报告和功能请求
请在提交问题和功能请求时添加尽可能多的细节
免责声明
本软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适销性、特定用途和版权的。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是基于合同、侵权或其他方式,由本软件或其使用或其他交易引起的。