luissobrinho/builder

使用各种命令、服务、门面和模板,快速准备您的Laravel应用程序。

v0.0.11 2020-06-04 21:40 UTC

This package is auto-updated.

Last update: 2024-09-14 06:24:36 UTC


README

Builder - 一系列用于快速Laravel开发的工具

Latest Version Build Status Packagist license

这是一个工具集,可以帮助您加快Laravel应用程序的开发速度。您可以使用预先编写的各种部分(用户、用户元数据、角色、团队)开始一个应用程序。它还包含一个功能强大的表单生成器,可以从表格和对象中生成表单内容。它可以快速生成CRUD原型,并提供完整的测试脚本,几乎不需要编辑。它还提供了一种优雅的密码学工具,对URL友好。最后,它还附带了一些LaravelCollective的供应商。

作者

一般要求

  1. PHP 7.3+
  2. OpenSSL
  3. 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

中间件

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
    • auth/
      • activate/
        • email.blade.php
        • token.blade.php
      • passwords/
        • email.blade.php
        • reset.blade.php
      • login.blade.php
      • register.blade.php
    • 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

Tests

Luissobrinho Builder starter kit提供了它自己各部分的单元测试基础。这提供了一些快速构建应用程序的测试的优秀例子。

  • tests/
    • Feature/
      • TeamIntegrationTest.php
    • Unit/
      • UserServiceTest.php
      • TeamServiceTest.php
      • RoleServiceTest.php

设置之后

仪表板访问

通过访问/dashbord端点可以找到应用程序仪表板。默认管理员用户登录凭证为

用户

用户模型通过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
    • 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

应用程序活动

在用户浏览您的网站或应用时,了解他们的行为有时会很有帮助。活动套件为您提供了跟踪用户及其所有行为的所需一切。中间件会为您完成大部分工作,但您也可以根据需要对其进行自定义。

设置

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 许可协议

错误报告和功能请求

请在提交问题和功能请求时添加尽可能多的细节

免责声明

本软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适销性、特定用途和版权的。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是基于合同、侵权或其他方式,由本软件或其使用或其他交易引起的。