Commit Graph

1795 Commits

Author SHA1 Message Date
kolaente 4f99bdb50c
fix(tasks): ambiguous done column in task sorting (#1011)
fix: prefix task fields in sorting
2025-06-24 20:37:25 +00:00
Frederick [Bot] 1621d25392 [skip ci] Updated swagger docs 2025-06-24 11:01:56 +00:00
kolaente 842a71019d
fix(view): add unique index for task buckets (#1005) 2025-06-24 10:45:17 +00:00
kolaente 57dfdc5168
chore: adjust comment about bucketless tasks (#1004)
docs: clarify bucketless task behavior
2025-06-24 09:56:58 +00:00
kolaente 49963d88a6
fix(task): add tasks table prefix for sort order (#1003)
fix: qualify task index for mysql order
2025-06-24 09:55:00 +00:00
kolaente 048e09ee12
fix(tasks): subtasks missing in list view (#1000) 2025-06-24 11:08:01 +02:00
Frederick [Bot] adc1ecaef1 chore(i18n): update translations via Crowdin 2025-06-23 01:01:09 +00:00
Frederick [Bot] 6bdb990de5 chore(i18n): update translations via Crowdin 2025-06-18 00:57:29 +00:00
kolaente 34a5196a05
feat: add email filter to user list command (#973) 2025-06-17 12:38:04 +00:00
Frederick [Bot] 7f8006e3f1 [skip ci] Updated swagger docs 2025-06-17 09:38:12 +00:00
Dominik Pschenitschni 5b9d4fcc72
chore: add missing eof newlines (#969) 2025-06-17 09:11:32 +00:00
kolaente 663339a294
feat(test): add benchmark for task search (#963) 2025-06-16 21:41:14 +02:00
Frederick [Bot] 719cb11d44 [skip ci] Updated swagger docs 2025-06-16 14:10:07 +00:00
Weijie Zhao a214d68a44
feat(auth): sync avatar from OpenID providers (#821) 2025-06-16 15:59:31 +02:00
kolaente 916c0212b5
feat(link share): add feature test for link share avatar access (#944) 2025-06-14 18:22:45 +02:00
kolaente 59a0b9c40d
feat(auth): require auth to fetch avatars (#930) 2025-06-14 13:12:41 +00:00
kolaente 6671ce38a8
chore: rename API test suites (#938) 2025-06-13 08:23:17 +00:00
kolaente da95463bb2
fix(migration): detect header lines in csv file when importing from TickTick (#937) 2025-06-13 07:45:54 +00:00
kolaente 0145a8ba50
feat!(config): store sqlite file relative to rootpath (#934)
Moderately breaking change since in most cases the root path was already set next to the binary.
2025-06-13 09:16:25 +02:00
Frederick [Bot] 15a1919d22 chore(i18n): update translations via Crowdin 2025-06-12 00:56:35 +00:00
kolaente 842e7f524b
fix: always add public url to allowed cors origins
This fixes a bug where it was not possible to do anything because the public url was not allowed by default for CORS requests.

Regression from 433b8b9115

Resolves https://github.com/go-vikunja/vikunja/issues/916
2025-06-11 14:29:38 +02:00
kolaente 433b8b9115
feat: enable cors by default for desktop app (#904) 2025-06-10 20:43:13 +02:00
Frederick [Bot] 191125e122 [skip ci] Updated swagger docs 2025-06-10 11:21:02 +00:00
kolaente f070268c30
feat: check configured default timezone on startup (#903) 2025-06-10 11:03:58 +00:00
Dominik Pschenitschni 296577a875
fix: correct license header references (#882)
See originals:
- https://www.gnu.org/licenses/agpl-3.0.txt
- https://www.gnu.org/licenses/gpl-3.0.txt
2025-06-10 12:18:38 +02:00
Dominik Pschenitschni 62f048767c
fix: correct unknown subscription entity typo (#883) 2025-06-10 12:18:07 +02:00
Dominik Pschenitschni 488b15c128 docs(web): fix typos 2025-06-10 12:10:42 +02:00
Dominik Pschenitschni 4146e91616
docs: mention AGPL-3.0-or-later in CLI help (#893) 2025-06-10 12:07:52 +02:00
Dominik Pschenitschni 508cdf027c
fix: param type (#895) 2025-06-10 12:06:41 +02:00
Dominik Pschenitschni 8632bd2063
fix: TOTP account lock notification typo (#858) 2025-06-05 16:24:41 +02:00
kolaente 44b3e46325
fix: return correct mimetype for openapi docs.json
Resolves https://github.com/go-vikunja/vikunja/issues/864
2025-06-04 16:12:46 +02:00
kolaente 5c17d5b90c
fix(config): set value when env variable contains string value 2025-05-23 12:47:56 +02:00
renovate[bot] bbf7679dd4
fix(deps): update module github.com/olekukonko/tablewriter to v1 (#750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: kolaente <k@knt.li>
2025-05-23 10:00:58 +00:00
Frederick [Bot] 76bba1fb92 chore(i18n): update translations via Crowdin 2025-05-23 00:55:39 +00:00
kolaente d7d277f9b6
fix(config): do not attempt to parse config values from env when they contain an invalid data type
Related https://github.com/go-vikunja/vikunja/issues/719
2025-05-22 17:06:20 +02:00
Frederick [Bot] b96a1701d8 chore(i18n): update translations via Crowdin 2025-05-22 00:55:50 +00:00
kolaente ca98b7da73
feat: add /token/test route
This new route returns 200 if a valid bearer token was presented. It does not return any information about the user.
2025-05-21 22:27:34 +02:00
kolaente c4566fdb53
chore(i18n): improve overdue task emails translation 2025-05-21 10:28:50 +02:00
Frederick [Bot] 1648b71634 [skip ci] Updated swagger docs 2025-05-20 08:12:41 +00:00
Weijie Zhao 00c4148f05
feat(auth): add ForceUserInfo option to OpenID provider (#797)
Problem:

When using Casdoor as an OpenID provider, there's an inconsistency between the user information in the JWT token and the UserInfo endpoint. The token contains the user's unique ID in the `name` field, while the UserInfo endpoint correctly returns the user's display name.

Solution:

This PR adds a new `ForceUserInfo` option to the OpenID provider configuration. When enabled, it forces the use of the UserInfo endpoint to retrieve user information instead of relying on claims from the ID token.

Impact:

- Default behavior remains unchanged (backward compatible)
- New option allows administrators to force using UserInfo endpoint data
- Particularly useful for providers like Casdoor that don't fully comply with OIDC standards

Related:

I've opened an issue in the Casdoor repository (https://github.com/casdoor/casdoor/issues/3806) to discuss the root cause. However, changing Casdoor's token structure might cause significant compatibility issues for existing integrations, so it's unclear if this can be fixed at the provider level. This PR provides a workaround in Vikunja that doesn't affect existing functionality.
2025-05-20 08:06:34 +00:00
Frederick [Bot] adf54f97ab chore(i18n): update translations via Crowdin 2025-05-20 00:56:51 +00:00
kolaente 5acca8144b
fix(projects): do not try to fetch project permissions when no projects exist
Resolves https://vikunja.sentry.io/issues/6572520737/events/2a747d0e53e7431fafca89429c552eae/
2025-05-19 18:21:05 +02:00
Frederick [Bot] 5df5030c68 chore(i18n): update translations via Crowdin 2025-05-18 00:59:45 +00:00
Frederick [Bot] fad3e05ba8 chore(i18n): update translations via Crowdin 2025-05-17 00:54:35 +00:00
kolaente d16d13d730 feat(i18n): use plural translations in humanize duration 2025-05-16 21:57:07 +02:00
kolaente 96369f3b1c feat(i18n): add params replacement to translation functions 2025-05-16 21:57:07 +02:00
kolaente 43f9fb61a7 feat(i18n): add pluralization function for translation strings 2025-05-16 21:57:07 +02:00
Frederick [Bot] 53f201bdfc chore(i18n): update translations via Crowdin 2025-05-16 00:55:58 +00:00
kolaente 9f30a099ee
fix(projects): (un-)archive child projects when archiving parent (#775) 2025-05-15 14:31:56 +00:00
kolaente 3e46457c03
fix: remove unused import 2025-05-15 09:54:15 +02:00
kolaente 13dfe78121
fix(project): correctly handle invalid project id error 2025-05-15 09:50:33 +02:00
kolaente cb0e68f625
fix(i18n): make notification settings link translatable 2025-05-15 09:18:27 +02:00
Frederick [Bot] ee0c68b1a2 chore(i18n): update translations via Crowdin 2025-05-15 00:54:18 +00:00
Frederick [Bot] c19a8cfcc4 [skip ci] Updated swagger docs 2025-05-13 11:27:04 +00:00
kolaente 4d8c17f577
feat(i18n): make overdue reminder translations more explicit (#761) 2025-05-13 11:12:56 +00:00
Piotr Sarna 1d38306e7d
fix(docs): improve swagger output by setting swaggertype and enums (#705)
Co-authored-by: Piotr Sarna <piotr@piksar.eu>
2025-05-13 11:02:12 +00:00
kolaente f7229ba647
fix(i18n): translate all parts of reminder notifications 2025-05-12 16:24:20 +02:00
Frederick [Bot] aaf6de11a5 [skip ci] Updated swagger docs 2025-05-12 10:24:22 +00:00
Vladimir c3fffefcf4
fix(db): refactor filtering with subqueries (#701)
Resolves #285
2025-05-12 10:52:48 +02:00
Frederick [Bot] 3e02604317 chore(i18n): update translations via Crowdin 2025-05-12 00:57:57 +00:00
Frederick [Bot] 48814867b4 chore(i18n): update translations via Crowdin 2025-05-11 00:58:59 +00:00
Frederick [Bot] 7b693f055f chore(i18n): update translations via Crowdin 2025-04-28 00:56:09 +00:00
Frederick [Bot] ad8a17571c chore(i18n): update translations via Crowdin 2025-04-12 00:52:09 +00:00
Frederick [Bot] 8e6b059634 chore(i18n): update translations via Crowdin 2025-04-11 00:52:53 +00:00
Frederick [Bot] 9fe2caa251 chore(i18n): update translations via Crowdin 2025-04-10 00:52:35 +00:00
renovate[bot] 4a75f7d4da
chore(deps): update golangci/golangci-lint-action action to v7 (#462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: kolaente <k@knt.li>
2025-04-02 09:28:56 +02:00
Frederick [Bot] c381e47720 chore(i18n): update translations via Crowdin 2025-03-31 00:55:09 +00:00
kolaente 7803fe8aef
fix(avatar): use keyvalue store to cache gravatar instead of map
Resolves https://community.vikunja.io/t/docker-crash-concurrent-map-writes-google-login/3454
2025-03-30 16:24:34 +02:00
kolaente 6847f44058
chore(openid): add more debug logging when retrieving token 2025-03-29 19:24:07 +01:00
kolaente 4ea3c01b5f
chore: add more debug logging when returning error 2025-03-29 18:21:34 +01:00
kolaente 303dbec78a
feat(i18n): add Hebrew translation for selection 2025-03-27 11:58:23 +01:00
kolaente cfc7f17352
feat(i18n): add Finnish translation for selection 2025-03-27 11:54:17 +01:00
Frederick [Bot] 03ca85aaf1 chore(i18n): update translations via Crowdin 2025-03-26 00:21:22 +00:00
kolaente 25f3c5d9d7
fix(migration): cast to text 2025-03-25 21:47:52 +01:00
kolaente 26eeb07829
fix(i18n): adjust task strings 2025-03-25 09:18:13 +01:00
Frederick [Bot] 04a7cabbcb chore(i18n): update translations via Crowdin 2025-03-25 00:23:17 +00:00
kolaente 2e11c55e9e
fix(test): use correct assertion
Resolves a regression introduced in 1bdb01712e
2025-03-24 17:41:39 +01:00
kolaente 1bdb01712e
fix(filter): correctly use user time zone when filtering for date fields
Resolves https://community.vikunja.io/t/upcoming-list-doesnt-display-repeating-tasks/3539
2025-03-24 17:22:33 +01:00
kolaente 3509f1beb3
chore!: remove deprecated config settings 2025-03-24 16:52:46 +01:00
kolaente 13d4e0e00d
chore(utils): remove deprecated MakeRandomString function 2025-03-24 16:52:46 +01:00
Frederick [Bot] f188762b86 chore(i18n): update translations via Crowdin 2025-03-24 00:22:33 +00:00
kolaente 62b2c6771a
fix(project): correctly migrate old project view filters
This fixes a bug where old filters where not converted to the new json format correctly, leading to issues when trying to decode the raw filter string as json.
It is unclear whether that old migration had a bug or was not executed at all.

This change adds a new migration to fix all filters in views still stuck in the old filter string format.

Resolves https://github.com/go-vikunja/vikunja/issues/420
2025-03-23 21:34:49 +01:00
kolaente 063753a543
fix(filter): do not try to set timezone when doer does not exist
Resolves https://vikunja.sentry.io/issues/6025547266/events/e0d0a5fdf01c46a2ac9101d94ab4f304/
2025-03-23 19:08:11 +01:00
kolaente 8489cf57f6
fix(typesense): use upsert instead of emplace when updating tasks in typesense
Resolves https://github.com/go-vikunja/vikunja/issues/376
2025-03-23 18:46:49 +01:00
kolaente bbd9d0d0b3
fix(comment): add validation check for the max comment length
Resolves https://vikunja.sentry.io/issues/6441922105/events/245b8f1de3e64951a108e2f6cb654c58/
2025-03-23 18:03:29 +01:00
kolaente 4e504c288e
fix(auth): hide two factor authentication when using non-local user
Resolves https://github.com/go-vikunja/vikunja/issues/431
2025-03-23 17:43:36 +01:00
Frederick [Bot] 2e2f82bc44 chore(i18n): update translations via Crowdin 2025-03-22 00:21:30 +00:00
kolaente 4d41a1bd9b
feat(kanban): create To-Do, Doing, Done buckets when creating a new kanban view 2025-03-21 19:16:52 +01:00
kolaente d522d40773
fix(migration): do not fail when an attachment is too large
Resolves https://vikunja.sentry.io/issues/6389417364/events/d79bdea146b54a9dace8c81e3f787975/
2025-03-21 18:03:27 +01:00
kolaente 23d2814b94
fix(migration): check if the provided file is a valid csv before importing 2025-03-21 17:53:05 +01:00
kolaente d19a93dece
fix(migration): check if uploaded csv is empty 2025-03-21 17:48:08 +01:00
kolaente 0585045260
fix(kanban): Mark tasks done when creating them in the done bucket
Resolves https://community.vikunja.io/t/bugs-around-project-duplication-with-kanban-buckets/3433/6
2025-03-21 17:32:50 +01:00
kolaente 096de3382f
fix(kanban): load full task when moving task between buckets 2025-03-21 16:59:20 +01:00
Frederick [Bot] c4ef566a42 chore(i18n): update translations via Crowdin 2025-03-21 00:21:23 +00:00
kolaente e3f006c527
fix(i18n): add missing translations 2025-03-20 17:41:45 +01:00
kolaente 5a93379d81
fix(ldap): update user name and email during login 2025-03-20 17:24:00 +01:00
kolaente d585de77a4
fix(ldap): crop avatar when syncing 2025-03-20 17:19:58 +01:00
kolaente e287364b78
fix(team): do not allow leaving exernal teams 2025-03-20 17:13:51 +01:00
kolaente b010e3851c
fix(project): add position in test fixtures 2025-03-20 14:00:18 +01:00
kolaente 6e9886c6b8
fix(project): make order stable in duplicate test 2025-03-20 13:46:32 +01:00
Frederick [Bot] 8e475e77be chore(i18n): update translations via Crowdin 2025-03-20 00:21:23 +00:00
kolaente 164f2eab9d
feat(ldap): also look for username only when checking group membership 2025-03-19 22:16:12 +01:00
kolaente f4b9a9cccd
feat(ldap): make member id attribute configurable 2025-03-19 22:15:50 +01:00
kolaente 84cbd25e67
chore(project): do not use fmt.Sprintf directly 2025-03-19 19:47:38 +01:00
kolaente 7e1aba7606
fix(kanban): correctly set default bucket id when duplicating project
Partially resolves https://community.vikunja.io/t/bugs-around-project-duplication-with-kanban-buckets/3433
2025-03-19 17:28:59 +01:00
kolaente 4887f7fe60
fix(webhook): do not fail to send webhook when loading the project fails
https://community.vikunja.io/t/webhook-project-error/3305/7
2025-03-19 16:27:04 +01:00
Frederick [Bot] 4998926f55 [skip ci] Updated swagger docs 2025-03-19 15:21:25 +00:00
kolaente 617070f9f7
fix(kanban): use full updated kanban bucket when moving task 2025-03-19 16:06:20 +01:00
kolaente 134c2a1a80
fix(kanban): do not allow creating tasks in full bucket 2025-03-19 15:18:55 +01:00
kolaente ea42fef2da
feat: don't log all headers when debug log is enabled
This reverts commit 9fc6cdd076.
2025-03-19 15:15:04 +01:00
kolaente ffd5a962f5
feat(i18n): add Turkish as language for selection 2025-03-19 14:56:35 +01:00
kolaente e12ebfebed
feat(ldap): sync avatar from ldap 2025-03-18 18:28:54 +01:00
kolaente 26c7ceaed4
chore(avatar): decouple upload from web handler 2025-03-18 18:28:54 +01:00
kolaente 77480814fd
fix(i18n): translations json 2025-03-18 18:28:29 +01:00
kolaente 732431773d
fix(i18n): remove duplicate api strings 2025-03-18 18:23:47 +01:00
Frederick [Bot] 02f9f92232 [skip ci] Updated swagger docs 2025-03-18 16:58:29 +00:00
kolaente 99213c66ee chore(openid): use general external team sync 2025-03-18 16:36:00 +00:00
kolaente 216df5bedc feat(ldap): make group sync configurable 2025-03-18 16:36:00 +00:00
kolaente a3b19a7b3c feat(auth): refactor group sync 2025-03-18 16:36:00 +00:00
kolaente c2f286437c feat(auth): ldap group sync 2025-03-18 16:36:00 +00:00
kolaente 9f5c761fd9 chore(auth): rename error 2025-03-18 16:36:00 +00:00
kolaente 06851ca639 chore(auth): rename external team id find methods 2025-03-18 16:36:00 +00:00
kolaente 62beb3db2d feat(auth): rename oidc_id to external_id 2025-03-18 16:36:00 +00:00
Frederick [Bot] 55a078b171 chore(i18n): update translations via Crowdin 2025-03-18 00:21:21 +00:00
kolaente 12aba8e9b1
chore(openid): move openid team struct to openid package 2025-03-17 17:34:49 +01:00
Frederick [Bot] e5160bf1fe chore(i18n): update translations via Crowdin 2025-03-17 00:21:14 +00:00
kolaente 87cfe89441
feat(ldap): add tests 2025-03-16 18:23:55 +01:00
kolaente 91f9fe5b96
fix(ldap): return meaningful error when providing wrong credentials 2025-03-16 18:23:55 +01:00
Frederick [Bot] 754e1541ae [skip ci] Updated swagger docs 2025-03-16 17:17:37 +00:00
kolaente dbb4652fad
fix(docs): clarify team member username instead of id 2025-03-16 18:02:17 +01:00
Frederick [Bot] 3dc63986b2 [skip ci] Updated swagger docs 2025-03-16 16:35:04 +00:00
kolaente 5c6be117fe
fix(kanban): increase dates when moving a task into the done bucket
Resolves https://community.vikunja.io/t/unable-to-drag-a-repeating-task-to-done-bucket/3321/2
Resolves https://github.com/go-vikunja/vikunja/issues/402
2025-03-16 17:19:51 +01:00
Frederick [Bot] ddf5fab364 chore(i18n): update translations via Crowdin 2025-03-16 00:21:45 +00:00
Frederick [Bot] c0de2e03b7 chore(i18n): update translations via Crowdin 2025-03-14 00:21:16 +00:00
kolaente e94c744477
fix(auth): return ldap as auth provider name when using it 2025-03-09 09:23:40 +01:00
Frederick [Bot] 0f81e18d85 chore(i18n): update translations via Crowdin 2025-03-09 08:05:39 +00:00
kolaente 9fc6cdd076
feat: log request headers when debug logs are enabled
Related to https://github.com/go-vikunja/vikunja/issues/415
2025-03-08 14:47:21 +01:00
Frederick [Bot] de403c365a [skip ci] Updated swagger docs 2025-03-02 19:00:53 +00:00
kolaente 61333c9b7f
fix: lint 2025-03-02 19:43:41 +01:00
Marc f4a0c0ef31 feat(auth): sso fallback mapping (#3068)
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/3068
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Marc <marc88@free.fr>
Co-committed-by: Marc <marc88@free.fr>
2025-03-02 15:21:09 +00:00
Frederick [Bot] b489703d6f [skip ci] Updated swagger docs 2025-03-02 15:09:28 +00:00
kolaente 4e93806a44
fix(auth): load oidc provider before trying to use it
Resolves https://kolaente.dev/vikunja/vikunja/issues/3067
2025-03-02 14:09:02 +01:00
kolaente bbbfbb36bb
fix(filters): ignore invalid task fields when recomputing task positions
Resolves https://vikunja.sentry.io/issues/6025547266/
2025-03-02 14:00:31 +01:00
kolaente 734033c843
fix(avatars): always return correct mime type for cached avatar 2025-03-02 13:33:40 +01:00
kolaente 2ead48c1e9
fix(migration): do not crash when relating a task to itself
Resolves https://community.vikunja.io/t/vikunja-import-error-tried-to-relate-a-task-with-itself/1105
2025-03-02 13:24:55 +01:00
kolaente c6cade3aeb
feat(i18n): automatically set language during registration 2025-03-02 13:21:24 +01:00
kolaente 4e90c6bb78
chore(deps): update golangci-lint 2025-03-02 13:00:18 +01:00
kolaente 1d1295e065
feat(i18n): add translations for migration notifications 2025-03-02 12:33:30 +01:00
kolaente 250bb8ec99
fix(i18n): pass language to notification mail function 2025-03-02 12:29:31 +01:00
kolaente f662b79abb
fix(i18n): use only one function to get translations 2025-03-02 12:27:10 +01:00
kolaente c00768499f
fix(notifications): test assertion 2025-03-02 12:05:17 +01:00
kolaente e11a3026b9
feat: translate notifications 2025-03-02 11:41:38 +01:00
kolaente b230bb94a4
chore(webhook): refactor reloading event data 2025-02-24 18:18:38 +01:00
kolaente 70e1fdae91
feat: always add project to webhook payload
Resolves https://github.com/go-vikunja/vikunja/issues/410
2025-02-21 19:45:07 +01:00
kolaente 398d0c7ab5
fix: add missing error messages to translations 2025-02-21 17:27:52 +01:00
kolaente 65df9e5ef9
fix: return meaningful error message when selecting an invalid timezone 2025-02-21 17:20:51 +01:00
das_j 989a40ad42 fix(caldav): return other status codes than 500 when projects are not found (#3065)
This allows CalDav clients to behave properly. In particular, DavX5 will error out on syncing the collections list rather than removing deleted projects from its local cache.

Resolves: https://community.vikunja.io/t/deleting-a-project-breaks-caldav/3315/3
Co-authored-by: Janne Heß <janne@hess.ooo>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/3065
Reviewed-by: konrad <k@knt.li>
Co-authored-by: das_j <das_j@noreply.kolaente.dev>
Co-committed-by: das_j <das_j@noreply.kolaente.dev>
2025-02-06 12:38:27 +00:00
kolaente e9d9f04763
chore: improve debug logging 2025-02-03 17:42:17 +01:00
jyte e9444159c5 Add Issuer and Subject to user list command (#3063)
I believe that it is possible to endup in the following situation :

- A user logs in using an authorized OIDC provider
- A vikunja user is created with the issuer & subject from the OIDC provider
- The same user logs in using another OIDC provider
- A 2nd vikunja user is created with a different issuer (possibly all other fields beside `created`, `updated` and `id` are equals)

I think it is important to be able to distinguish them in the `user list` command.

Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/3063
Co-authored-by: jyte <marc88@free.fr>
Co-committed-by: jyte <marc88@free.fr>
2025-01-30 17:22:02 +00:00
Frederick [Bot] 60aa9485b1 [skip ci] Updated swagger docs 2025-01-28 10:18:36 +00:00
kolaente 90bf5ba81b chore(auth): refactor registration enabled setting in /info 2025-01-28 09:59:08 +00:00
kolaente 9dc351f5a4 feat(auth): show login form when only ldap is enabled 2025-01-28 09:59:08 +00:00
kolaente f898bdaf2d feat(auth): use config variable to check if we should verify tls 2025-01-28 09:59:08 +00:00
kolaente 03412dd358 feat(auth): verify ldap config before trying to connect 2025-01-28 09:59:08 +00:00
kolaente d22c3fb19e feat(auth): make ldap user filter configurable 2025-01-28 09:59:08 +00:00
kolaente f01dd2ff52 feat(auth): make sure local auth and ldap can both work when configured at the same time 2025-01-28 09:59:08 +00:00
kolaente 71cad7aa13 chore(auth): refactor creating users in openid and ldap 2025-01-28 09:59:08 +00:00
kolaente 38bb8de4f1 feat(auth): authenticate users via ldap 2025-01-28 09:59:08 +00:00
kolaente ef01c2217b
fix(task): correctly validate all task fields 2025-01-25 14:38:25 +01:00
kolaente acf1ce862a
fix(filter): validate fields before using them
Resolves https://vikunja.sentry.io/share/issue/0e99ec2d0ee64e7aa40ea78098d5a316/
2025-01-24 19:06:59 +01:00
Frederick [Bot] 878b443ce6 [skip ci] Updated swagger docs 2025-01-24 14:04:14 +00:00
kolaente 5c02527d2d
fix!(config): read all env variables into config store explicitly
This changes the way environment variables are read into Vikunja's config.
With this change, Vikunja loads the config from all env variables into the config store explicitly, after all config files have been processed. The breaking change here is that values from env variables now may override values from a config file when both are specified.
This allows specifying openid providers using only environment values. Previously this still required a config file to work, because viper wouldn't know about these values otherwise.

Resolves https://community.vikunja.io/t/configure-openid-via-environment/628/16
2025-01-24 14:42:27 +01:00
kolaente 9aa197b196
fix: swagger docs 2025-01-24 14:20:07 +01:00
kolaente 6b7c3ffef3
feat(tasks): add parameter to expand comments on a task 2025-01-24 13:00:06 +01:00
kolaente 75bd569a93
fix(projects): return list of projects when accessing as link share 2025-01-24 11:46:45 +01:00
kolaente e887cdeb5e
feat(task): expand reactions via parameter 2025-01-24 11:39:51 +01:00
kolaente 68d07a8c0f
feat(webhooks): expand buckets in webhooks
Resolves https://community.vikunja.io/t/bucket-id-is-0-in-webhook-payload-after-moving-task-between-columns/2993/2
2025-01-24 11:21:53 +01:00
kolaente 333e35e648
feat: add expand property to read one task 2025-01-24 11:20:23 +01:00
kolaente 7f6cb1e06e
feat: expand buckets 2025-01-24 11:03:40 +01:00
kolaente bc0c0b103f
feat: validate expand api parameter 2025-01-24 10:09:36 +01:00
kolaente 88761db2b1
fix(auth): check for existence of field before casting
Resolves https://vikunja.sentry.io/share/issue/6a21a679011a40b290ac531dd96c2adc/
2025-01-22 09:45:14 +01:00
Frederick [Bot] 94da5c1c4e [skip ci] Updated swagger docs 2025-01-21 15:46:37 +00:00
kolaente 090dd4b2f6
fix(user): do not allow changing name in settings when the user originates from an external auth provider
This improves the UX because it does not allow external users to change their name in Vikunja, since that change would be overridden once they log in again.

Resolves https://github.com/go-vikunja/vikunja/issues/357
2025-01-21 16:27:06 +01:00
kolaente 760f6d6800
fix(projects): adjust test assumptions
This adjusts the test for the changes made in f6bfe2f13c
2025-01-21 12:43:01 +01:00
kolaente f6bfe2f13c
fix(quick actions): show saved filters in search results
This fixes a bug where saved filters would not show up in quick actions search results. It was caused by explicitely only searching for projects.
During the debugging of this, I've discovered the search parameter is ignored when searching for filters.

Resolves https://community.vikunja.io/t/virtual-projects-a-k-a-saved-filters-do-not-show-up-in-search-bar-results/3180/4
2025-01-21 11:07:28 +01:00
kolaente b85befb86a
fix: start server when listening on socket
This fixes a regression introduced in daa7ad053c where the http server was not started when listening on a unix socket instead of a http interface.

Resolves https://github.com/go-vikunja/vikunja/issues/396
2025-01-21 10:18:14 +01:00
Frederick [Bot] 20cd15fb98 [skip ci] Updated swagger docs 2025-01-21 07:27:59 +00:00
kolaente f25f983417
feat(notifications): include link to settings in notifications 2025-01-20 17:38:18 +01:00
kolaente debdcd4dd3
docs: clarify return value of /tasks 2025-01-20 16:23:26 +01:00
kolaente a7be41ef04
fix(filter): do not override filter include nulls query
This fixes a bug where the "include nulls" query parameter would get overridden when the current view had a filter set, even if that filter didn't specify the parameter.
2025-01-20 14:23:35 +01:00
kolaente 6673adf0b5
fix(filter): do not show tasks in filter results when they are filtered out by labels
This fixes a bug where tasks which were filtered out by their label would still be shown. That was caused by the way the filter query was translated to sql under the hood.

Resolves https://github.com/go-vikunja/vikunja/issues/394
2025-01-20 14:05:42 +01:00
kolaente 4858f7c82f
fix(project): transfer ownership after deleting a user
This fixes a bug where the ownership of a project was not transferred when the user was deleted, leading to errors when viewing the project, as the owner user could not be found.

Resolves https://kolaente.dev/vikunja/vikunja/issues/2827
2025-01-20 12:25:38 +01:00
kolaente 0e37049343
fix(migration): add more debug logging 2025-01-20 12:08:10 +01:00
Dominik Pschenitschni 47538ca810 fix: method name 2025-01-17 13:59:12 +01:00
kolaente abae6f05e0
fix(auth): move read all notifications to notification group
Resolves
https://kolaente.dev/vikunja/vikunja/issues/2977
2025-01-17 12:52:42 +01:00
kolaente 45ec1a4c47
fix(auth): make sure routes from the "other" group work as intended
Resolves
https://kolaente.dev/vikunja/vikunja/issues/2977
2025-01-17 11:06:00 +01:00
kolaente 2522cffa61
fix(auth): return proper error when a jwt claim contains wrong data
Resolves https://vikunja.sentry.io/share/issue/69b578ccc3794de58cecfc7b8291ae64/
2025-01-14 16:38:49 +01:00
kolaente 33b9917c7d
fix(auth): return correct error when trying to do a user action as a link share
Resolves https://vikunja.sentry.io/share/issue/77f7aa4cda9442439deba3cfe2cb32c6/
2025-01-14 15:01:13 +01:00
kolaente 1db99dba47
fix(kanban): correctly check bucket limit for saved filters or view filters
Resolves https://github.com/go-vikunja/vikunja/issues/355
2025-01-09 16:21:28 +01:00
kolaente 017fa1b5af
fix(restore): restore encoded float values properly
Resolves https://kolaente.dev/vikunja/vikunja/issues/2934
2025-01-09 15:42:12 +01:00
kolaente 7e66f3ec6b
fix(restore): make sure all json columns are properly restored 2025-01-09 15:40:22 +01:00
kolaente 3d5d17336e
fix(migration): return proper error when uploaded file is not a zip file
Resolves https://vikunja.sentry.io/share/issue/73a7b6f60b3e446e949d072016f31c22/
2025-01-09 14:32:24 +01:00
Frederick [Bot] 0826d72e38 [skip ci] Updated swagger docs 2024-12-22 23:39:06 +00:00
kolaente 70f1b4f28b
fix(export): update only current user export file id 2024-12-22 19:48:47 +01:00
kolaente 703a88e99f
fix: lint 2024-12-17 10:53:18 +01:00
kolaente 4359819faf
fix(auth): do not allow commas in usernames 2024-12-16 23:09:35 +01:00
kolaente 47ff7d8ad3
fix(migration): fetch members when they do not exist
Resolves https://github.com/go-vikunja/vikunja/issues/378
2024-12-15 13:11:29 +01:00
kolaente 28a58303f0
fix(auth): convert to int when failed password value is not int
Resolves https://github.com/go-vikunja/vikunja/issues/377
2024-12-13 20:46:36 +01:00
kolaente b3c93ae811
fix(task): do not update all project_view ids
Might fix https://community.vikunja.io/t/not-able-to-move-task-between-buckets-within-a-kanban-view-for-saved-filter/2882/6
2024-12-11 18:50:01 +01:00
kolaente c9a68d3a63
fix(openid): lint 2024-12-11 17:10:41 +01:00
kolaente 7ac2c42e4d
fix(caldav): fetch saved filter
This fixes a bug which caused fetching saved filter and favorite projects to crash, because the respective project ID is not a valid project id without special handling.
2024-12-11 17:05:51 +01:00
kolaente 5abca0927b
fix(caldav): do not crash with error 400 when fetching the list of all projects
Because the "all projects" handler is the same as the one to fetch a single project, the handler would fail because no project was specified. However, it should return an empty project instead so that it later fetches all projects.

Resolves https://community.vikunja.io/t/http-400-when-trying-to-connect-via-caldav/3054
2024-12-11 16:51:30 +01:00
kolaente 4512045cbf
fix: check if all required keys are available when parsing openid configuration
Related to https://github.com/go-vikunja/vikunja/issues/371
2024-12-11 16:25:41 +01:00
kolaente 25fd0f6108
fix(filter): correctly create task positions during filter creation
This fixes a bug where a saved filter would contain many "dead" entries for tasks which are not part of that filter. These entries were "dead" because the filter would not match for them and thus they were not shown.
The problem was caused by a routine during the creation of the filter where all projects from all matching tasks would be used as input for fetching the tasks to add to task_positions.

https://community.vikunja.io/t/not-able-to-move-task-between-buckets-within-a-kanban-view-for-saved-filter/2882/3
2024-12-09 19:21:13 +01:00
kolaente 942c2e4af6
fix: specify cols when upgrading
Resolves https://github.com/go-vikunja/vikunja/issues/367
2024-12-09 17:42:31 +01:00
graves501 ed5474a28a fix(typo): Simpl -> Simple -> GetProjectsMapSimpleByTaskIDs (#2906)
Fix typo -> GetProjectSimplByTaskID -> GetProjectSimpleByTaskID

Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2906
Co-authored-by: graves501 <graves501@protonmail.com>
Co-committed-by: graves501 <graves501@protonmail.com>
2024-12-09 13:55:16 +00:00
kolaente 8d8406df05
fix: task overdue at the same time as the notification
If a task is overdue at the same time the notification is sent, it would contain a message like "overdue since" without a time. This now shows "overdue now" instead.
2024-12-03 08:33:16 +01:00
kolaente 8732837596
chore: simplify sentry code 2024-11-22 12:05:02 +01:00
kolaente 3659b7b58d
fix(attachments): check permissions when accessing all attachments 2024-11-21 15:42:53 +01:00
kolaente bbbd936868
fix(saved filters): check permissions when accessing tasks of a filter 2024-11-21 15:42:26 +01:00
ScribblerCoder a5cc5e3783 Add healthcheck command (#2856)
Currently vikunja has a `/health` endpoint that was added in https://kolaente.dev/vikunja/vikunja/pulls/998. Docker/compose cannot utilize this feature since vikunja's docker image doesn't have curl/wget as it is pruned which is great for the image size. This PR adds a `healthcheck` command that send an http request to `/health` and exits with 0 or non-zero depending on the result.
It also adds a `HEALTHCHECK` to the docker image which calls this automatically.

Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2856
Reviewed-by: konrad <k@knt.li>
Co-authored-by: ScribblerCoder <omar2001.oh@gmail.com>
Co-committed-by: ScribblerCoder <omar2001.oh@gmail.com>
2024-11-20 18:04:55 +00:00
kolaente f2eac4623d
fix(filters): do not crash when paginating bucket with empty filter
Resolves https://community.vikunja.io/t/error-in-kanban-view-of-virtual-project-saved-filter/2876/7
2024-11-19 19:32:09 +01:00
kolaente 0b9fd2c485
fix(project): correctly set done bucket after duplicating project
Resolves https://community.vikunja.io/t/duplicating-projects-with-a-kanband-done-bucket-is-broken/2979
2024-11-19 19:23:08 +01:00
Frederick [Bot] 940b450a56 [skip ci] Updated swagger docs 2024-11-19 16:44:45 +00:00
kolaente d616bab76d fix(views): enable search in bucket filters 2024-11-19 16:27:22 +00:00
kolaente 624907ad6a fix: make search in saved filter work 2024-11-19 16:27:22 +00:00
Maximilian Bosch 3bafaa7101 fix(tasks): also delete corresponding task positions (#2840)
Closes [#348](https://github.com/go-vikunja/vikunja/issues/348)

When moving a project, the old task bucket entries (project, saved
filters) will be removed, but not the corresponding position. This has
the effect that the saved_filter event hook UpdateTaskInSavedFilterViews
wrongly assumes that the task doesn't need to be re-added to the saved
filter since the position part still exists.

Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2840
Co-authored-by: Maximilian Bosch <maximilian@mbosch.me>
Co-committed-by: Maximilian Bosch <maximilian@mbosch.me>
2024-11-18 16:02:05 +00:00
kolaente b8c4e0a91e
fix(openid): log error when config is still using array value 2024-11-18 12:16:38 +01:00
kolaente feb6b708e3
fix(tasks): prefix created and updated columns when sorting by them
Resolves https://github.com/go-vikunja/vikunja/issues/350
2024-11-18 12:07:29 +01:00
kolaente bd3eab8c34
fix(filters): validate filter expression when creating or updating filter
Resolves https://github.com/go-vikunja/vikunja/issues/354
2024-11-18 11:02:21 +01:00
kolaente 1db1333d8a
chore(config): append .file to config values when reading 2024-11-18 10:35:02 +01:00
kolaente 05349ddb5c
feat!: config for auth providers now use a map instead of an array
The config values for openid providers now use a map with the provider as key instead of an array. For example before:

auth:
  openid:
    providers:
      - name: foo
        clientid: ...

now becomes:

auth:
  openid:
    providers:
      foo:
        clientid: ...

This allows us to read values for openid providers from files using the same syntax as everywhere and makes the configuration more predictable. It also allows configuring providers through env variables, though it is still required to set at least one value via the config file because Vikunja won't discover the provider otherwise.
2024-11-18 10:34:30 +01:00
kolaente 3479fa1228
feat(config): only read file sub-keys from files
This removes reading config values from _file and instead only reads from file sub keys. This should make it easier to not accidentally specify the same value twice.
The syntax via env does not change, but via a config file this:

database:
  password_file: foo

becomes

database:
  password:
    file: foo
2024-11-18 08:52:21 +01:00
kolaente c7914bc245
feat: load any config value from file
This change allows to read any config value from a file, when the path to that file is specified in the config with the target config value suffixed with _file. This works with environment variables as well.
For example, setting database.password_file=/path/to/password will load the value from /path/to/password and set it as the config value of database.password.

Resolves https://kolaente.dev/vikunja/vikunja/issues/704
Resolves https://kolaente.dev/vikunja/vikunja/pulls/1621
2024-11-04 16:47:39 +01:00
kolaente 4556cfb057
fix(attachments): return error message when attachment upload is not multipart form request
Resolves https://vikunja.sentry.io/issues/6041469388/
2024-11-04 12:26:53 +01:00
kolaente 3f62c013ba
fix(typesense): fetch task comments without permission check
Fetching the task comments during indexing would always check the permissions - in the specific case of indexing comments into Typesense, this will always return true, because we're checking with the owner of the project. Because this is a rather expensive operation, it is even more unnecessary.
2024-11-02 18:42:12 +01:00
kolaente e393cfdfd7
fix(views): delete task buckets and task positions as well when deleting a view 2024-10-31 19:22:51 +01:00
kolaente 1fac81c8de
feat(cli): add cli command to delete orphan task positions 2024-10-31 19:19:56 +01:00
kolaente d03f9c7b73
fix(positions): directly look in the database to fetch tasks when recalculating their position 2024-10-31 19:02:15 +01:00
kolaente d7eff8e43b
feat(positions): add more debug logs 2024-10-31 18:46:09 +01:00
kolaente 7f5f5a4b8d
fix(events): do not crash filter event handler when triggered by a link share user
Resolves https://vikunja.sentry.io/issues/6030883119/events/4013802889b64b6b9d868e7c83ba4eb5/
2024-10-30 14:49:33 +01:00
kolaente d081cf80fc
chore(caldav): refactor fetching projects 2024-10-30 08:37:27 +01:00
kolaente b9366ca9e3
fix(filter): use correct syntax for not in query in typesense
Related to https://github.com/typesense/typesense/issues/2038
2024-10-29 17:23:16 +01:00
kolaente 57c6f2cd10
feat(filters): add "not in" operator for filters
Resolves https://community.vikunja.io/t/feature-requests-regarding-view-ordering-project-reference-in-kanban-and-a-notin-operator/2728
2024-10-29 12:03:16 +01:00
kolaente 412a8ef654
chore(projects): only pass users to checks 2024-10-29 09:11:06 +01:00
kolaente 816da6bc50
fix(projects): check with the current user if they have access to the project 2024-10-29 08:40:14 +01:00
kolaente dace07efda
fix(projects): return 0 if no parent project exists 2024-10-29 08:25:20 +01:00
kolaente fa032a889f
fix(filters): do not crash when a filter is invalid
Resolves https://vikunja.sentry.io/issues/6025547266/events/a62beaa09caf482ba238b18f363956df
2024-10-28 16:16:48 +01:00
kolaente e30374a28c
fix(projects): only add conditions to query when they are non-empty 2024-10-28 16:09:31 +01:00
kolaente b013b294e2
fix(projects): remove unnecessary join
The removal of the unnecessary join condition speeds up the query 10x. Before, it would take ~700ms on Vikunja Cloud. With this removal, the otherwise same query now takes ~70ms (which still leaves plenty of room for improvements, but it's already a great step forwards).
2024-10-28 15:58:07 +01:00