codificio / carpentree-core
Caprentree 框架的核心包
Requires
- algolia/algoliasearch-client-php: ^2.2
- astrotomic/laravel-translatable: ^11.9
- barryvdh/laravel-cors: ^0.11.2
- coderello/laravel-passport-social-grant: ^3.0
- doctrine/dbal: ^2.10
- illuminate/auth: ^6.0
- illuminate/container: ^6.0
- illuminate/contracts: ^6.0
- illuminate/database: ^6.0
- illuminate/http: ^6.0
- illuminate/notifications: ^6.0
- illuminate/support: ^6.0
- kalnoy/nestedset: ^5.0
- laravel/passport: ^9.3.2
- laravel/scout: ^8.6
- laravel/socialite: ^5.5
- laravel/tinker: ^1.0
- plank/laravel-mediable: ^4.3
- predis/predis: ^1.1
- spatie/laravel-permission: ^3.18
- teamtnt/laravel-scout-tntsearch-driver: ^8.3
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- sempro/phpunit-pretty-print: ^1.0
- dev-master
- 0.4.1
- 0.4.0
- 0.3.51
- 0.3.50
- 0.3.49
- 0.3.48
- v0.3.47
- v0.3.46
- v0.3.45
- v0.3.44
- v0.3.43
- v0.3.42
- v0.3.41
- v0.3.40
- v0.3.39
- v0.3.38
- v0.3.37
- v0.3.36.2
- v0.3.36.1
- v0.3.36
- v0.3.35
- v0.3.34
- v0.3.33
- v0.3.32.1
- v0.3.32
- v0.3.31
- v0.3.30
- v0.3.29
- v0.3.28
- v0.3.27.1
- v0.3.27
- v0.3.26
- v0.3.25
- v0.3.24.1
- v0.3.24
- v0.3.23
- v0.3.22.1
- v0.3.22
- v0.3.21
- v0.3.20
- v0.3.19.3
- v0.3.19.2
- v0.3.19.1
- v0.3.19
- v0.3.18
- v0.3.17
- v0.3.16
- v0.3.15
- v0.3.14.4
- v0.3.14.3
- v0.3.14.2
- v0.3.14.1
- v0.3.14
- v0.3.13
- v0.3.12.2
- v0.3.12.1
- v0.3.12
- v0.3.11.2
- v0.3.11.1
- v0.3.11
- v0.3.10.2
- v0.3.10.1
- v0.3.10
- v0.3.9.5
- v0.3.9.4
- v0.3.9.3
- v0.3.9.2
- v0.3.9.1
- v0.3.9
- v0.3.8.1
- v0.3.8
- v0.3.7
- v0.3.6
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.1
- v0.2.0
- v0.1.2
- v0.1.1
- dev-repositories
This package is auto-updated.
Last update: 2024-09-29 05:02:25 UTC
README
要求
- PHP 7.2+
- Laravel 5.7+
- MySQL 5.7+(此包使用
json
列) exif
扩展(在大多数系统中默认安装)。- GD 扩展
- 如果您想创建 PDF 或 SVG 缩略图,则需要 Imagick 和 Ghostscript。
- 为了创建视频文件的缩略图,您的系统上需要安装
ffmpeg
。
安装
- 通过 Composer
$ composer require carpentree/core
-
重要! 移除默认的 Laravel 用户迁移
yyyy_mm_dd_HHiiss_create_users_table.php
yyyy_mm_dd_HHiiss_create_password_resets_table.php
-
运行迁移
$ php artisan migrate
- 由于该包使用 Laravel Passport,因此需要安装它
$ php artisan passport:install
- 在您的
config/auth.php
配置文件中,应将api
身份验证守护程序的driver
选项设置为passport
。
'guards' => [ 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
- [可选] 如果您想,可以从
App/User
中移除默认的User
模型类。 - [可选] 如果您想,可以移除不再有用的中间件和控制器。请记住,此包旨在提供 无状态 应用程序骨架,因此默认的
session
身份验证将不会使用。 - 在您的
config/auth.php
配置文件中,应将users
提供程序的model
选项设置为新的 User 类。
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => \Carpentree\Core\Models\User::class, ], ],
- 除非您需要覆盖它,否则请从
routes
文件夹中移除默认的 Laravel 路由。默认情况下,Carpentree 具有一个用于初始化 React 应用程序的根路由(及其视图)。
不要删除文件,因为它们将有助于您自己的应用程序。只需在开始开发之前删除其内容即可。
使用方法
授权和身份验证
CORS
CORS 中间件基于 https://github.com/barryvdh/laravel-cors。
CORS 中间件已包含在 api
路由组中。
为了进行自定义配置,发布 CORS 配置文件
$ php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
注意:当使用自定义头,如 X-Auth-Token 或 X-Requested-With 时,必须设置 allowedHeaders 以包括那些头。您也可以将其设置为 array('*') 以允许所有自定义头。
注意:如果您明确地允许头,则必须包括 Origin,否则请求将无法被识别为 CORS。
return [ /* |-------------------------------------------------------------------------- | Laravel CORS |-------------------------------------------------------------------------- | | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*') | to accept any value. | */ 'supportsCredentials' => false, 'allowedOrigins' => ['*'], 'allowedHeaders' => ['Content-Type', 'X-Requested-With'], 'allowedMethods' => ['*'], // ex: ['GET', 'POST', 'PUT', 'DELETE'] 'exposedHeaders' => [], 'maxAge' => 0, ];
注意:由于 Laravel 中的 http 方法覆盖,允许 POST 方法也将允许 API 用户执行 PUT 和 DELETE 请求。
启用社交身份验证
添加 OAuth 服务凭据,您的应用程序使用。这些凭据应放置在您的 config/services.php
配置文件中,并使用等于提供程序名称的键(例如,facebook
、google
、github
等)。
例如
'google' => [ 'client_id' => env('GOOGLE_CLIENT_ID'), 'client_secret' => env('GOOGLE_CLIENT_SECRET'), 'redirect' => env('GOOGLE_REDIRECT_URL'), ],
我们将仅使用 Socialite 从访问令牌中检索用户详细信息,因此我们可以将 client_id、client_secret、redirect 用空字符串(不是 NULL)填充,因为它们在我们的流程中不会使用。
角色和权限
有一个 Super Admin
角色可以执行所有操作。为了确保您正确地通过了此角色的检查,您必须使用原生 Laravel 的 @can
和 can()
指令。
通常最好围绕 permissions
编码应用程序。这样,您就可以在应用程序的任何地方使用原生的 Laravel @can
和 can()
指令。
中间件
由于本软件包基于 spatie\laravel-permission
的角色和权限系统,如果您想使用中间件,需要将它们添加到您的 app/Http/Kernel.php
文件中。
protected $routeMiddleware = [ // ... 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class, 'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class, ];
管理权限
- 发布配置文件
$ php artisan vendor:publish --provider="Carpentree\Core\CoreServiceProvider --tag=config"
- 将您想要添加的权限添加到
carpentree.permissions
配置文件中,例如:
'permissions' => [ 'users' => [ 'create', 'read', 'update', 'delete', 'manage-permissions' ], 'group-key' => [ 'permission-key-1', 'permission-key-2', // ... ] ]
- 通过运行控制台命令来更新您的数据库
$ php artisan carpentree:refresh-permissions
权限最终名称将是 group-key.permission-key
,您可以在代码中引用它,例如:
$user->can('users.delete');
为 Eloquent 模型分配状态
我们使用 Spatie 的 laravel-model-status
包。请参阅他们的文档。
为 Eloquent 模型分配分类
要为您的 Eloquent 模型添加分类支持,只需使用 \Carpentree\Core\Traits\Categorizable
特性。
对于这个功能,我们受到了 https://github.com/rinvex/laravel-categories 的启发。阅读其文档以获取更多信息。
全文搜索
TODO (Algolia)
元字段
为了使模型启用元字段,请将 HasMeta
特性分配给模型。为了保持灵活性和简单性,您可以考虑将元字段的 value
属性视为 JSON 容器。
本地化
使用此命令发布配置
php artisan vendor:publish --tag=translatable
之后,可在配置文件 config\translatable.php
中设置可用语言。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 enrico@codificio.com 联系我们,而不是使用问题跟踪器。
许可证
MIT。请参阅许可证文件以获取更多信息。