2e91469a07
- App\Mail\SuspiciousLoginNotification Mailable + emails.suspicious_login Blade - maybeNotifySuspiciousLogin срабатывает ровно при count==3 (защита от спама на 4-5) - Для unknown email — skip (некому) - На dev MAIL_MAILER=log → письмо в storage/logs ТЗ §22.4.4 анти-брутфорс закрыт полностью: - email-rate-limit 5/15мин (v1.36) - IP-lockout 10/час (v1.41) - email-notify при 3 неудачах (this commit) - Pest +4 SuspiciousLoginNotificationTest (111/111 за 14.32с, 401 assertions) - Регресс: Pint+Stan passed - CLAUDE.md v1.41→v1.42, реестр v1.50→v1.51 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
254 lines
8.6 KiB
Plaintext
254 lines
8.6 KiB
Plaintext
parameters:
|
|
ignoreErrors:
|
|
-
|
|
message: '#^Strict comparison using \!\=\= between int and null will always evaluate to true\.$#'
|
|
identifier: notIdentical.alwaysTrue
|
|
count: 1
|
|
path: app/Http/Middleware/SetTenantContext.php
|
|
|
|
-
|
|
message: '#^Return type \(array\<string, mixed\>\) of method Database\\Factories\\ProjectFactory\:\:definition\(\) should be compatible with return type \(array\<model property of App\\Models\\Project, mixed\>\) of method Illuminate\\Database\\Eloquent\\Factories\\Factory\<App\\Models\\Project\>\:\:definition\(\)$#'
|
|
identifier: method.childReturnType
|
|
count: 1
|
|
path: database/factories/ProjectFactory.php
|
|
|
|
-
|
|
message: '#^Return type \(array\<string, mixed\>\) of method Database\\Factories\\TenantFactory\:\:definition\(\) should be compatible with return type \(array\<model property of App\\Models\\Tenant, mixed\>\) of method Illuminate\\Database\\Eloquent\\Factories\\Factory\<App\\Models\\Tenant\>\:\:definition\(\)$#'
|
|
identifier: method.childReturnType
|
|
count: 1
|
|
path: database/factories/TenantFactory.php
|
|
|
|
-
|
|
message: '#^Return type \(array\<string, mixed\>\) of method Database\\Factories\\UserFactory\:\:definition\(\) should be compatible with return type \(array\<model property of App\\Models\\User, mixed\>\) of method Illuminate\\Database\\Eloquent\\Factories\\Factory\<App\\Models\\User\>\:\:definition\(\)$#'
|
|
identifier: method.childReturnType
|
|
count: 1
|
|
path: database/factories/UserFactory.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 9
|
|
path: tests/Feature/Auth/AuthControllerTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:getJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 2
|
|
path: tests/Feature/Auth/AuthControllerTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 14
|
|
path: tests/Feature/Auth/AuthControllerTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 5
|
|
path: tests/Feature/Auth/ForgotPasswordTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 9
|
|
path: tests/Feature/Auth/ForgotPasswordTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 7
|
|
path: tests/Feature/Auth/IpLockoutTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 6
|
|
path: tests/Feature/Auth/IpLockoutTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 8
|
|
path: tests/Feature/Auth/RateLimitTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 18
|
|
path: tests/Feature/Auth/RateLimitTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$plainCodes\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/Auth/RecoveryCodeTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/Auth/RecoveryCodeTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$user\.$#'
|
|
identifier: property.notFound
|
|
count: 2
|
|
path: tests/Feature/Auth/RecoveryCodeTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 7
|
|
path: tests/Feature/Auth/RecoveryCodeTest.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$self of function startPending expects Tests\\TestCase, Pest\\PendingCalls\\TestCall given\.$#'
|
|
identifier: argument.type
|
|
count: 5
|
|
path: tests/Feature/Auth/RecoveryCodeTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/Auth/ResetPasswordTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$user\.$#'
|
|
identifier: property.notFound
|
|
count: 7
|
|
path: tests/Feature/Auth/ResetPasswordTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 7
|
|
path: tests/Feature/Auth/ResetPasswordTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/Auth/SuspiciousLoginNotificationTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$user\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/Auth/SuspiciousLoginNotificationTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 7
|
|
path: tests/Feature/Auth/SuspiciousLoginNotificationTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/Auth/TwoFactorSetupTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$user\.$#'
|
|
identifier: property.notFound
|
|
count: 16
|
|
path: tests/Feature/Auth/TwoFactorSetupTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:actingAs\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: tests/Feature/Auth/TwoFactorSetupTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 16
|
|
path: tests/Feature/Auth/TwoFactorSetupTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$google2fa\.$#'
|
|
identifier: property.notFound
|
|
count: 4
|
|
path: tests/Feature/Auth/TwoFactorTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/Auth/TwoFactorTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$totpSecret\.$#'
|
|
identifier: property.notFound
|
|
count: 4
|
|
path: tests/Feature/Auth/TwoFactorTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$user\.$#'
|
|
identifier: property.notFound
|
|
count: 4
|
|
path: tests/Feature/Auth/TwoFactorTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:getJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 2
|
|
path: tests/Feature/Auth/TwoFactorTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:postJson\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 11
|
|
path: tests/Feature/Auth/TwoFactorTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$partitionsBefore\.$#'
|
|
identifier: property.notFound
|
|
count: 2
|
|
path: tests/Feature/PartitionsCreateMonthsTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$project1Id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/RlsSmokeTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$project2Id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Feature/RlsSmokeTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant1Id\.$#'
|
|
identifier: property.notFound
|
|
count: 5
|
|
path: tests/Feature/RlsSmokeTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Pest\\PendingCalls\\TestCall\:\:\$tenant2Id\.$#'
|
|
identifier: property.notFound
|
|
count: 5
|
|
path: tests/Feature/RlsSmokeTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:get\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 2
|
|
path: tests/Feature/SetTenantContextTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:withHeaders\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 3
|
|
path: tests/Feature/SetTenantContextTest.php
|
|
|
|
-
|
|
message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#'
|
|
identifier: method.alreadyNarrowedType
|
|
count: 1
|
|
path: tests/Unit/ExampleTest.php
|