diff options
Diffstat (limited to 'webapp')
-rw-r--r-- | webapp/client/client.jsx | 31 | ||||
-rw-r--r-- | webapp/components/admin_console/user_item.jsx | 120 | ||||
-rw-r--r-- | webapp/components/team_members_dropdown.jsx | 6 | ||||
-rw-r--r-- | webapp/tests/client_team.test.jsx | 19 | ||||
-rw-r--r-- | webapp/tests/client_user.test.jsx | 15 |
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(); } ); }); |