125 Commits

Author SHA1 Message Date
SkyMulley
04dec3dd86 bugfix: user creation now properly appears in action log (#5644)
### Description

User creation was not properly logged within the action log, neither
from sub-user invite or manual user creation. This PR adds the relevant
log and includes testing.

### Manual testing scenarios

1. Invite a user within any created server
2. Create a user in the admin
3. Verify both users appear as an action in the action log

### Questions or comments

AI was used for secondary testing, QA and code review. No code was
written by AI.

### Resolved issues:
1. [x] resolves pterodactyl/panel#5631
2026-06-01 11:55:37 -04:00
EgoMaw
2a8ebb7bf4 Update email validation to be strict (#5583)
fixes #5576

---------

Co-authored-by: MrSoulPenguin <28676680+MrSoulPenguin@users.noreply.github.com>
2026-05-31 16:27:31 -04:00
Robert Dennis
676d25c0fd wait for lock properly (#5638)
This PR is a minimal change that acquires a lock on the target model's
row, rather than calling sharedLock() on the model instance.
2026-05-29 23:47:58 -04:00
Dane Everitt
7ffcd63631 Attach a scope(s) to JWTs created by the panel (#5636)
Necessary for proper token identification on Wings.
2026-05-23 11:15:36 -07:00
Dane Everitt
56fe10fdd6 Throttle email address changes on accounts to limit enumeration (#5612)
This change applies a rate limit to account email changes to prevent
enumeration on the system. The throttle is applied at the account level.
Administrators can still update an account's email address manually to
bypass this restriction if/when necessary.
2026-04-01 17:54:30 -07:00
Carlton
33695c642d Fix transfer status permission checks (#5573) 2026-03-26 16:53:41 -07:00
Dane Everitt
a81c3b4d52 Add support for stripe-style identifiers on existing models with UUIDs (#5548)
This is a partial implementation to begin moving towards stripe-style
identifiers for resources in the system. Any models with an existing
`uuid` column can easily be updated to return an identifier in the
format of `prfx_xyz` where `prfx` is a four character prefix, and `xyz`
is the UUID, encoded using base-32.

These are quite easy to use within the API layer because we just need to
do one quick transformation to extract the UUID for those models. This
PR implements that logic for servers in the `SubstituteClientBindings`
logic.

A future PR will need to come through and handle identifiers for models
that _don't_ currently use UUIDs for reference that we want to expose to
clients. In those cases it is easier to just generate base-32 encoded
UUID7s that get stored in the database and indexed. They follow the same
base approach, but you don't need to do any transformations in the code
(other than stripping the prefix, unless we decide to store the prefix).

There is also now a `PTERODACTYL_USE_SERVER_IDENTIFIERS` environment
variable, that when set to true, updates the front-end and API response
to use this new identifier in place of the `uuidShort` value.
2026-02-14 11:21:57 -08:00
Dane Everitt
0e74f3aade Improve SFTP session revocation to cover password changes and account deletion (#5568)
This expands upon previous work done to better disconnect users from
SFTP when different events occur within Pterodactyl. This new logic also
accounts for password changes and their account being deleted entirely
from the system.

These events now trigger background jobs that will reach out to every
node they are associated with to ensure they're disconnected if
currently connected.
2026-02-14 10:51:26 -08:00
Dane Everitt
032bf076d9 Ensure that TOTP tokens cannot be reused (#5481) 2025-12-30 12:27:11 -08:00
Dane Everitt
2bd9d8badd Disconnect SFTP/Websocket when a user is removed as a subuser (#5472) 2025-12-26 17:51:25 -08:00
Dane Everitt
bbb1294267 Support zero-byte file uploads (#5459) 2025-12-24 17:32:53 -08:00
Dane Everitt
895adb6e6f Ensure that a node description can be set, add additional test coverage (#5457) 2025-12-24 16:43:00 -08:00
Dane Everitt
0917e60a3b Return correct error message when deleting self, add test coverage (#5456) 2025-12-24 16:13:31 -08:00
Matthew Penner
caab056256 fix: TwoFactorControllerTest, again
Signed-off-by: Matthew Penner <me@matthewp.io>
2024-10-24 11:42:25 -06:00
Matthew Penner
abd36ad982 fix: TwoFactorControllerTest
Signed-off-by: Matthew Penner <me@matthewp.io>
2024-10-24 11:36:19 -06:00
Matthew Penner
8ca098940a chore: update composer dependencies (#5198)
Signed-off-by: Matthew Penner <me@matthewp.io>
2024-10-21 19:18:20 -06:00
Matthew Penner
1d38b4f0e2 Laravel 10 (#4706) 2023-02-23 12:30:16 -07:00
Boy132
f2095e815e Allow users to change the server description (#4420) 2022-10-31 10:20:53 -06:00
Matthew Penner
cbcf62086f Upgrade to Laravel 9 (#4413)
Co-authored-by: DaneEveritt <dane@daneeveritt.com>
2022-10-14 10:59:20 -06:00
Dane Everitt
c748fa9842 fix: exclude any permissions not defined internally when updating or creating subusers (#4416) 2022-10-09 16:14:16 -06:00
Dane Everitt
e0e0689846 feat: bump account key limit to 25 (#4417)
Closes #4394
2022-10-08 15:14:03 -06:00
DaneEveritt
2d836156d2 Update totp disable modal; require password for enable operation 2022-07-03 14:27:37 -04:00
DaneEveritt
b052d29a5f Fix failing integration test 2022-06-18 14:25:24 -04:00
DaneEveritt
7224ca81de Fix bug preventing the creation of API keys with CIDR ranges 2022-06-18 14:21:20 -04:00
DaneEveritt
03a497fb8a Use a post request to delete SSH keys, some hashes use slashes which cause 404 errors; closes #4100 2022-05-30 17:28:42 -04:00
DaneEveritt
9300e1116d Fix failing tests 2022-05-29 20:39:51 -04:00
DaneEveritt
0621d8475d Return tests to passing now that we don't ignore a critical event... 2022-05-29 17:52:14 -04:00
DaneEveritt
09832cc558 Ensure we can properly create an activity log entry; always return soft-deleted models 2022-05-29 17:07:54 -04:00
DaneEveritt
f1c1699994 Fix tests with model events 2022-05-29 17:07:34 -04:00
DaneEveritt
f7fc67344e Ensure tokens are found in the database using the expected logic 2022-05-22 16:05:58 -04:00
DaneEveritt
e9c633fd03 Update transformers and controllers to no longer pull an API key attribute 2022-05-22 15:37:39 -04:00
DaneEveritt
e313dff674 Massively simplify API binding logic
Changes the API internals to use normal Laravel binding which automatically supports nested-models and can determine their relationships. This removes a lot of confusingly complex internal logic and replaces it with standard Laravel code.

This also removes a deprecated "getModel" method and fully replaces it with a "parameter" method that does stricter type-checking.
2022-05-22 14:10:01 -04:00
DaneEveritt
d4bf6bd46a Add test coverage and fix permissions mistake 2022-05-15 17:30:57 -04:00
DaneEveritt
cca0010a00 Update egg import/update logic to all use the same pathwaus 2022-05-15 14:40:19 -04:00
DaneEveritt
6554164252 Add test coverage for the SSH key endpoints 2022-05-14 18:08:48 -04:00
DaneEveritt
5705d7dbdd Run php-cs-fixer 2022-05-14 16:03:50 -04:00
DaneEveritt
e88d24e0db Don't allow allocations to be deleted by users if no limit is defined; closes #3703 2022-05-07 15:05:28 -04:00
DaneEveritt
b07fdc100c Don't run schedules when a server is suspended or installing; closes #4008 2022-05-04 20:41:53 -04:00
DaneEveritt
34ffaebd3e Run cs-fix, ensure we only install dependency versions supporting 7.4+ 2022-05-04 19:01:29 -04:00
Paul Vogel
dcbc1360a9 Improve test coverage for LocationController (#3779)
By adding tests for create, update, delete
2021-12-04 10:50:36 -08:00
Matthew Penner
cc31a0a6d0 tests(integration): don't expect non-required fields 2021-11-15 11:29:22 -07:00
Dane Everitt
fde0660e6c Return tests to passing state 2021-09-11 12:02:15 -07:00
Dane Everitt
2b3303c46b Fix changing a user password to not incorrectly handle logging out old sessions; closes #3531 2021-08-15 17:37:12 -07:00
Dane Everitt
25d9ba4779 Run php-cs-fixer 2021-08-15 17:20:36 -07:00
Dane Everitt
22f1341fea reformat 2021-08-07 09:19:21 -07:00
Dane Everitt
75e0a862e7 Add another sanity check for websocket permissions 2021-08-07 09:16:29 -07:00
Charles Morgan
91ea0a4f41 Update core eggs to new docker yolk images (#3382) 2021-07-17 10:02:00 -07:00
Dane Everitt
d3e3b1db38 Test that a deleted backup makes an audit log entry 2021-07-11 12:15:39 -07:00
Dane Everitt
d049839ffc Fix deleting a backup that is locked and failed; closes #3404 2021-06-13 10:26:47 -07:00
Charles Morgan
76ac1998cf Don't allow backups to be made via schedules if limit = 0 (#3323) 2021-05-16 09:47:36 -07:00