danydevco / rocket
Requires
- laravel/helpers: ^1.7
- nesbot/carbon: ^2.72
- spatie/laravel-permission: ^6.0
Requires (Dev)
- orchestra/testbench: ^9.2
- dev-main
- v1.9.0
- v1.8.23
- v1.8.22
- v1.8.21
- v1.8.20
- v1.8.19
- v1.8.18
- v1.8.17
- v1.8.16
- v1.8.15
- v1.8.14
- v1.8.13
- v1.8.12
- v1.8.11
- v1.8.10
- v1.8.9
- v1.8.8
- v1.8.7
- v1.8.6
- v1.8.5
- v1.8.4
- v1.8.3
- v1.8.2
- v1.8.1
- v1.8.0
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.4
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-05 02:51:23 UTC
README
Rocket 是一个用于快速而有效地开始开发项目的终极工具。我们设计了这个包的目的是为了加速项目的启动,为你提供所有必要的基线,以便你能够专注于构建令人惊叹的功能,而不是处理重复性的初始配置。
- 价值观和预配置参数:忘记在每次项目中不断定义相同的值和参数。使用 Rocket,你可以快速配置基本值和参数,根据你的偏好和标准。
- 简化权限管理:在几分钟内实现强大的访问控制系统。Rocket 自动集成权限和角色功能,以便你能够高效地保护你的应用程序。
- 地理数据即用即得:通过包含预定义的国家、城市和部门列表来节省时间。你再也不需要手动搜索和输入这些基本信息了。
安装
composer require Danydevco/rocket
安装包后,你必须运行以下命令:(重要)
php artisan vendor:publish --tag=rocket-config php artisan migrate php artisan rocket:seeder
中间件
中间件 Accept-Json
这个名为 ApiResponseMiddleware
的中间件用于处理 API 的 JSON 格式响应。
-
首先,中间件将请求的 'Accept' 标头设置为 'application/json'。这表示应用程序期望以 JSON 格式接收响应。
-
然后,将请求传递给堆栈中的下一个中间件或请求控制器。
-
收到响应后,将响应的 'Content-Type' 标头设置为 'application/json'。这表示发送的响应是 JSON 格式。
-
如果响应是
JsonResponse
实例,则使用response()->json()
方法重新格式化响应。此方法返回一个新的 JSON 响应,包含原始响应的数据和状态码。 -
如果响应不是
JsonResponse
实例,则简单地返回原始响应。
这个中间件确保所有 API 响应都是 JSON 格式并具有正确的标头,无论响应是在控制器中如何生成的。
# 使用示例
/* |-------------------------------------------------------------------------- | API Routes |-------------------------------------------------------------------------- | | Here is where you can register API routes for your application. These | routes are loaded by the RouteServiceProvider and all of them will | be assigned to the "api" middleware group. Make something great! | */ Route::group(['middleware' => 'accept-json'], function () { // Aca van las rutas de la API });
中间件 RefreshToken
这个名为 RefreshTokenMiddleware
的中间件用于处理每个请求的访问令牌更新。
-
首先,中间件使用
bearerToken()
方法从请求中提取访问令牌。 -
如果找到令牌,则使用
PersonalAccessToken
类的findToken()
方法在数据库中查找。 -
如果找到相应的访问令牌,则将其有效期延长。新的有效期通过将配置中的
rocket.sanctum.expiration
中指定的分钟数加到当前时间来计算。 -
最后,将更新后的访问令牌保存到数据库中,并将请求传递给堆栈中的下一个中间件或请求控制器。
这个中间件确保访问令牌在每次请求中都会自动更新,只要它们是有效的。
# 使用示例
/* |-------------------------------------------------------------------------- | API Routes |-------------------------------------------------------------------------- | | Here is where you can register API routes for your application. These | routes are loaded by the RouteServiceProvider and all of them will | be assigned to the "api" middleware group. Make something great! | */ Route::group(['middleware' => 'accept-json'], function () { Route::group(['middleware' => ['auth:sanctum', 'rocket.refresh.token']], function () { // Aca van las rutas de la API que se desean proteger }); });
## Opcionales ### Herramientas de Desarrollo Para facilitar el desarrollo y depuración de tu aplicación, puedes optar por instalar las siguientes herramientas: - **barryvdh/laravel-debugbar:** Esta herramienta te proporciona una barra de depuración en la parte inferior de tu aplicación cuando estás en el entorno de desarrollo. Para instalarla, ejecuta el siguiente comando: ``` bash composer require barryvdh/laravel-debugbar --dev composer require --dev barryvdh/laravel-ide-helper
请记住,这些包是可选的,并旨在用于开发环境,而不是生产环境。
发布 Rocket 包资源
Rocket提供了多种资源,您可以在主要项目中发布。为此,您可以使用以下命令
发布迁移
php artisan vendor:publish --tag=rocket-migrations
发布种子
php artisan vendor:publish --tag=rocket-seeders
发布Rocket的种子后,您需要修改项目中的主要种子DatabaseSeeder
,以便它能够执行Rocket的种子。以下是一个关于您的DatabaseSeeder
应该如何看的示例
use Danydevco\Rocket\seeders\RoleSeeder; use Danydevco\Rocket\seeders\ValueSeeder; use Danydevco\Rocket\seeders\ParameterSeeder; use Danydevco\Rocket\seeders\CountrySeeder; use Danydevco\Rocket\seeders\DepartmentSeeder; use Danydevco\Rocket\seeders\CitySeeder; use Danydevco\Rocket\seeders\UserSeeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. */ public function run(): void { // START ROCKET SEEDERS $this->call([ RoleSeeder::class, ValueSeeder::class, ParameterSeeder::class, CountrySeeder::class, DepartmentSeeder::class, CitySeeder::class, UserSeeder::class, ]); // END ROCKET SEEDERS // \App\Models\User::factory(10)->create(); // \App\Models\User::factory()->create([ // 'name' => 'Test User', // 'email' => 'test@example.com', // ]); } }
发布视图
php artisan vendor:publish --tag=rocket-views
发布资产
php artisan vendor:publish --tag=rocket-public
发布配置
php artisan vendor:publish --tag=rocket-config
发布语言文件
php artisan vendor:publish --tag=rocket-lang
这些命令将复制Rocket包中的相应资源到您的主要项目,使您可以根据需要对其进行自定义。
将表恢复到初始状态
php artisan rocket:truncate
将Trait添加到User模型
use Illuminate\Foundation\Auth\User as Authenticatable;
use Danydevco\Rocket\Traits\UserRocketTrait;
class User extends Authenticatable{
use UserRocketTrait;
// ...
}
在User模型中模拟Name属性
Rocket包不使用name
列在users
表中。相反,它使用first_name
和last_name
列。但是,您可以使用Rocket包提供的UserRocketTrait
在User
模型中模拟name
属性。
UserRocketTrait
包括一个用于name
属性的访问器,它返回first_name
和last_name
的拼接。这使您可以在User
模型实例中访问name
属性,就像数据库中存在该列一样。
以下是一个如何使用此访问器的示例
$user = User::find(1); echo $user->name; // Imprime "Nombre Apellido"
令牌有效期
默认情况下,Sanctum的令牌每30分钟过期。但是,如果您想为应用程序中的API令牌配置不同的过期时间,您可以通过在config/rocket.php
文件中定义的配置来实现。此配置选项允许定义在令牌发出后多长时间将其视为过期。
/*
|--------------------------------------------------------------------------
| Config Sanctum by Rocket
|--------------------------------------------------------------------------
*/
'sanctum' => [
/*
|--------------------------------------------------------------------------
| Expiration Minutes
|--------------------------------------------------------------------------
*/
'expiration' => 30,
],
默认的表是
- users(更新Laravel的users表)
- personal_access_tokens
- model_has_permissions
- role_has_permissions
- permissions
- model_has_roles
- roles
- values
- parameters
- countries
- departments
- cities
默认用户
- 电子邮件: rocket@Danydevco.co
- 密码: password
默认API路由
以下是在应用程序中可用的API路由列表