feat: 增强管理员权限与角色管理功能

- 在 SyncAdminAuthorizationCommand 中新增对代理和抽奖菜单操作的同步功能,确保缺失的菜单操作行能够被创建。
- 更新多个控制器中的权限检查逻辑,使用 hasPermissionCode 替代原有的权限验证方式,提升权限管理的灵活性。
- 引入 ApiMessage 统一错误响应格式,确保在权限不足时返回一致的错误信息。
- 更新 AdminRole 和 AdminUser 模型,增强角色与用户的权限管理功能,支持更细粒度的权限控制。
This commit is contained in:
2026-06-03 10:56:36 +08:00
parent 1dcd4716c5
commit 0527c7c392
96 changed files with 2215 additions and 139 deletions

View File

@@ -3,9 +3,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminCurrencyStoreRequest extends FormRequest
final class AdminCurrencyStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminCurrencyUpdateRequest extends FormRequest
final class AdminCurrencyUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,12 +2,12 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* @see \App\Http\Controllers\Api\V1\Admin\Integration\AdminIntegrationSiteConnectivityTestController
*/
final class AdminIntegrationSiteConnectivityTestRequest extends FormRequest
final class AdminIntegrationSiteConnectivityTestRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,11 +2,11 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
use App\Rules\WalletApiUrlRule;
final class AdminIntegrationSiteStoreRequest extends FormRequest
final class AdminIntegrationSiteStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,10 +2,10 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
use App\Rules\WalletApiUrlRule;
final class AdminIntegrationSiteUpdateRequest extends FormRequest
final class AdminIntegrationSiteUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 管理员登录请求。
*
* @see LoginController
*/
final class AdminLoginRequest extends FormRequest
final class AdminLoginRequest extends ApiFormRequest
{
public function authorize(): bool
{
@@ -29,16 +29,4 @@ final class AdminLoginRequest extends FormRequest
];
}
/**
* @return array<string, string>
*/
public function attributes(): array
{
return [
'account' => 'account',
'password' => 'password',
'captcha_key' => 'captcha_key',
'captcha_code' => 'captcha_code',
];
}
}

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 玩家列表查询请求。
*
* @see AdminPlayerIndexController
*/
final class AdminPlayerIndexRequest extends FormRequest
final class AdminPlayerIndexRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -3,14 +3,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 玩家创建请求。
*
* @see AdminPlayerStoreController
*/
final class AdminPlayerStoreRequest extends FormRequest
final class AdminPlayerStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 管理员查看玩家注单列表请求。
*
* @see AdminPlayerTicketItemsIndexController
*/
final class AdminPlayerTicketItemsRequest extends FormRequest
final class AdminPlayerTicketItemsRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -3,14 +3,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 玩家更新请求。
*
* @see AdminPlayerUpdateController
*/
final class AdminPlayerUpdateRequest extends FormRequest
final class AdminPlayerUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminReportQueryRequest extends FormRequest
final class AdminReportQueryRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminRolePermissionSyncRequest extends FormRequest
final class AdminRolePermissionSyncRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminRoleStoreRequest extends FormRequest
final class AdminRoleStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -3,9 +3,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminRoleUpdateRequest extends FormRequest
final class AdminRoleUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -3,9 +3,9 @@
namespace App\Http\Requests\Admin;
use App\Models\AdminUser;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminSettingBatchUpdateRequest extends FormRequest
final class AdminSettingBatchUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminSettingIndexRequest extends FormRequest
final class AdminSettingIndexRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -3,9 +3,9 @@
namespace App\Http\Requests\Admin;
use App\Models\AdminUser;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminSettingUpdateRequest extends FormRequest
final class AdminSettingUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 管理员用户权限同步请求。
*
* @see AdminUserPermissionSyncController
*/
final class AdminUserPermissionSyncRequest extends FormRequest
final class AdminUserPermissionSyncRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 管理员用户角色同步请求。
*
* @see AdminUserRoleSyncController
*/
final class AdminUserRoleSyncRequest extends FormRequest
final class AdminUserRoleSyncRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -3,14 +3,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Support\Str;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 管理员用户创建请求。
*
* @see AdminUserStoreController
*/
final class AdminUserStoreRequest extends FormRequest
final class AdminUserStoreRequest extends ApiFormRequest
{
/**
* Determine if the user is authorized to make this request.

View File

@@ -3,14 +3,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 管理员用户更新请求。
*
* @see AdminUserUpdateController
*/
final class AdminUserUpdateRequest extends FormRequest
final class AdminUserUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AgentAdminUserRoleSyncRequest extends FormRequest
final class AgentAdminUserRoleSyncRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,10 +2,10 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
final class AgentAdminUserStoreRequest extends FormRequest
final class AgentAdminUserStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AgentDelegationGrantSyncRequest extends FormRequest
final class AgentDelegationGrantSyncRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AgentNodeStoreRequest extends FormRequest
final class AgentNodeStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AgentNodeUpdateRequest extends FormRequest
final class AgentNodeUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AgentRolePermissionSyncRequest extends FormRequest
final class AgentRolePermissionSyncRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -3,10 +3,10 @@
namespace App\Http\Requests\Admin;
use App\Models\AdminRole;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
final class AgentRoleStoreRequest extends FormRequest
final class AgentRoleStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AgentRoleUpdateRequest extends FormRequest
final class AgentRoleUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,10 +2,10 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
final class DashboardAnalyticsRequest extends FormRequest
final class DashboardAnalyticsRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -3,10 +3,10 @@
namespace App\Http\Requests\Admin;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
use App\Services\Draw\DrawPrizeLayout;
final class DrawManualResultBatchStoreRequest extends FormRequest
final class DrawManualResultBatchStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{
@@ -33,7 +33,7 @@ final class DrawManualResultBatchStoreRequest extends FormRequest
sort($actual);
if ($actual !== $expected) {
$validator->errors()->add('items', 'items must contain the complete 23 draw prize slots.');
$validator->errors()->add('items', __('validation.exact.items_must_contain_23_slots'));
}
});
}

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class DrawReopenRequest extends FormRequest
final class DrawReopenRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class DrawStoreRequest extends FormRequest
final class DrawStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin\Jackpot;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class AdminJackpotPoolAdjustRequest extends FormRequest
final class AdminJackpotPoolAdjustRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 对账任务创建请求。
*
* @see ReconcileJobStoreController
*/
final class ReconcileJobStoreRequest extends FormRequest
final class ReconcileJobStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,11 +2,11 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
/** @see ReportJobStoreController */
final class ReportJobStoreRequest extends FormRequest
final class ReportJobStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class SettlementBatchReviewRequest extends FormRequest
final class SettlementBatchReviewRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class SettlementPayoutAdjustmentRequest extends FormRequest
final class SettlementPayoutAdjustmentRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 管理员注单列表查询请求。
*
* @see AdminTicketItemIndexController
*/
final class TicketItemListRequest extends FormRequest
final class TicketItemListRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 转账单列表查询请求。
*
* @see TransferOrderListController
*/
final class TransferOrderListRequest extends FormRequest
final class TransferOrderListRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin\Wallet;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class TransferOrderCompleteCreditRequest extends FormRequest
final class TransferOrderCompleteCreditRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin\Wallet;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class TransferOrderManuallyProcessRequest extends FormRequest
final class TransferOrderManuallyProcessRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests\Admin\Wallet;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
final class TransferOrderReverseRequest extends FormRequest
final class TransferOrderReverseRequest extends ApiFormRequest
{
public function authorize(): bool
{

View File

@@ -2,14 +2,14 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiFormRequest;
/**
* 钱包流水列表查询请求。
*
* @see WalletTransactionListController
*/
final class WalletTransactionListRequest extends FormRequest
final class WalletTransactionListRequest extends ApiFormRequest
{
public function authorize(): bool
{