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>
Этот коммит содержится в:
Scott Bishel
2023-07-11 16:10:44 -06:00
коммит произвёл GitHub
родитель 2672af30ea
Коммит f45f774ece
3 изменённых файлов: 16 добавлений и 15 удалений

Просмотреть файл

@@ -2023,19 +2023,9 @@ func (us SqlUserStore) DemoteUserToGuest(userID string) (_ *model.User, err erro
return nil, err 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() curTime := model.GetMillis()
newRolesDBStr := strings.Join(newRoles, " ") newRolesDBStr := model.SystemGuestRoleId
query := us.getQueryBuilder().Update("Users"). query := us.getQueryBuilder().Update("Users").
Set("Roles", newRolesDBStr). Set("Roles", newRolesDBStr).
Set("UpdateAt", curTime). Set("UpdateAt", curTime).

Просмотреть файл

@@ -5699,7 +5699,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) {
updatedUser, err := ss.User().DemoteUserToGuest(user.Id) updatedUser, err := ss.User().DemoteUserToGuest(user.Id)
require.NoError(t, err) 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) updatedTeamMember, nErr := ss.Team().GetMember(context.Background(), teamId, user.Id)
require.NoError(t, nErr) require.NoError(t, nErr)

Просмотреть файл

@@ -565,6 +565,15 @@ export default class SystemUsersDropdown extends React.PureComponent<Props, Stat
render() { render() {
const {currentUser, user, isLicensed, config} = this.props; 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); const isGuest = UserUtils.isGuest(user.roles);
if (!user) { if (!user) {
return <div/>; return <div/>;
@@ -635,12 +644,14 @@ export default class SystemUsersDropdown extends React.PureComponent<Props, Stat
{demoteToGuestModal} {demoteToGuestModal}
{createGroupSyncablesMembershipsModal} {createGroupSyncablesMembershipsModal}
<MenuWrapper <MenuWrapper
isDisabled={this.props.isDisabled} isDisabled={isDisabled}
> >
<div className='text-right'> <div className='text-right'>
<a> <a>
<span>{currentRoles} </span> <span>{currentRoles} </span>
<span className='caret'/> {!isDisabled &&
<span className='caret'/>
}
</a> </a>
{this.renderAccessToken()} {this.renderAccessToken()}
</div> </div>