diff options
Diffstat (limited to 'webapp/components/admin_console')
-rw-r--r-- | webapp/components/admin_console/team_users.jsx | 39 | ||||
-rw-r--r-- | webapp/components/admin_console/user_item.jsx | 51 |
2 files changed, 66 insertions, 24 deletions
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 = <div className='form-group has-error'><label className='control-label'>{this.state.serverError}</label></div>; } - if (this.state.users == null) { + if (this.state.users == null || this.state.teamMembers == null) { return ( <div className='wrapper--fixed'> <h3> @@ -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 ( <UserItem + team={this.props.team} key={'user_' + user.id} user={user} + teamMember={teamMember} refreshProfiles={this.getCurrentTeamProfiles} doPasswordReset={this.doPasswordReset} />); 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 = ( <FormattedMessage @@ -192,32 +199,28 @@ export default class UserItem extends React.Component { defaultMessage='Member' /> ); - if (user.roles.length > 0) { - if (Utils.isSystemAdmin(user.roles)) { - currentRoles = ( - <FormattedMessage - id='admin.user_item.sysAdmin' - defaultMessage='System Admin' - /> - ); - } else if (Utils.isAdmin(user.roles)) { - currentRoles = ( - <FormattedMessage - id='admin.user_item.teamAdmin' - defaultMessage='Team Admin' - /> - ); - } 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 = ( + <FormattedMessage + id='team_members_dropdown.teamAdmin' + defaultMessage='Team Admin' + /> + ); + } - //let showMakeAdmin = user.roles === '' || user.roles === 'system_admin'; - let showMakeAdmin = false; + if (user.roles.length > 0 && Utils.isSystemAdmin(user.roles)) { + currentRoles = ( + <FormattedMessage + id='team_members_dropdown.systemAdmin' + defaultMessage='System Admin' + /> + ); + } + 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 }; |