update for guest demotion and sysadmin edits (#23920)

* update for guest demotion and sysadmin edits

* update unit test

* update unit test

* use existing disabled flag

* remove commented line

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
This commit is contained in:
Scott Bishel 2023-07-11 16:10:44 -06:00 committed by GitHub
parent 2672af30ea
commit f45f774ece
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 15 deletions

View File

@ -2023,19 +2023,9 @@ func (us SqlUserStore) DemoteUserToGuest(userID string) (_ *model.User, err erro
return nil, err
}
roles := user.GetRoles()
newRoles := []string{}
for _, role := range roles {
if role == model.SystemUserRoleId {
newRoles = append(newRoles, model.SystemGuestRoleId)
} else if role != model.SystemAdminRoleId {
newRoles = append(newRoles, role)
}
}
curTime := model.GetMillis()
newRolesDBStr := strings.Join(newRoles, " ")
newRolesDBStr := model.SystemGuestRoleId
query := us.getQueryBuilder().Update("Users").
Set("Roles", newRolesDBStr).
Set("UpdateAt", curTime).

View File

@ -5699,7 +5699,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
updatedUser, err := ss.User().DemoteUserToGuest(user.Id)
require.NoError(t, err)
require.Equal(t, "system_guest custom_role", updatedUser.Roles)
require.Equal(t, "system_guest", updatedUser.Roles)
updatedTeamMember, nErr := ss.Team().GetMember(context.Background(), teamId, user.Id)
require.NoError(t, nErr)

View File

@ -565,6 +565,15 @@ export default class SystemUsersDropdown extends React.PureComponent<Props, Stat
render() {
const {currentUser, user, isLicensed, config} = this.props;
let isDisabled = this.props.isDisabled;
if (!isDisabled) {
// if not already disabled,
// disable if SystemAdmin being edited by non SystemAdmin
// ie, userManager with EditOtherUsers permissions
isDisabled = UserUtils.isSystemAdmin(user.roles) && !UserUtils.isSystemAdmin(currentUser.roles);
}
const isGuest = UserUtils.isGuest(user.roles);
if (!user) {
return <div/>;
@ -635,12 +644,14 @@ export default class SystemUsersDropdown extends React.PureComponent<Props, Stat
{demoteToGuestModal}
{createGroupSyncablesMembershipsModal}
<MenuWrapper
isDisabled={this.props.isDisabled}
isDisabled={isDisabled}
>
<div className='text-right'>
<a>
<span>{currentRoles} </span>
{!isDisabled &&
<span className='caret'/>
}
</a>
{this.renderAccessToken()}
</div>