Introduce public teams to improve sharing behaviour #2173
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
This proposal aims to implement a new concept around teams, allowing the teams admin (or OIDC admin) to control whether a team should be public or not. A public team can be discovered by any user (even if the user is not member of that team) when trying to share any project.
Problem Statement
User story not being supported by the current approach:
Team A and Team B both work in Vikunja, each Team having their respective Vikunja Team. Lisa (member of Team A) wants to enable collaboration between both teams and creates a new project to track common tasks. While Lisa can share the project with her own team, she cannot share the project with Team B, as she is not a member of Team B.
Proposal
The proposal is to add a flag to teams that can be configured by the team admin, controlling the visibility of the team. Similarly to GitHub projects, a team can either be public (in which case it is discoverable by everyone) or private (in which case it's only discoverable by members). When sharing a project, the user can then find (a) all teams the user is member of and (b) all public teams.
Vikunja managed teams can be configured in the UI or via the API by team admins. For OIDC teams, the schema is extended with a flag to control the behaviour.
The feature itself will be opt-in and needs to be enabled at instance level. In addition, the default behaviour for the public flag when creating a team should be configurable at instance level as well.
Details
IsPublic
, defaulting to False/teams
endpoint gets an additional query parameter controlling whether public teams should be shown or not. This is needed as both the Teams main page (showing the Teams for each user) and the project sharing dialogue use the same endpoint.Looks good! Only one comment: The team flag should be called
IsPublic
(I know, that's very nitpicky, but better communicate it now) and be false by default