Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
44a97c3
Expire active sessions of disabled users
carlbennett Nov 4, 2026
90d7c10
Log username, email, and display name changes as user edits
carlbennett Nov 4, 2026
0ef7444
Add a staff page for editing a user's account and permissions
carlbennett Nov 4, 2026
9edec9a
Return HTTP 200 instead of 500 from the profile update page
carlbennett Nov 4, 2026
f129945
Restrict the profile update page to the logged-in user
carlbennett Nov 4, 2026
3d22447
Label permission grid cells that have no option
carlbennett Nov 4, 2026
da2c229
Edit a user's public profile from the staff user editor
carlbennett Nov 4, 2026
f066dc3
Refuse account verification without a pending token
carlbennett Nov 4, 2026
3973d2d
Keep verification state consistent when staff toggle Verified
carlbennett Nov 4, 2026
9ef7fa8
Move the verification email into a reusable library
carlbennett Nov 4, 2026
0b499cf
Add a button to resend a user's verification email
carlbennett Nov 4, 2026
aea74c9
Show a friendly page when following a verification link again
carlbennett Nov 4, 2026
71c4e84
Check the user editor's model type at runtime instead of with @var
carlbennett Nov 4, 2026
532bf99
Stop claiming verification links expire after 24 hours
carlbennett Nov 4, 2026
6eaa928
Use the shield emoji for every link to the user editor
carlbennett Nov 4, 2026
592820d
Color the social link bubbles on user profiles by platform
carlbennett Nov 4, 2026
c5e387c
Share profile field access through the Profile library
carlbennett Nov 4, 2026
6b82db0
Revamp the profile update page and save it all-or-nothing
carlbennett Nov 4, 2026
5da6d35
Require verifying a new email address on the profile update page
carlbennett Nov 4, 2026
1521db4
Hide the user editor's permission presets unless scripts run
carlbennett Nov 4, 2026
88698af
Require verifying a new email address on the user editor
carlbennett Nov 4, 2026
bacd13c
Caption the profile page's password button Change password
carlbennett Nov 4, 2026
ad598c2
Move the password reset email into a reusable library
carlbennett Nov 4, 2026
7f3b89c
Make password reset links work only once
carlbennett Nov 4, 2026
8542c50
Word the password reset email for resets made by staff
carlbennett Nov 4, 2026
2e706de
Tell users without a password to reset it when logging in
carlbennett Nov 4, 2026
bdd98b4
Add a reset password button to the user editor
carlbennett Nov 4, 2026
0635b25
Expire sessions on log out instead of deleting them
carlbennett Nov 4, 2026
8a0a2d4
Accept sessions without an expiry date
carlbennett Nov 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
294 changes: 3 additions & 291 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -1869,307 +1869,19 @@ parameters:
-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$user\.$#'
identifier: property.notFound
count: 10
count: 5
path: src/Controllers/User/ResetPassword.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$_responseCode\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$active_user\.$#'
identifier: property.notFound
count: 4
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$biography\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$biography_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$biography_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$discord_username\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$discord_username_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$discord_username_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$display_name\.$#'
identifier: property.notFound
count: 2
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$display_name_error\.$#'
identifier: property.notFound
count: 4
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$email_1\.$#'
identifier: property.notFound
count: 2
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$email_2\.$#'
identifier: property.notFound
count: 2
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$email_error\.$#'
identifier: property.notFound
count: 8
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$facebook_username\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$facebook_username_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$facebook_username_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$github_username\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$github_username_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$github_username_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$instagram_username\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$instagram_username_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$instagram_username_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$phone\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$phone_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$phone_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$profile\.$#'
identifier: property.notFound
count: 24
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$reddit_username\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$reddit_username_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$reddit_username_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$skype_username\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$skype_username_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$skype_username_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$steam_id\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$steam_id_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$steam_id_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$twitter_username\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$twitter_username_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$twitter_username_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$user\.$#'
identifier: property.notFound
count: 20
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$username\.$#'
identifier: property.notFound
count: 2
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$username_error\.$#'
identifier: property.notFound
count: 7
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$username_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$website\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$website_error\.$#'
identifier: property.notFound
count: 3
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$website_max_len\.$#'
identifier: property.notFound
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Call to function is_null\(\) with null will always evaluate to true\.$#'
identifier: function.alreadyNarrowedType
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Expression on left side of \?\? is not nullable\.$#'
identifier: nullCoalesce.expr
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Result of && is always false\.$#'
identifier: booleanAnd.alwaysFalse
count: 1
path: src/Controllers/User/Update.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$_responseCode\.$#'
identifier: property.notFound
count: 2
path: src/Controllers/User/Verify.php

-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$error\.$#'
identifier: property.notFound
count: 3
count: 4
path: src/Controllers/User/Verify.php

-
Expand All @@ -2181,7 +1893,7 @@ parameters:
-
message: '#^Access to an undefined property BNETDocs\\Interfaces\\Model\:\:\$user\.$#'
identifier: property.notFound
count: 3
count: 4
path: src/Controllers/User/Verify.php

-
Expand Down
Loading