Implement private workspaces and ACLs

MUST: Implement private workspaces and associated access control rules on all the API and interfaces

  • Needed for embargoed security updates

Related blueprints:

Base infrastructural issues:

Scope management:

Group management:

  • #507 (closed) UI to manage groups in a scope
  • #506 (closed) Add an interface to add/remove users to/from a group
  • document scope/group as a naming scheme

Workspace management:

  • #527 (closed) Add a management command to manage workspaces in a scope
  • #489 (closed) Add roles for existing use cases
  • #490 (closed) Implement workspace visibility permissions
  • #536 (closed) Refactor debusine.db.models.workspaces.Workspace.get_collection to use permissions
  • document scope/workspace as a naming scheme

Add permission checks:

  • !1267 (merged): Check that a user has permission to create a workspace
  • !1271 (merged): Set current workspace (and check can_display) in views with a workspace as parameter
  • TODO: this is a significant refactoring of existing code, to be planned once we have at least some role checking working
Edited by Enrico Zini