mirror of
https://github.com/hanzoai/team.git
synced 2026-09-30 01:57:35 +00:00
* MM-69063 - Add team ABAC model and constants foundation * Add team ABAC store EXISTS, channel Type retrofit, policy count split, and index migration * Add team ABAC app layer: access gate, hydrators, assign/unassign, cleanup, and GetTeamMembersToRemove store * Enforce team membership ABAC on join and hide policy governed teams from non-qualifying users in the directory * Add team_ids to access policy assign/unassign, expose per-team policy GET, and support abac_match_only for not_in_team user listing * Add team ABAC client methods, websocket handler, per-team System Console policy UI, and hide policy-governed teams from non-qualifying users * Make team ABAC mode-aware: advisory on public teams, strict on private, and surface governed private teams to qualifying users in directory listings * Flag-gate team ABAC mutation/read APIs and fix policy-save error handling, member-removal limit, team-id validation, export, and audit cleanup * coderabbit feedback; Broadcast team policy enforcement updates on policy create/update and activation, not only on delete * Update team access control policy schema to allow nullable policies and enhance test cases with channel counts * Enhance access control policy tests to include team policy search alongside channel policy search * Add team membership access control feature flag to docker-compose generation * Implement team access control policy checks and refactor related components * Audit-log team ABAC policy removal on team archive and delete --------- Co-authored-by: Mattermost Build <[email protected]>
28 lines
1.2 KiB
Go
28 lines
1.2 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package model
|
|
|
|
type TeamSearch struct {
|
|
Term string `json:"term"`
|
|
Page *int `json:"page,omitempty"`
|
|
PerPage *int `json:"per_page,omitempty"`
|
|
AllowOpenInvite *bool `json:"allow_open_invite,omitempty"`
|
|
GroupConstrained *bool `json:"group_constrained,omitempty"`
|
|
IncludeGroupConstrained *bool `json:"include_group_constrained,omitempty"`
|
|
PolicyID *string `json:"policy_id,omitempty"`
|
|
ExcludePolicyConstrained *bool `json:"exclude_policy_constrained,omitempty"`
|
|
IncludePolicyID *bool `json:"-"`
|
|
// IncludePolicyEnforced widens a public/private listing to also return teams
|
|
// governed by an access control policy, regardless of their open-invite
|
|
// setting. Server-controlled (never decoded from a request) so a caller can't
|
|
// surface governed teams it isn't entitled to see.
|
|
IncludePolicyEnforced *bool `json:"-"`
|
|
IncludeDeleted *bool `json:"-"`
|
|
TeamType *string `json:"-"`
|
|
}
|
|
|
|
func (t *TeamSearch) IsPaginated() bool {
|
|
return t.Page != nil && t.PerPage != nil
|
|
}
|