summaryrefslogtreecommitdiffstats
path: root/webapp/components/admin_console
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/admin_console')
-rw-r--r--webapp/components/admin_console/team_users.jsx39
-rw-r--r--webapp/components/admin_console/user_item.jsx51
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
};