mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Access control: hide team role picker if user doesn't have access to it (#45068)
* hide team role column * hide or disable the role picker as needed * add SWL filtering for role listing
This commit is contained in:
parent
4e38ac9cf7
commit
4f4b1cb5ea
@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
var sqlIDAcceptList = map[string]struct{}{
|
var sqlIDAcceptList = map[string]struct{}{
|
||||||
"org_user.user_id": {},
|
"org_user.user_id": {},
|
||||||
|
"role.id": {},
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -74,6 +74,14 @@ export class TeamList extends PureComponent<Props, State> {
|
|||||||
team,
|
team,
|
||||||
isPermissionTeamAdmin({ permission, editorsCanAdmin, signedInUser })
|
isPermissionTeamAdmin({ permission, editorsCanAdmin, signedInUser })
|
||||||
);
|
);
|
||||||
|
const canSeeTeamRoles = contextSrv.hasAccessInMetadata(AccessControlAction.ActionTeamsRolesList, team, false);
|
||||||
|
const canUpdateTeamRoles =
|
||||||
|
contextSrv.hasAccess(AccessControlAction.ActionTeamsRolesAdd, false) ||
|
||||||
|
contextSrv.hasAccess(AccessControlAction.ActionTeamsRolesRemove, false);
|
||||||
|
const displayRolePicker =
|
||||||
|
contextSrv.licensedAccessControlEnabled() &&
|
||||||
|
contextSrv.hasPermission(AccessControlAction.ActionTeamsRolesList) &&
|
||||||
|
contextSrv.hasPermission(AccessControlAction.ActionRolesList);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<tr key={team.id}>
|
<tr key={team.id}>
|
||||||
@ -93,9 +101,11 @@ export class TeamList extends PureComponent<Props, State> {
|
|||||||
<td className="link-td">
|
<td className="link-td">
|
||||||
<a href={teamUrl}>{team.memberCount}</a>
|
<a href={teamUrl}>{team.memberCount}</a>
|
||||||
</td>
|
</td>
|
||||||
{contextSrv.licensedAccessControlEnabled() && (
|
{displayRolePicker && (
|
||||||
<td>
|
<td>
|
||||||
<TeamRolePicker teamId={team.id} roleOptions={this.state.roleOptions} />
|
{canSeeTeamRoles && (
|
||||||
|
<TeamRolePicker teamId={team.id} roleOptions={this.state.roleOptions} disabled={!canUpdateTeamRoles} />
|
||||||
|
)}
|
||||||
</td>
|
</td>
|
||||||
)}
|
)}
|
||||||
<td className="text-right">
|
<td className="text-right">
|
||||||
@ -134,6 +144,10 @@ export class TeamList extends PureComponent<Props, State> {
|
|||||||
const { teams, searchQuery, editorsCanAdmin, searchPage, setTeamsSearchPage } = this.props;
|
const { teams, searchQuery, editorsCanAdmin, searchPage, setTeamsSearchPage } = this.props;
|
||||||
const teamAdmin = contextSrv.hasRole('Admin') || (editorsCanAdmin && contextSrv.hasRole('Editor'));
|
const teamAdmin = contextSrv.hasRole('Admin') || (editorsCanAdmin && contextSrv.hasRole('Editor'));
|
||||||
const canCreate = contextSrv.hasAccess(AccessControlAction.ActionTeamsCreate, teamAdmin);
|
const canCreate = contextSrv.hasAccess(AccessControlAction.ActionTeamsCreate, teamAdmin);
|
||||||
|
const displayRolePicker =
|
||||||
|
contextSrv.licensedAccessControlEnabled() &&
|
||||||
|
contextSrv.hasPermission(AccessControlAction.ActionTeamsRolesList) &&
|
||||||
|
contextSrv.hasPermission(AccessControlAction.ActionRolesList);
|
||||||
const newTeamHref = canCreate ? 'org/teams/new' : '#';
|
const newTeamHref = canCreate ? 'org/teams/new' : '#';
|
||||||
const paginatedTeams = this.getPaginatedTeams(teams);
|
const paginatedTeams = this.getPaginatedTeams(teams);
|
||||||
const totalPages = Math.ceil(teams.length / pageLimit);
|
const totalPages = Math.ceil(teams.length / pageLimit);
|
||||||
@ -159,7 +173,7 @@ export class TeamList extends PureComponent<Props, State> {
|
|||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Email</th>
|
<th>Email</th>
|
||||||
<th>Members</th>
|
<th>Members</th>
|
||||||
{contextSrv.licensedAccessControlEnabled() && <th>Roles</th>}
|
{displayRolePicker && <th>Roles</th>}
|
||||||
<th style={{ width: '1%' }} />
|
<th style={{ width: '1%' }} />
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -60,6 +60,9 @@ export enum AccessControlAction {
|
|||||||
|
|
||||||
ActionRolesList = 'roles:list',
|
ActionRolesList = 'roles:list',
|
||||||
ActionBuiltinRolesList = 'roles.builtin:list',
|
ActionBuiltinRolesList = 'roles.builtin:list',
|
||||||
|
ActionTeamsRolesList = 'teams.roles:list',
|
||||||
|
ActionTeamsRolesAdd = 'teams.roles:add',
|
||||||
|
ActionTeamsRolesRemove = 'teams.roles:remove',
|
||||||
ActionUserRolesList = 'users.roles:list',
|
ActionUserRolesList = 'users.roles:list',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user