summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
Diffstat (limited to 'webapp')
-rw-r--r--webapp/client/client.jsx31
-rw-r--r--webapp/components/admin_console/user_item.jsx120
-rw-r--r--webapp/components/team_members_dropdown.jsx6
-rw-r--r--webapp/tests/client_team.test.jsx19
-rw-r--r--webapp/tests/client_user.test.jsx15
5 files changed, 115 insertions, 76 deletions
diff --git a/webapp/client/client.jsx b/webapp/client/client.jsx
index 544eb4980..4cd9c7c7c 100644
--- a/webapp/client/client.jsx
+++ b/webapp/client/client.jsx
@@ -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) {
diff --git a/webapp/components/admin_console/user_item.jsx b/webapp/components/admin_console/user_item.jsx
index 78fdb085c..632233309 100644
--- a/webapp/components/admin_console/user_item.jsx
+++ b/webapp/components/admin_console/user_item.jsx
@@ -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'
diff --git a/webapp/components/team_members_dropdown.jsx b/webapp/components/team_members_dropdown.jsx
index 6b9390ade..8450551a9 100644
--- a/webapp/components/team_members_dropdown.jsx
+++ b/webapp/components/team_members_dropdown.jsx
@@ -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,
diff --git a/webapp/tests/client_team.test.jsx b/webapp/tests/client_team.test.jsx
index 389a6ef50..157a2f4a5 100644
--- a/webapp/tests/client_team.test.jsx
+++ b/webapp/tests/client_team.test.jsx
@@ -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));
+ }
+ );
+ });
+ });
});
diff --git a/webapp/tests/client_user.test.jsx b/webapp/tests/client_user.test.jsx
index 6c65e8ef5..48a0150d4 100644
--- a/webapp/tests/client_user.test.jsx
+++ b/webapp/tests/client_user.test.jsx
@@ -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();
}
);
});