From 6c75662b824491a20a757a5eec59556a866374b5 Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Fri, 6 May 2016 11:28:22 -0700 Subject: PLT-2697 Fixing team admins (#2900) * PLT-2697 Fixing team admins * Fixing eslint error * Fixing loc issues * Fixing func * Fixing func --- webapp/components/admin_console/team_users.jsx | 39 +++++++++++++++++++- webapp/components/admin_console/user_item.jsx | 51 ++++++++++++++------------ 2 files changed, 66 insertions(+), 24 deletions(-) (limited to 'webapp/components/admin_console') diff --git a/webapp/components/admin_console/team_users.jsx b/webapp/components/admin_console/team_users.jsx index 2b0e6af0a..e41747737 100644 --- a/webapp/components/admin_console/team_users.jsx +++ b/webapp/components/admin_console/team_users.jsx @@ -19,10 +19,12 @@ export default class UserList extends React.Component { this.doPasswordReset = this.doPasswordReset.bind(this); this.doPasswordResetDismiss = this.doPasswordResetDismiss.bind(this); this.doPasswordResetSubmit = this.doPasswordResetSubmit.bind(this); + this.getTeamMemberForUser = this.getTeamMemberForUser.bind(this); this.state = { teamId: props.team.id, users: null, + teamMembers: null, serverError: null, showPasswordModal: false, user: null @@ -38,6 +40,21 @@ export default class UserList extends React.Component { } getTeamProfiles(teamId) { + Client.getTeamMembers( + teamId, + (data) => { + this.setState({ + teamMembers: data + }); + }, + (err) => { + this.setState({ + teamMembers: null, + serverError: err.message + }); + } + ); + Client.getProfilesForTeam( teamId, (users) => { @@ -110,6 +127,22 @@ export default class UserList extends React.Component { }); } + getTeamMemberForUser(userId) { + if (this.state.teamMembers) { + for (const index in this.state.teamMembers) { + if (this.state.teamMembers.hasOwnProperty(index)) { + var teamMember = this.state.teamMembers[index]; + + if (teamMember.user_id === userId) { + return teamMember; + } + } + } + } + + return null; + } + componentWillReceiveProps(newProps) { this.getTeamProfiles(newProps.team.id); } @@ -120,7 +153,7 @@ export default class UserList extends React.Component { serverError =
; } - if (this.state.users == null) { + if (this.state.users == null || this.state.teamMembers == null) { return (

@@ -139,10 +172,14 @@ export default class UserList extends React.Component { } var memberList = this.state.users.map((user) => { + var teamMember = this.getTeamMemberForUser(user.id); + return ( ); diff --git a/webapp/components/admin_console/user_item.jsx b/webapp/components/admin_console/user_item.jsx index 660f75a41..ef6bd9f45 100644 --- a/webapp/components/admin_console/user_item.jsx +++ b/webapp/components/admin_console/user_item.jsx @@ -42,6 +42,7 @@ export default class UserItem extends React.Component { this.handleDemote(this.props.user, ''); } else { Client.updateRoles( + this.props.team.id, this.props.user.id, '', () => { @@ -85,6 +86,7 @@ export default class UserItem extends React.Component { this.handleDemote(this.props.user, 'admin'); } else { Client.updateRoles( + this.props.team.id, this.props.user.id, 'admin', () => { @@ -101,6 +103,7 @@ export default class UserItem extends React.Component { e.preventDefault(); Client.updateRoles( + this.props.team.id, this.props.user.id, 'system_admin', () => { @@ -150,9 +153,12 @@ export default class UserItem extends React.Component { handleDemoteSubmit() { Client.updateRoles( + this.props.team.id, this.props.user.id, this.state.role, () => { + this.props.refreshProfiles(); + this.setState({ serverError: null, showDemoteModal: false, @@ -185,6 +191,7 @@ export default class UserItem extends React.Component { ); } + const teamMember = this.props.teamMember; const user = this.props.user; let currentRoles = ( ); - if (user.roles.length > 0) { - if (Utils.isSystemAdmin(user.roles)) { - currentRoles = ( - - ); - } else if (Utils.isAdmin(user.roles)) { - currentRoles = ( - - ); - } else { - currentRoles = user.roles.charAt(0).toUpperCase() + user.roles.slice(1); - } - } - const email = user.email; - let showMakeMember = user.roles === 'admin' || user.roles === 'system_admin'; + if (teamMember.roles.length > 0 && Utils.isAdmin(teamMember.roles)) { + currentRoles = ( + + ); + } - //let showMakeAdmin = user.roles === '' || user.roles === 'system_admin'; - let showMakeAdmin = false; + if (user.roles.length > 0 && Utils.isSystemAdmin(user.roles)) { + currentRoles = ( + + ); + } + const email = user.email; + let showMakeMember = teamMember.roles === 'admin' || user.roles === 'system_admin'; + let showMakeAdmin = teamMember.roles === '' && user.roles !== 'system_admin'; let showMakeSystemAdmin = user.roles === '' || user.roles === 'admin'; let showMakeActive = false; let showMakeNotActive = user.roles !== 'system_admin'; @@ -521,7 +524,9 @@ export default class UserItem extends React.Component { } UserItem.propTypes = { + team: React.PropTypes.object.isRequired, user: React.PropTypes.object.isRequired, + teamMember: React.PropTypes.object.isRequired, refreshProfiles: React.PropTypes.func.isRequired, doPasswordReset: React.PropTypes.func.isRequired }; -- cgit v1.2.3-1-g7c22