Fixing update roles API (#4060)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
de79343b9a
Коммит
efdb0dfa0b
@@ -77,6 +77,10 @@ export default class Client {
|
||||
return `${this.url}${this.urlVersion}/teams/${this.getTeamId()}`;
|
||||
}
|
||||
|
||||
getTeamNeededManualRoute(teamId) {
|
||||
return `${this.url}${this.urlVersion}/teams/${teamId}`;
|
||||
}
|
||||
|
||||
getChannelsRoute() {
|
||||
return `${this.url}${this.urlVersion}/teams/${this.getTeamId()}/channels`;
|
||||
}
|
||||
@@ -709,22 +713,37 @@ export default class Client {
|
||||
this.track('api', 'api_users_update_notification_settings');
|
||||
}
|
||||
|
||||
updateRoles(teamId, userId, newRoles, success, error) {
|
||||
updateUserRoles(userId, newRoles, success, error) {
|
||||
var data = {
|
||||
new_roles: newRoles
|
||||
};
|
||||
|
||||
request.
|
||||
post(`${this.getUserNeededRoute(userId)}/update_roles`).
|
||||
set(this.defaultHeaders).
|
||||
type('application/json').
|
||||
accept('application/json').
|
||||
send(data).
|
||||
end(this.handleResponse.bind(this, 'updateUserRoles', success, error));
|
||||
|
||||
this.track('api', 'api_users_update_user_roles');
|
||||
}
|
||||
|
||||
updateTeamMemberRoles(teamId, userId, newRoles, success, error) {
|
||||
var data = {
|
||||
team_id: teamId,
|
||||
user_id: userId,
|
||||
new_roles: newRoles
|
||||
};
|
||||
|
||||
request.
|
||||
post(`${this.getUsersRoute()}/update_roles`).
|
||||
post(`${this.getTeamNeededManualRoute(teamId)}/update_member_roles`).
|
||||
set(this.defaultHeaders).
|
||||
type('application/json').
|
||||
accept('application/json').
|
||||
send(data).
|
||||
end(this.handleResponse.bind(this, 'updateRoles', success, error));
|
||||
end(this.handleResponse.bind(this, 'updateTeamMemberRoles', success, error));
|
||||
|
||||
this.track('api', 'api_users_update_roles');
|
||||
this.track('api', 'api_teams_update_member_roles');
|
||||
}
|
||||
|
||||
updateActive(userId, active, success, error) {
|
||||
@@ -740,7 +759,7 @@ export default class Client {
|
||||
send(data).
|
||||
end(this.handleResponse.bind(this, 'updateActive', success, error));
|
||||
|
||||
this.track('api', 'api_users_update_roles');
|
||||
this.track('api', 'api_users_update_active');
|
||||
}
|
||||
|
||||
sendPasswordReset(email, success, error) {
|
||||
|
||||
@@ -20,13 +20,15 @@ export default class UserItem extends React.Component {
|
||||
this.handleRemoveFromTeam = this.handleRemoveFromTeam.bind(this);
|
||||
this.handleMakeActive = this.handleMakeActive.bind(this);
|
||||
this.handleMakeNotActive = this.handleMakeNotActive.bind(this);
|
||||
this.handleMakeAdmin = this.handleMakeAdmin.bind(this);
|
||||
this.handleMakeTeamAdmin = this.handleMakeTeamAdmin.bind(this);
|
||||
this.handleMakeSystemAdmin = this.handleMakeSystemAdmin.bind(this);
|
||||
this.handleResetPassword = this.handleResetPassword.bind(this);
|
||||
this.handleResetMfa = this.handleResetMfa.bind(this);
|
||||
this.handleDemote = this.handleDemote.bind(this);
|
||||
this.handleDemoteSystemAdmin = this.handleDemoteSystemAdmin.bind(this);
|
||||
this.handleDemoteSubmit = this.handleDemoteSubmit.bind(this);
|
||||
this.handleDemoteCancel = this.handleDemoteCancel.bind(this);
|
||||
this.doMakeMember = this.doMakeMember.bind(this);
|
||||
this.doMakeTeamAdmin = this.doMakeTeamAdmin.bind(this);
|
||||
|
||||
this.state = {
|
||||
serverError: null,
|
||||
@@ -36,23 +38,37 @@ export default class UserItem extends React.Component {
|
||||
};
|
||||
}
|
||||
|
||||
doMakeMember() {
|
||||
Client.updateUserRoles(
|
||||
this.props.user.id,
|
||||
'system_user',
|
||||
() => {
|
||||
this.props.refreshProfiles();
|
||||
},
|
||||
(err) => {
|
||||
this.setState({serverError: err.message});
|
||||
}
|
||||
);
|
||||
Client.updateTeamMemberRoles(
|
||||
this.props.team.id,
|
||||
this.props.user.id,
|
||||
'team_user',
|
||||
() => {
|
||||
this.props.refreshProfiles();
|
||||
},
|
||||
(err) => {
|
||||
this.setState({serverError: err.message});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
handleMakeMember(e) {
|
||||
e.preventDefault();
|
||||
const me = UserStore.getCurrentUser();
|
||||
if (this.props.user.id === me.id) {
|
||||
this.handleDemote(this.props.user, '');
|
||||
this.handleDemoteSystemAdmin(this.props.user, 'member');
|
||||
} else {
|
||||
Client.updateRoles(
|
||||
this.props.team.id,
|
||||
this.props.user.id,
|
||||
'',
|
||||
() => {
|
||||
this.props.refreshProfiles();
|
||||
},
|
||||
(err) => {
|
||||
this.setState({serverError: err.message});
|
||||
}
|
||||
);
|
||||
this.doMakeMember();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,31 +109,34 @@ export default class UserItem extends React.Component {
|
||||
);
|
||||
}
|
||||
|
||||
handleMakeAdmin(e) {
|
||||
doMakeTeamAdmin() {
|
||||
Client.updateTeamMemberRoles(
|
||||
this.props.team.id,
|
||||
this.props.user.id,
|
||||
'team_user team_admin',
|
||||
() => {
|
||||
this.props.refreshProfiles();
|
||||
},
|
||||
(err) => {
|
||||
this.setState({serverError: err.message});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
handleMakeTeamAdmin(e) {
|
||||
e.preventDefault();
|
||||
const me = UserStore.getCurrentUser();
|
||||
if (this.props.user.id === me.id) {
|
||||
this.handleDemote(this.props.user, 'team_user team_admin');
|
||||
this.handleDemoteSystemAdmin(this.props.user, 'teamadmin');
|
||||
} else {
|
||||
Client.updateRoles(
|
||||
this.props.team.id,
|
||||
this.props.user.id,
|
||||
'team_user team_admin',
|
||||
() => {
|
||||
this.props.refreshProfiles();
|
||||
},
|
||||
(err) => {
|
||||
this.setState({serverError: err.message});
|
||||
}
|
||||
);
|
||||
this.doMakeTeamAdmin();
|
||||
}
|
||||
}
|
||||
|
||||
handleMakeSystemAdmin(e) {
|
||||
e.preventDefault();
|
||||
|
||||
Client.updateRoles(
|
||||
this.props.team.id,
|
||||
Client.updateUserRoles(
|
||||
this.props.user.id,
|
||||
'system_user system_admin',
|
||||
() => {
|
||||
@@ -147,7 +166,7 @@ export default class UserItem extends React.Component {
|
||||
);
|
||||
}
|
||||
|
||||
handleDemote(user, role) {
|
||||
handleDemoteSystemAdmin(user, role) {
|
||||
this.setState({
|
||||
serverError: this.state.serverError,
|
||||
showDemoteModal: true,
|
||||
@@ -166,34 +185,19 @@ export default class UserItem extends React.Component {
|
||||
}
|
||||
|
||||
handleDemoteSubmit() {
|
||||
Client.updateRoles(
|
||||
this.props.team.id,
|
||||
this.props.user.id,
|
||||
this.state.role,
|
||||
() => {
|
||||
this.props.refreshProfiles();
|
||||
if (this.state.role === 'member') {
|
||||
this.doMakeMember();
|
||||
} else {
|
||||
this.doMakeTeamAdmin();
|
||||
}
|
||||
|
||||
this.setState({
|
||||
serverError: null,
|
||||
showDemoteModal: false,
|
||||
user: null,
|
||||
role: null
|
||||
});
|
||||
|
||||
const teamUrl = TeamStore.getCurrentTeamUrl();
|
||||
if (teamUrl) {
|
||||
// the channel is added to the URL cause endless loading not being fully fixed
|
||||
window.location.href = teamUrl + '/channels/town-square';
|
||||
} else {
|
||||
window.location.href = '/';
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
this.setState({
|
||||
serverError: err.message
|
||||
});
|
||||
}
|
||||
);
|
||||
const teamUrl = TeamStore.getCurrentTeamUrl();
|
||||
if (teamUrl) {
|
||||
// the channel is added to the URL cause endless loading not being fully fixed
|
||||
window.location.href = teamUrl + '/channels/town-square';
|
||||
} else {
|
||||
window.location.href = '/';
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
@@ -290,7 +294,7 @@ export default class UserItem extends React.Component {
|
||||
<a
|
||||
role='menuitem'
|
||||
href='#'
|
||||
onClick={this.handleMakeAdmin}
|
||||
onClick={this.handleMakeTeamAdmin}
|
||||
>
|
||||
<FormattedMessage
|
||||
id='admin.user_item.makeTeamAdmin'
|
||||
|
||||
@@ -39,7 +39,7 @@ export default class TeamMembersDropdown extends React.Component {
|
||||
if (this.props.user.id === me.id) {
|
||||
this.handleDemote(this.props.user, 'team_user');
|
||||
} else {
|
||||
Client.updateRoles(
|
||||
Client.updateTeamMemberRoles(
|
||||
this.props.teamMember.team_id,
|
||||
this.props.user.id,
|
||||
'team_user',
|
||||
@@ -95,7 +95,7 @@ export default class TeamMembersDropdown extends React.Component {
|
||||
if (this.props.user.id === me.id) {
|
||||
this.handleDemote(this.props.user, 'team_user team_admin');
|
||||
} else {
|
||||
Client.updateRoles(
|
||||
Client.updateTeamMemberRoles(
|
||||
this.props.teamMember.team_id,
|
||||
this.props.user.id,
|
||||
'team_user team_admin',
|
||||
@@ -128,7 +128,7 @@ export default class TeamMembersDropdown extends React.Component {
|
||||
});
|
||||
}
|
||||
handleDemoteSubmit() {
|
||||
Client.updateRoles(
|
||||
Client.updateTeamMemberRoles(
|
||||
this.props.teamMember.team_id,
|
||||
this.props.user.id,
|
||||
this.state.newRole,
|
||||
|
||||
@@ -240,5 +240,24 @@ describe('Client.Team', function() {
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateTeamMemberRoles', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
var team = TestHelper.basicTeam();
|
||||
|
||||
TestHelper.basicClient().updateTeamMemberRoles(
|
||||
team.id,
|
||||
user.id,
|
||||
'',
|
||||
function() {
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -211,21 +211,18 @@ describe('Client.User', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('updateRoles', function(done) {
|
||||
it('updateUserRoles', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
var team = TestHelper.basicTeam();
|
||||
|
||||
TestHelper.basicClient().updateRoles(
|
||||
team.id,
|
||||
TestHelper.basicClient().updateUserRoles(
|
||||
user.id,
|
||||
'',
|
||||
function(data) {
|
||||
assert.equal(data.user_id, user.id);
|
||||
done();
|
||||
function() {
|
||||
done(new Error('Not supposed to work'));
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
function() {
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
Ссылка в новой задаче
Block a user