Constantin Graf
34273a4863
Add audit owner through parent model
...
Models that belong to an organization via a parent model (for example
project members via their project) implement AuditableThroughParent and
return the parent relation. The owner organization of their audits is
taken from the loaded parent if it matches the foreign key, otherwise it
is queried. The declaration is also used to backfill the owner of
existing audits.
2026-10-07 18:43:16 +02:00
Constantin Graf
f921452419
Add marker for auditable models without owner
...
Models implementing AuditableWithoutOwner intentionally have no audit
owner, either because they belong to neither an organization nor a user,
or because they and their audits have to be kept when the owner is
deleted (for example billing records). Adds helpers and a scope on the
audit model to find audits that are missing an owner although they
should have one.
2026-10-07 18:43:16 +02:00
Constantin Graf
135984f9ef
Add owner organization and owner user to audits
...
- Rename the audit actor columns user_type/user_id to actor_type/actor_id
- Add owner_organization_id and owner_user_id to the audits table as
foreign keys with cascade on delete, so that the audits of an
organization or user are deleted together with it. The indexes and
foreign keys are created without blocking writes on the large table.
- Fill the owner columns for new audits via CustomAuditable. Organizations
and users no longer record their own deletion audit, since it would
reference the already deleted owner.
2026-10-07 18:43:16 +02:00
Constantin Graf
32ac8841bc
Remove debug output from TrustHostsTest
2026-10-07 18:28:29 +02:00
Constantin Graf
a9d016d773
Added deletion of refresh tokens in DeletionService
2026-09-24 13:31:26 +02:00
Constantin Graf
e801c4311c
Add new extension auditing
2026-09-24 11:31:38 +02:00
Constantin Graf
2dadf1ef02
Updated Laravel to v13
2026-09-24 10:45:18 +02:00
Constantin Graf
12cc3f27f8
Add check for premium to telemetry and update lookup
2026-09-24 10:45:18 +02:00
Constantin Graf
08f9edbc96
Add additional tests for filament
2026-09-24 10:45:18 +02:00
Constantin Graf
37579b1e5c
Updated compose dependencies
2026-09-24 10:45:18 +02:00
Constantin Graf
01b60c0f6a
Add validation for task name length
2026-09-22 12:01:48 +02:00
Constantin Graf
c89fa87b0f
Fix clockfiy importer, allow project imports without Billability
2026-09-22 12:01:48 +02:00
Gregor Vostrak
95ddbf9ead
fix placeholder users being resolved by authentication flows
2026-09-16 15:25:08 +02:00
Constantin Graf
70646a0dd4
Add additional validation for import, Enhanced ZIP extraction in importer
2026-09-16 15:02:54 +02:00
Constantin Graf
637475e669
Add invite-only registration mode
2026-08-31 13:36:25 +02:00
Constantin Graf
3ec2abb309
Add invite-only registration mode
...
Support configurable on, invite-only, and off registration modes, including case-insensitive invitation checks and test coverage.
2026-08-31 13:36:25 +02:00
Constantin Graf
602a8daa1f
Suppress expected OAuth access denial reports
2026-08-31 12:42:00 +02:00
Constantin Graf
38b448a729
Suppress reporting for expected API exceptions
2026-08-31 12:42:00 +02:00
Constantin Graf
593372bae5
Add still-running email preference
2026-08-31 12:26:02 +02:00
Andrew Herron
453d5ed066
Set content-disposition 'attachment' for both local and S3 downloads. Added a bunch of tests. Fixes #1148 .
2026-08-28 17:30:27 +02:00
Gregor Vostrak
9d9731c7ce
add formatting support for months grouping
2026-08-20 17:11:35 +02:00
Andrew Herron
dfe3206614
Add "Week" grouping option to reporting
2026-08-20 17:11:35 +02:00
Andrew Herron
97fd882878
Format date group labels in all aggregate exports
2026-08-20 17:11:35 +02:00
Constantin Graf
f6d886b218
Refactored TrustHostsTest; Added return types to TrustHosts
2026-08-06 17:01:46 +02:00
Gregor Vostrak
80d98b30a1
add custom error handling for host mismatch; ensure TrustHosts runs
...
before TrustProxies
2026-08-06 17:01:46 +02:00
Gregor Vostrak
32f2f1431b
add TrustHosts middleware with exemption for healthchecks
2026-08-06 17:01:46 +02:00
Gregor Vostrak
f3c6a0b8ae
fix invitations not being respected during signup when email case differs
2026-07-28 17:07:53 +02:00
Gregor Vostrak
c0c8fee6be
default time entry type filter to work for legacy reports
2026-07-28 16:52:36 +02:00
Gregor Vostrak
cbcd1e51f6
add break time entries and simplified time tracker ui
2026-07-28 16:52:36 +02:00
Constantin Graf
114a32536d
Fixed update of member_id in time_entries.update and time_entries.updateMultiple
...
Removed usage of legacy user_id in TimeEntryController
2026-07-23 12:02:46 +02:00
Gregor Vostrak
4fb18f343f
allow missing client columns in clockify importer, fixes #1149
2026-07-09 16:16:25 +02:00
Gregor Vostrak
c90c1ed8fa
add stable secondary sorting based on id to the tests to avoid flakyness
2026-07-09 13:01:23 +02:00
Gregor Vostrak
53ecc58509
add validationa for project names in toggl importer
2026-07-09 13:01:23 +02:00
Gregor Vostrak
a97c02542b
add unique id tiebreaker to paginated index endpoints to make pagination
...
stable (#1138 )
2026-07-09 13:01:23 +02:00
Gregor Vostrak
981bcbe091
add tests for tag match type (backend + e2e)
2026-06-26 14:53:37 +02:00
Gregor Vostrak
50f57f6997
add support for activity columns in clockify exports
2026-06-25 12:10:44 +02:00
Gregor Vostrak
ab9f6e6afb
adapt clockify importer to support task -> tasks column rename
2026-06-25 00:20:29 +02:00
Gregor Vostrak
2a40bb7edb
add support for archived projects in the clockify importer
2026-06-25 00:08:42 +02:00
Constantin Graf
37a8f43b23
Allow Clockify import without Billable column
2026-06-24 13:44:48 +02:00
Constantin Graf
6a197f7f34
Add password check to users.destroy and organizations.destroy
2026-06-18 13:27:43 +02:00
Constantin Graf
24c94af952
Add option to enable email verification locally for testing
2026-06-18 13:27:43 +02:00
Gregor Vostrak
6b01034bdd
add back destroy other browser sessions endpoint (jetstream migration)
2026-06-18 13:27:43 +02:00
Gregor Vostrak
24875f9424
add currency to organization update endpoint
2026-06-18 13:27:43 +02:00
Gregor Vostrak
4975cf1dab
replace hardcoded inertia props with organization delete/update perms
2026-06-18 13:27:43 +02:00
Gregor Vostrak
b3fb04c4be
remove unused inertia organization page props
2026-06-18 13:27:43 +02:00
Gregor Vostrak
0cc8d762a5
fix inertia backend role data structure after jetstream migration
2026-06-18 13:27:43 +02:00
Constantin Graf
0c825a691e
Fixed current organization after normal registration
2026-06-18 13:27:43 +02:00
Constantin Graf
24775d2c47
Added tests
2026-06-18 13:27:43 +02:00
Gregor Vostrak
c5c129b239
add switch current organization endpoint
2026-06-18 13:27:43 +02:00
Constantin Graf
89a9341d91
Removed Laravel Jetstream
2026-06-18 13:27:43 +02:00