feat(admin): 密码校验统一与后台 API/设置增强
- 管理端账号/代理/站点等密码最短长度统一为 6 位 - LotterySettings、审计日志展示、币种与报表接口等小修复 - 补充设置批量更新、注单、校验错误等相关测试
This commit is contained in:
@@ -19,6 +19,11 @@ use Illuminate\Support\Facades\DB;
|
||||
*/
|
||||
final class AdminSettingController extends Controller
|
||||
{
|
||||
public function deployment(): JsonResponse
|
||||
{
|
||||
return ApiResponse::success(LotterySettings::deploymentSnapshot());
|
||||
}
|
||||
|
||||
public function index(AdminSettingIndexRequest $request): JsonResponse
|
||||
{
|
||||
$validated = $request->validated();
|
||||
|
||||
@@ -50,4 +50,4 @@ final class AuditLogIndexController extends Controller
|
||||
|
||||
return ApiResponse::success(AuditLogApiPresenter::listPayload($paginator));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ final class AdminCurrencyStoreController extends Controller
|
||||
$currency = Currency::query()->create([
|
||||
'code' => $data['code'],
|
||||
'name' => $data['name'],
|
||||
'decimal_places' => (int) ($data['decimal_places'] ?? 2),
|
||||
'decimal_places' => 2,
|
||||
'is_enabled' => $enabled,
|
||||
'is_bettable' => $bettable,
|
||||
]);
|
||||
|
||||
@@ -25,10 +25,6 @@ final class AdminCurrencyUpdateController extends Controller
|
||||
$data['is_bettable'] = (bool) $data['is_bettable'];
|
||||
}
|
||||
|
||||
if (array_key_exists('decimal_places', $data)) {
|
||||
$data['decimal_places'] = (int) $data['decimal_places'];
|
||||
}
|
||||
|
||||
if (array_key_exists('is_enabled', $data)) {
|
||||
$data['is_enabled'] = (bool) $data['is_enabled'];
|
||||
}
|
||||
|
||||
@@ -35,4 +35,4 @@ final class ReportJobStoreController extends Controller
|
||||
'status' => $job->status,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ final class TicketItemsIndexController extends Controller
|
||||
$statusInput,
|
||||
))) : [];
|
||||
$number = trim((string) $request->query('number', ''));
|
||||
$orderNo = trim((string) $request->query('order_no', ''));
|
||||
$startDate = $this->normalizeDate((string) $request->query('start_date', ''));
|
||||
$endDate = $this->normalizeDate((string) $request->query('end_date', ''));
|
||||
|
||||
@@ -57,6 +58,10 @@ final class TicketItemsIndexController extends Controller
|
||||
$query->whereIn('ticket_items.status', $statusValues);
|
||||
}
|
||||
|
||||
if ($orderNo !== '') {
|
||||
$query->whereHas('order', fn ($q) => $q->where('order_no', $orderNo));
|
||||
}
|
||||
|
||||
$this->applyTicketItemNumberSearch($query, $number);
|
||||
$this->applyOrderPlacedDateRange($query, $startDate, $endDate);
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@ final class AdminCurrencyStoreRequest extends ApiFormRequest
|
||||
return [
|
||||
'code' => ['required', 'string', 'max:16', 'regex:/^[A-Z0-9]{1,16}$/', Rule::unique('currencies', 'code')],
|
||||
'name' => ['required', 'string', 'max:64'],
|
||||
'decimal_places' => ['sometimes', 'integer', 'min:0', 'max:12'],
|
||||
'is_enabled' => ['sometimes', 'boolean'],
|
||||
'is_bettable' => ['sometimes', 'boolean'],
|
||||
];
|
||||
|
||||
@@ -15,7 +15,6 @@ final class AdminCurrencyUpdateRequest extends ApiFormRequest
|
||||
{
|
||||
return [
|
||||
'name' => ['sometimes', 'string', 'max:64'],
|
||||
'decimal_places' => ['sometimes', 'integer', 'min:0', 'max:12'],
|
||||
'is_enabled' => ['sometimes', 'boolean'],
|
||||
'is_bettable' => ['sometimes', 'boolean'],
|
||||
];
|
||||
|
||||
@@ -33,7 +33,7 @@ final class AdminIntegrationSiteStoreRequest extends ApiFormRequest
|
||||
'admin_account' => ['required', 'array'],
|
||||
'admin_account.username' => ['required', 'string', 'max:64', Rule::unique('admin_users', 'username')],
|
||||
'admin_account.nickname' => ['required', 'string', 'max:64'],
|
||||
'admin_account.password' => ['required', 'string', 'min:8', 'max:255'],
|
||||
'admin_account.password' => ['required', 'string', 'min:6', 'max:255'],
|
||||
'admin_account.email' => ['nullable', 'email', 'max:255'],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ final class AdminUserStoreRequest extends ApiFormRequest
|
||||
'username' => ['required', 'string', 'min:2', 'max:64', 'regex:/^[a-zA-Z0-9._-]+$/u', 'unique:admin_users,username'],
|
||||
'nickname' => ['required', 'string', 'max:128'],
|
||||
'email' => ['nullable', 'string', 'email', 'max:255'],
|
||||
'password' => ['required', 'string', 'min:8', 'max:256'],
|
||||
'password' => ['required', 'string', 'min:6', 'max:256'],
|
||||
'status' => ['sometimes', 'integer', 'in:0,1'],
|
||||
'admin_site_id' => ['required', 'integer', 'exists:admin_sites,id'],
|
||||
'role_slugs' => ['required', 'array', 'min:1'],
|
||||
|
||||
@@ -34,7 +34,7 @@ final class AdminUserUpdateRequest extends ApiFormRequest
|
||||
return [
|
||||
'nickname' => ['sometimes', 'string', 'max:128'],
|
||||
'email' => ['sometimes', 'nullable', 'string', 'email', 'max:255', Rule::unique('admin_users', 'email')->ignore($adminUser?->id)],
|
||||
'password' => ['sometimes', 'nullable', 'string', 'min:8', 'max:256'],
|
||||
'password' => ['sometimes', 'nullable', 'string', 'min:6', 'max:256'],
|
||||
'status' => ['sometimes', 'integer', Rule::in([0, 1])],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ final class AgentNodeStoreRequest extends ApiFormRequest
|
||||
'name' => ['required', 'string', 'max:128'],
|
||||
'username' => ['sometimes', 'nullable', ...$this->adminOperatorUsernameRules(required: false), Rule::unique('admin_users', 'username')],
|
||||
'email' => ['nullable', 'email', 'max:255', Rule::unique('admin_users', 'email')],
|
||||
'password' => ['required', 'string', 'min:8', 'max:128'],
|
||||
'password' => ['required', 'string', 'min:6', 'max:128'],
|
||||
'status' => ['sometimes', 'integer', 'in:0,1'],
|
||||
...$this->agentProfileFieldRules(),
|
||||
];
|
||||
|
||||
@@ -13,7 +13,7 @@ trait AdminAccountFieldRules
|
||||
}
|
||||
|
||||
/** @return array<int, mixed> */
|
||||
protected function adminLoginPasswordRules(bool $required = true, int $min = 8, int $max = 256): array
|
||||
protected function adminLoginPasswordRules(bool $required = true, int $min = 6, int $max = 256): array
|
||||
{
|
||||
$rules = ['string', 'min:'.$min, 'max:'.$max];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user