mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* Fix permission required to invite users (prevent access error)
* Use hasAccess method with fallback
* Fix tests
(cherry picked from commit 6c3c82d132
)
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
This commit is contained in:
parent
fcd0c382b6
commit
56693672ad
@ -7,6 +7,7 @@ import { setUsersSearchQuery } from './state/reducers';
|
|||||||
jest.mock('app/core/core', () => ({
|
jest.mock('app/core/core', () => ({
|
||||||
contextSrv: {
|
contextSrv: {
|
||||||
hasPermission: () => true,
|
hasPermission: () => true,
|
||||||
|
hasAccess: () => true,
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ export class UsersActionBar extends PureComponent<Props> {
|
|||||||
{ label: 'Users', value: 'users' },
|
{ label: 'Users', value: 'users' },
|
||||||
{ label: `Pending Invites (${pendingInvitesCount})`, value: 'invites' },
|
{ label: `Pending Invites (${pendingInvitesCount})`, value: 'invites' },
|
||||||
];
|
];
|
||||||
const canAddToOrg = contextSrv.hasPermission(AccessControlAction.OrgUsersAdd);
|
const canAddToOrg = contextSrv.hasAccess(AccessControlAction.UsersCreate, canInvite);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="page-action-bar">
|
<div className="page-action-bar">
|
||||||
@ -49,7 +49,7 @@ export class UsersActionBar extends PureComponent<Props> {
|
|||||||
<RadioButtonGroup value={showInvites ? 'invites' : 'users'} options={options} onChange={onShowInvites} />
|
<RadioButtonGroup value={showInvites ? 'invites' : 'users'} options={options} onChange={onShowInvites} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{canInvite && canAddToOrg && <LinkButton href="org/users/invite">Invite</LinkButton>}
|
{canAddToOrg && <LinkButton href="org/users/invite">Invite</LinkButton>}
|
||||||
{externalUserMngLinkUrl && (
|
{externalUserMngLinkUrl && (
|
||||||
<LinkButton href={externalUserMngLinkUrl} target="_blank" rel="noopener">
|
<LinkButton href={externalUserMngLinkUrl} target="_blank" rel="noopener">
|
||||||
{externalUserMngLinkName}
|
{externalUserMngLinkName}
|
||||||
|
@ -13,6 +13,11 @@ exports[`Render should render component 1`] = `
|
|||||||
value=""
|
value=""
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<LinkButton
|
||||||
|
href="org/users/invite"
|
||||||
|
>
|
||||||
|
Invite
|
||||||
|
</LinkButton>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -53,6 +58,11 @@ exports[`Render should render pending invites button 1`] = `
|
|||||||
value="users"
|
value="users"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<LinkButton
|
||||||
|
href="org/users/invite"
|
||||||
|
>
|
||||||
|
Invite
|
||||||
|
</LinkButton>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -69,6 +79,11 @@ exports[`Render should show external user management button 1`] = `
|
|||||||
value=""
|
value=""
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<LinkButton
|
||||||
|
href="org/users/invite"
|
||||||
|
>
|
||||||
|
Invite
|
||||||
|
</LinkButton>
|
||||||
<LinkButton
|
<LinkButton
|
||||||
href="some/url"
|
href="some/url"
|
||||||
rel="noopener"
|
rel="noopener"
|
||||||
|
@ -13,7 +13,7 @@ export function loadUsers(): ThunkResult<void> {
|
|||||||
|
|
||||||
export function loadInvitees(): ThunkResult<void> {
|
export function loadInvitees(): ThunkResult<void> {
|
||||||
return async (dispatch) => {
|
return async (dispatch) => {
|
||||||
if (!contextSrv.hasPermission(AccessControlAction.OrgUsersAdd)) {
|
if (!contextSrv.hasPermission(AccessControlAction.UsersCreate)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user