PLT-2697 Fixing team admins (#2900)
* PLT-2697 Fixing team admins * Fixing eslint error * Fixing loc issues * Fixing func * Fixing func
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
4f799b980f
Коммит
6c75662b82
@@ -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}
|
||||
/>);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
if (teamMember.roles.length > 0 && Utils.isAdmin(teamMember.roles)) {
|
||||
currentRoles = (
|
||||
<FormattedMessage
|
||||
id='team_members_dropdown.teamAdmin'
|
||||
defaultMessage='Team Admin'
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
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 = user.roles === 'admin' || user.roles === 'system_admin';
|
||||
|
||||
//let showMakeAdmin = user.roles === '' || user.roles === 'system_admin';
|
||||
let showMakeAdmin = false;
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
Ссылка в новой задаче
Block a user