6c98052176
fix(teams): fix duplicate teams being shown when new public team visibility feature is enabled ( #2187 )
...
Due to the `INNER JOIN` on the `team_members` table and the new `OR` conditions allowing teams with the `isPublic` flag set to `true`, teams are returned multiple times. As we're only after the teams, a simple distinct query should fix the issue.
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: vikunja/vikunja#2187
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-10 21:42:34 +00:00
ffa82556e0
feat(teams): add public flags to teams to allow easier sharing with other teams ( #2179 )
...
Resolves #2173
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: vikunja/vikunja#2179
Reviewed-by: konrad <k@knt.li>
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-10 14:04:32 +00:00
d7fdefcead
chore(deps): update golangci/golangci-lint docker tag to v1.56.2 ( #2099 )
...
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/vikunja#2099
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2024-03-10 13:47:19 +00:00
654e95d99f
fix(filters): test fixture
2024-03-09 20:21:05 +01:00
4e6e0608c7
fix(filters): lint
2024-03-09 20:08:17 +01:00
05d3bb4fb6
fix(filters): swagger docs for kanban buckets
2024-03-09 19:07:31 +01:00
d0b762d761
docs(filter): add filter query explanation
2024-03-09 19:07:31 +01:00
28fa2c517a
feat(filters): make new filter syntax work with Typesense
2024-03-09 19:06:48 +01:00
bc6d812eb0
fix(filters): lint
2024-03-09 19:06:35 +01:00
87c027aafd
chore(filters): cleanup old variables
2024-03-09 19:06:35 +01:00
65e1357705
fix(tests): make filter tests work again
2024-03-09 19:06:35 +01:00
eebfee73d3
fix(filter): correctly filter for buckets
2024-03-09 19:06:35 +01:00
ef1cc9720c
feat(filter): add in keyword
2024-03-09 19:06:35 +01:00
c6b682507a
feat(filter): add better error message when passing an invalid filter expression
2024-03-09 19:06:35 +01:00
9d3fb6f81d
chore(filter): cleanup
2024-03-09 19:06:35 +01:00
76ed2cff5f
feat(filter): nesting
2024-03-09 19:06:35 +01:00
e43349618b
feat(filter): more tests
2024-03-09 19:06:35 +01:00
9624cc9e97
fix(filter): translate all tests
2024-03-09 19:06:35 +01:00
764bc15d49
fix(filter): allow filtering for "project"
2024-03-09 19:06:34 +01:00
3fc4aaa2a1
fix(filter): allow filtering on "in" condition
2024-03-09 19:06:34 +01:00
9f73e2c5f9
fix(filter): don't crash on empty filter
2024-03-09 19:06:34 +01:00
c1e137d8ee
fix(filter): make sure single filter condition works
2024-03-09 19:06:34 +01:00
de320aac72
feat(filters): basic text filter works now
2024-03-09 19:06:34 +01:00
307ffe11c4
feat(filters): very basic filter parsing
2024-03-09 19:06:31 +01:00
d69fc28125
fix(openid): OIDC teams should not have admins ( #2161 )
...
This PR fixes an issue discussed in #2152 . Before this PR, the user who triggered team creation automatically got the admin flag set for this group, which makes perfect sense for the normal UI workflow. OIDC managed teams cannot be edited in Vikunja, and they're created automatically by the first user logging in having this team assigned. This PR therefore makes sure that OIDC managed team members do not receive the admin flag.
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: vikunja/vikunja#2161
Reviewed-by: konrad <k@knt.li>
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-05 22:08:39 +00:00
a3154e805c
fix(auth): use (issuer, name) to check for uniqueness of oidc teams ( #2152 )
...
The change introduced in #2150 introduces a bug where a Team would be re-created every time a user logs in, as the check if a team already exists was based on both the unique `oidcID` and the `name`. This PR proposes to only base the check on the ID, as this should be unique.
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: vikunja/vikunja#2152
Reviewed-by: konrad <k@knt.li>
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-04 20:26:45 +00:00
ac8751e1be
fix(task): move done tasks to the done bucket when they are moved between projects and the new project has a done bucket
2024-03-03 18:13:47 +01:00
fe27dd59ad
feat(subscription): use a recursive cte to fetch subscriptions of parent projects
...
Testing this locally resulted in improved response times from ~50ms to ~20ms when creating a project. It looks like even though the code running these sql queries uses different go routines, they affect each other (caused by IO or context switching?)
2024-03-03 15:34:18 +01:00
22933dac4a
fix(project): typo in table name
2024-03-03 12:47:00 +01:00
fe02f4da2c
fix(project): check for project nesting cycles with a single recursive cte instead of a loop
2024-03-03 11:40:43 +01:00
4f1f96f1e9
chore(auth): refactor openid team creation
2024-03-02 15:22:37 +01:00
10ff864e0c
fix(projects): load projects only one when fetching subscriptions for a bunch of projects at once
...
This change ensures already loaded projects are passed down when fetching their subscription instead of re-loading each project with a single sql statement. When loading all projects, this meant all projects were loaded twice, which was highly inefficient. This roughly added 25ms to each request, assuming the per page limit was maxed out at 50 projects.
Empirical testing shows this change reduces load times by ~20ms. Because the request is already pretty fast, this is ~30% of the overall request time, making the loading of projects now even faster
2024-03-02 14:27:11 +01:00
a3932a0a19
fix(projects): return correct project pagination count
2024-03-02 13:30:34 +01:00
ed4da96ab1
feat: assign users to teams via OIDC claims ( #1393 )
...
This change adds the ability to sync teams via a custom openid claim. Vikunja will automatically create and delete teams as necessary, it will also add and remove users when they log in. These teams are fully managed by Vikunja and cannot be updated by a user.
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/vikunja#1393
Resolves vikunja/vikunja#1279
Resolves https://github.com/go-vikunja/vikunja/issues/42
Resolves vikunja/vikunja#950
Co-authored-by: viehlieb <pf@pragma-shift.net>
Co-committed-by: viehlieb <pf@pragma-shift.net>
2024-03-02 08:47:10 +00:00
5b70609ba7
fix: usage of limit and order by usage in recursive cte
2024-02-28 14:35:09 +01:00
6b1e67485b
feat: fetch all projects with a recursive cte instead of recursive query
...
This change modifies the fetching of all projects to use a recursive common table expression instead of recursively calling the method.
2024-02-28 13:42:45 +01:00
415c6380a5
feat(api tokens): add task attachment to api scopes
...
This explicitly adds download and upload of task attachments. Because these are not handled with the usual CRUDables, they were not picked up automatically.
Resolves https://github.com/go-vikunja/vikunja/issues/112
2024-02-14 15:00:16 +01:00
8752ae2a0b
fix(webhook): fetch all event details before sending the webhook
...
Resolves https://community.vikunja.io/t/webhook-comment-data-issues/1952
2024-02-10 14:15:32 +01:00
7edb53ca12
fix(export): don't crash when an exported file does not exist
...
Related to https://github.com/go-vikunja/vikunja/issues/110
2024-02-10 13:45:12 +01:00
5ab9fb89bb
fix(tasks): check for cycles during creation of task relations and prevent them
2024-02-10 13:30:41 +01:00
119c68be9d
feat: rename frontend url config to public url
2024-02-09 14:41:55 +01:00
b95b92a23a
fix(filters): add explicit check for string slice filter
...
Resolves https://github.com/go-vikunja/api/issues/109
2024-02-05 22:08:17 +01:00
8efdc96d02
chore(filters): log type if unknown filter type
2024-02-01 16:19:22 +01:00
7f46914d5e
fix(project): pass user id to error message
2024-01-31 13:50:21 +01:00
96b4f2d1db
fix(projects): don't remove parent project id if the parent project is available in the same run
...
Resolves https://github.com/go-vikunja/frontend/issues/139
2024-01-28 15:28:08 +01:00
d9875e476c
fix(assignees): make sure task assignee created event contains the full task
2024-01-28 13:23:27 +01:00
e4fec01d52
fix(assignees): subscribe assigned users directly to the task, not async
...
Resolves https://community.vikunja.io/t/richer-email-notifications/1891
2024-01-28 13:15:43 +01:00
b2970c6c04
fix(assignees): prevent double notifications for assignees
2024-01-28 13:11:50 +01:00
e03920b84a
fix(assignees): improve wording for assignee emails
2024-01-28 13:11:37 +01:00
a20f6ac815
fix(task): delete the task after all related attributes to prevent task not found errors
2024-01-28 12:23:25 +01:00
1630e4fc08
fix: tests
2024-01-28 11:52:16 +01:00
90ad975ca0
fix(typesense): update tasks in Typesense directly when the change happened
...
Resolves https://community.vikunja.io/t/no-filters-working-assignee-date-task-done-etc/1910
2024-01-28 11:47:17 +01:00
ae9b382963
fix(webhooks): make sure all events with tasks have the full task
...
Resolves vikunja/api#1676
2024-01-27 00:16:17 +01:00
d38050f2b8
fix(subscriptions): don't crash when a project is already deleted
2024-01-26 23:53:22 +01:00
33a47b7f43
fix(relations): don't allow creating relations which already exist
...
Resolves https://github.com/go-vikunja/frontend/issues/144
2024-01-26 23:37:59 +01:00
4d48d814c9
fix: update function signatures
2024-01-16 14:06:44 +00:00
2c84688a40
fix: lint
2024-01-14 22:23:33 +01:00
514ea71d93
fix(api): make sure permission to read all tasks work for reading all tasks per project
...
Resolves https://github.com/go-vikunja/api/issues/105
2024-01-14 22:17:22 +01:00
09696aec1b
fix: create webhooks table for fresh installation
...
Resolves https://github.com/go-vikunja/api/issues/104
Resolves vikunja/api#1655
2023-12-30 11:58:02 +01:00
32611dc2d7
feat(reminders): persist reminders in the db
2023-12-23 15:40:03 +01:00
c05f51b923
chore(deps): update golangci-lint rules
2023-12-19 13:34:31 +01:00
57bd5aca80
fix(webhooks): send application/json header
2023-12-06 14:09:49 +01:00
6ef1bc3944
fix: lint
2023-12-06 14:01:09 +01:00
cca42b9188
feat(metrics): add total number of attachments metric
2023-12-03 15:30:39 +01:00
0ce110fa52
feat(metrics): add active link share logins
2023-12-03 15:12:43 +01:00
8a3f16fcfb
fix(labels): make sure labels of shared sub projects are usable
...
Resolves https://community.vikunja.io/t/cannot-filter-on-projets-labels/1736
2023-12-03 14:33:43 +01:00
66b44da85b
fix(projects): delete child projects when deleting a project
2023-12-01 17:27:40 +01:00
bbc8da1e80
fix(tests): pass the map
2023-11-20 12:22:44 +01:00
df1f95871a
fix(projects): correctly set project's archived state if their parent was archived
...
Resolves vikunja/frontend#3795
2023-11-17 20:00:08 +01:00
1ed65d306d
fix(docs): remove duplicate paths (params) in swagger docs
2023-11-16 13:07:01 +01:00
b9a54b019d
fix(tests): remove duplicate projects from assertions
2023-11-15 13:17:04 +01:00
61bce2b349
fix(projects): don't return child projects multiple times
2023-11-15 12:56:36 +01:00
Miguel Arroyo
225d65268d
feat(caldav): Add support for subtasks (i.e. RELATED-TO
property) in CalDAV ( #1634 )
...
As I mentioned [here](vikunja/api#1442 (comment) ), this is mainly a cleanup of @zewaren 's original [PR](vikunja/api#1442 ).
It adds support for the `RELATED-TO` property in CalDAV's `VTODO` and the `RELTYPE=PARENT` and `RELTYPE=CHILD` relationships. In other words, it allows for `ParentTask->SubTask` relations to be handled supported through CalDAV.
In addition to the included tests, this has been tested by both @zewaren & myself with DAVx5 & Tasks (Android) and it's been working great.
Resolves vikunja/api#1345
Co-authored-by: Miguel A. Arroyo <miguel@codeheads.dev>
Co-authored-by: Erwan Martin <public@fzwte.net>
Reviewed-on: vikunja/api#1634
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Miguel Arroyo <mayanez@noreply.kolaente.de>
Co-committed-by: Miguel Arroyo <mayanez@noreply.kolaente.de>
2023-11-10 22:44:03 +00:00
6169c2e12e
fix(typesense): correctly convert date values for typesense
...
Resolves vikunja/api#1636
2023-11-09 12:29:52 +01:00
b2866ca3da
feat(api): enable notifications for api token routes
2023-11-07 14:58:46 +01:00
a375223872
fix: properly tag bucket-related operations
2023-10-24 16:13:15 +02:00
a1ea77f751
feat: accept hex values which start with a #
2023-10-24 16:12:22 +02:00
66cf7ab50a
feat(reminders): include project in reminder notification
2023-10-20 13:56:14 +02:00
55d345e236
feat(webhooks): validate events and target url
2023-10-20 12:42:28 +02:00
61cd08fa13
fix(webhooks): add created by user object when creating a webhook
2023-10-18 22:18:45 +02:00
72366a5b27
feat(webhooks): add created by user object when returning all webhooks
2023-10-18 20:06:07 +02:00
b4e3d8ee47
fix(webhooks): lint
2023-10-17 20:40:09 +02:00
7a74e491da
fix(webhooks): lint
2023-10-17 20:35:14 +02:00
2c84cec044
docs(webhooks): add swagger docs for all webhook endpoints
2023-10-17 20:35:14 +02:00
fc0029eed7
fix(webhooks): don't send the proxy auth header to the webhook target
2023-10-17 20:35:14 +02:00
1b82f26d3e
chore(webhooks): simplify registering webhook events
2023-10-17 20:35:13 +02:00
ec4aa606e2
chore(webhooks): reuse webhook client
2023-10-17 20:35:13 +02:00
831aa4a014
feat(webhooks): add support for webhook proxy
2023-10-17 20:35:13 +02:00
b38360c9a5
feat(webhooks): add timeout config option
2023-10-17 20:35:13 +02:00
34a92b759e
feat(webhooks): add setting to enable webhooks
2023-10-17 20:35:13 +02:00
a0d8b28813
feat(webhooks): add hmac signing
2023-10-17 20:35:13 +02:00
a3a323cbf1
feat(webhooks): set user agent header to Vikunja
2023-10-17 20:35:13 +02:00
4253d14367
chore(webhooks): remove WebhookEvent interface
2023-10-17 20:35:13 +02:00
96ccf6b923
feat(webhooks): add route to get all available webhook events
2023-10-17 20:35:13 +02:00
eb1b9247ad
feat(webhooks): prevent link shares from managing webhooks
2023-10-17 20:35:13 +02:00
57de44694c
feat(webhooks): add index on project id
2023-10-17 20:35:13 +02:00
8d7a492936
feat(webhooks): add filter based on project id
2023-10-17 20:35:13 +02:00
7d1c5c50c5
feat(webhooks): add basic sending of webhooks
2023-10-17 20:35:12 +02:00
c5de41f183
feat(webhooks): add event listener to send webhook payload
2023-10-17 20:35:12 +02:00
e5b8d8bd2d
feat(webhooks): register task and project events as webhook
2023-10-17 20:35:12 +02:00
ad7d485eb5
feat(webhooks): add basic crud actions for webhooks
2023-10-17 20:35:12 +02:00
58497f29e6
fix(kanban): filter for tasks in buckets by assignee should not modify the filter directly
...
Resolves https://github.com/go-vikunja/api/issues/84
2023-10-11 18:43:28 +02:00
56625b0b90
fix: lint
2023-10-10 20:35:43 +02:00
f5ac3abb2a
chore(test): add task deleted assertion to project deletion test
2023-10-03 15:52:38 +02:00
c217233e08
fix(typesense): getting all data from typesense
2023-09-29 21:26:12 +02:00
98102e59f2
feat(typesense): add new tasks to typesense directly when they are created
2023-09-29 21:15:28 +02:00
8f4ee3a089
fix(typesense): make sure searching works when no task has a comment at index time
2023-09-29 16:35:59 +02:00
feacbbff74
fix(caldav): do not update dates of tasks when repositioning them ( #1605 )
...
When a task is updated, the position of the tasks of the whole project/bucket are updated. This leads to column "updated" of model Task to be updated quite often. However, that column is used for the ETag field of CALDAV.
Thus, changing a task marks all the other tasks as updated, which prevents clients from synchronizing their edited tasks.
Co-authored-by: Erwan Martin <erwan@pepper.com>
Reviewed-on: vikunja/api#1605
Co-authored-by: Erwan Martin <public@fzwte.net>
Co-committed-by: Erwan Martin <public@fzwte.net>
2023-09-27 16:17:52 +00:00
f065dcf4ad
fix(typesense): add typesense sync to initial structs
2023-09-15 12:53:29 +02:00
addcbdd8ca
fix(test): don't check for error
2023-09-13 12:52:42 +02:00
054f21821c
fix(typesense): don't try to index tasks if there are none
2023-09-13 12:19:09 +02:00
1ee243f2bd
fix(project background): add more checks for whether a background file exists when duplicating or deleting a project
...
Related discussion: https://community.vikunja.io/t/500-internal-server-error-when-selecting-unsplash-background-image/778/18
2023-09-13 11:20:59 +02:00
bfcefa0217
fix(caldav): check for related tasks synced back from a caldav client
...
Related discussion https://community.vikunja.io/t/tasks-org-subtask-syncing-issue/737/9
2023-09-07 11:29:44 +02:00
68d4dcd7e6
fix(projects): don't limit results to top-level projects when searching
...
Resolves https://github.com/go-vikunja/api/issues/82
2023-09-07 10:56:59 +02:00
b8e73f4fa5
fix: lint
2023-09-06 10:52:30 +02:00
bfb01898c2
fix(api tokens)!: make sure task create routes are available to use with the api
...
BREAKING CHANGE: The api route to create a new task is now /projects/:project/tasks instead of /projects/:project
2023-09-06 10:33:52 +02:00
f38535b2f4
fix(typesense): upsert all documents at once
2023-09-04 11:19:55 +02:00
093b5b99a0
fix(typesense): pass the correct user when fetching task comments
2023-09-04 10:42:10 +02:00
490d374cfd
fix(typesense): add more error logging
2023-09-04 10:20:51 +02:00
21a1f02ea3
fix(typesense): add more error logging
2023-09-03 22:54:50 +02:00
1a492722dd
fix(typesense): upsert one document at a time
2023-09-03 22:51:43 +02:00
0e32d478d1
fix(projects): save done and default bucket when updating project
2023-09-03 15:50:47 +02:00
60bd5c8a79
feat: make default bucket configurable
2023-09-03 15:17:17 +02:00
bbbb45d224
feat: move done bucket setting to project
2023-09-03 15:01:35 +02:00
60cd1250a0
feat: api tokens
...
Reviewed-on: vikunja/api#1600
2023-09-01 14:34:39 +00:00
edbfc06a41
fix(kanban): don't prevent setting a different bucket as done bucket
...
Resolves vikunja/frontend#3373
2023-09-01 16:18:59 +02:00
769b4f8d66
fix(task): remove task relation in the other direction as well
...
Resolves https://community.vikunja.io/t/removing-parent-relationship-doesnt-remove-the-subtask-relationship/1492/3
2023-09-01 16:12:20 +02:00
eac4e455fd
fix(api tokens): lint
2023-09-01 15:56:35 +02:00
a4d946b4a9
fix(api tokens): test
2023-09-01 15:54:39 +02:00
14c5a8ca5b
fix(api tokens): make sure read one routes show up in routes endpoint
2023-09-01 12:58:29 +02:00
e3c5a93f4f
chore(api tokens): remove updated date from tokens as it can't be updated anyway
2023-09-01 11:16:36 +02:00
d9bfcdab8e
feat(api tokens): add tests
2023-09-01 10:19:31 +02:00
e3dac16398
feat(api tokens): check permissions when saving
2023-09-01 08:52:57 +02:00
e4c71123ef
fix: lint
2023-09-01 08:39:25 +02:00
fb2a1c59db
feat(api tokens): check if a provided token matched a hashed on in the database
2023-09-01 08:36:15 +02:00
c88cbaa973
feat(api tokens): properly hash tokens
2023-09-01 08:36:11 +02:00
e6b25bd57b
feat(api tokens): add crud routes to manage api tokens
2023-09-01 08:35:54 +02:00
3faf48706a
feat(api tokens): add api token struct and migration
2023-09-01 08:35:54 +02:00
e518fb1191
chore: remove year from copyright headers
...
Resolves vikunja/api#1483
2023-09-01 08:32:28 +02:00
5811d2a13b
fix: order by clause in task comments
2023-08-31 15:44:59 +02:00
5392ca788c
fix(comments): make sure comment sort order is stable
...
Resolves https://community.vikunja.io/t/comment-order-is-not-by-time/1147/3?u=kolaente
2023-08-29 14:09:53 +02:00
02184663e5
fix(filter): assignee search by partial username test
2023-08-29 11:40:53 +02:00
29317b980e
fix: lint
2023-08-29 11:32:45 +02:00
4f2796ac58
fix(filters): make "in" filter comparator work with Typesense
2023-08-29 11:14:36 +02:00
d0e3062bee
feat(tasks): allow filtering for reminders, assignees and labels with Typesense
2023-08-29 10:54:18 +02:00
748651447a
feat(tasks): find tasks by their identifier when searching with Typesense
2023-08-29 09:31:36 +02:00
2ca193e63b
feat(tasks): make sorting and filtering work with Typesense
2023-08-28 19:10:18 +02:00
09cfe41e4f
feat(tasks): remove deleted tasks from Typesense
2023-08-28 13:34:47 +02:00
1a82d6da44
feat(tasks): add periodic resync of updated tasks to Typesense
2023-08-28 13:26:40 +02:00
010b4ce783
feat(tasks): add searching via typesense
2023-08-28 12:14:50 +02:00