Team module
Based on mpociot/teamwork module, it allows the grouping of users into teams so that further logic can be applied to:
- Users
- Content
- Permissions
- ...
Team types
Teams can have types that are defined by a plugin that should extend Plugins\TeamTypes\BaseTeamType and must be placed in your module folder under Plugins\TeamTypes\.
Team revisions
Teams are revisioned by default so admins can track changes made to teams.
Team management workflow
Team management can follow a moderation workflow and integrates with the District module WorkflowApi.
Simply configure a workflow under your workflow_api for the Team model.
Team user
User models can have teams if the model uses the Trait CanHaveTeamTrait and implements the interface CanHaveTeamInterface.
Team content
Content can be owned by a team if the model use Trait OwnedByTeamTrait and implements the interface OwnedByTeamInterface.
Team permissions
Teams follow a permission system provided by the District PermissionsApi module.
Team roles, granted when adding a user to a team, provide permission within the team context. For instance, viewing any content owned by a team. System roles, granted on the user system account, provide permission at a global level. For instance, creating new users.
Some team role permissions can however be considered global in order to overcome certain limitations.
For instance, allowing team users to access a dashboard.
This is done by extending the array defined in the config team_permissions.global_team_permissions.