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>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
2672af30ea
Коммит
f45f774ece
@@ -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>
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user