Fixing state setting
Этот коммит содержится в:
@@ -938,8 +938,8 @@ func updateRoles(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if model.IsInRole(new_roles, model.ROLE_SYSTEM_ADMIN) {
|
if model.IsInRole(new_roles, model.ROLE_SYSTEM_ADMIN) && !c.IsSystemAdmin() {
|
||||||
c.Err = model.NewAppError("updateRoles", "The system_admin role can only be set from the command line", "")
|
c.Err = model.NewAppError("updateRoles", "The system_admin role can only be set by another system admin", "")
|
||||||
c.Err.StatusCode = http.StatusForbidden
|
c.Err.StatusCode = http.StatusForbidden
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -192,15 +192,6 @@ export default class AdminSidebar extends React.Component {
|
|||||||
{'Log Settings'}
|
{'Log Settings'}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href='#'
|
|
||||||
className={this.isSelected('logs')}
|
|
||||||
onClick={this.handleClick.bind(this, 'logs', null)}
|
|
||||||
>
|
|
||||||
{'Logs'}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href='#'
|
href='#'
|
||||||
@@ -245,6 +236,21 @@ export default class AdminSidebar extends React.Component {
|
|||||||
<li>
|
<li>
|
||||||
{teams}
|
{teams}
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<h4>
|
||||||
|
<span className='icon fa fa-gear'></span>
|
||||||
|
<span>{'OTHER'}</span>
|
||||||
|
</h4>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href='#'
|
||||||
|
className={this.isSelected('logs')}
|
||||||
|
onClick={this.handleClick.bind(this, 'logs', null)}
|
||||||
|
>
|
||||||
|
{'Logs'}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -21,13 +21,11 @@ export default class ResetPasswordModal extends React.Component {
|
|||||||
var password = React.findDOMNode(this.refs.password).value;
|
var password = React.findDOMNode(this.refs.password).value;
|
||||||
|
|
||||||
if (!password || password.length < 5) {
|
if (!password || password.length < 5) {
|
||||||
this.state.serverError = 'Please enter at least 5 characters.';
|
this.setState({serverError: 'Please enter at least 5 characters.'});
|
||||||
this.setState(this.state);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.state.serverError = null;
|
this.setState({serverError: null});
|
||||||
this.setState(this.state);
|
|
||||||
|
|
||||||
var data = {};
|
var data = {};
|
||||||
data.new_password = password;
|
data.new_password = password;
|
||||||
@@ -39,15 +37,13 @@ export default class ResetPasswordModal extends React.Component {
|
|||||||
this.props.onModalSubmit(React.findDOMNode(this.refs.password).value);
|
this.props.onModalSubmit(React.findDOMNode(this.refs.password).value);
|
||||||
},
|
},
|
||||||
(err) => {
|
(err) => {
|
||||||
this.state.serverError = err.message;
|
this.setState({serverError: err.message});
|
||||||
this.setState(this.state);
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
doCancel() {
|
doCancel() {
|
||||||
this.state.serverError = null;
|
this.setState({serverError: null});
|
||||||
this.setState(this.state);
|
|
||||||
this.props.onModalDismissed();
|
this.props.onModalDismissed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,14 @@ export default class UserList extends React.Component {
|
|||||||
this.getTeamProfiles(this.props.team.id);
|
this.getTeamProfiles(this.props.team.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this.setState({
|
||||||
|
// teamId: this.state.teamId,
|
||||||
|
// users: this.state.users,
|
||||||
|
// serverError: this.state.serverError,
|
||||||
|
// showPasswordModal: this.state.showPasswordModal,
|
||||||
|
// user: this.state.user
|
||||||
|
// });
|
||||||
|
|
||||||
getTeamProfiles(teamId) {
|
getTeamProfiles(teamId) {
|
||||||
Client.getProfilesForTeam(
|
Client.getProfilesForTeam(
|
||||||
teamId,
|
teamId,
|
||||||
@@ -56,33 +64,56 @@ export default class UserList extends React.Component {
|
|||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.state.users = memberList;
|
this.setState({
|
||||||
this.setState(this.state);
|
teamId: this.state.teamId,
|
||||||
|
users: memberList,
|
||||||
|
serverError: this.state.serverError,
|
||||||
|
showPasswordModal: this.state.showPasswordModal,
|
||||||
|
user: this.state.user
|
||||||
|
});
|
||||||
},
|
},
|
||||||
(err) => {
|
(err) => {
|
||||||
this.state.serverError = err.message;
|
this.setState({
|
||||||
this.state.users = null;
|
teamId: this.state.teamId,
|
||||||
this.setState(this.state);
|
users: null,
|
||||||
|
serverError: err.message,
|
||||||
|
showPasswordModal: this.state.showPasswordModal,
|
||||||
|
user: this.state.user
|
||||||
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
doPasswordReset(user) {
|
doPasswordReset(user) {
|
||||||
this.state.showPasswordModal = true;
|
this.setState({
|
||||||
this.state.user = user;
|
teamId: this.state.teamId,
|
||||||
this.setState(this.state);
|
users: this.state.users,
|
||||||
|
serverError: this.state.serverError,
|
||||||
|
showPasswordModal: true,
|
||||||
|
user
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
doPasswordResetDismiss() {
|
doPasswordResetDismiss() {
|
||||||
this.state.showPasswordModal = false;
|
this.state.showPasswordModal = false;
|
||||||
this.state.user = null;
|
this.state.user = null;
|
||||||
this.setState(this.state);
|
this.setState({
|
||||||
|
teamId: this.state.teamId,
|
||||||
|
users: this.state.users,
|
||||||
|
serverError: this.state.serverError,
|
||||||
|
showPasswordModal: false,
|
||||||
|
user: null
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
doPasswordResetSubmit() {
|
doPasswordResetSubmit() {
|
||||||
this.state.showPasswordModal = false;
|
this.setState({
|
||||||
this.state.user = null;
|
teamId: this.state.teamId,
|
||||||
this.setState(this.state);
|
users: this.state.users,
|
||||||
|
serverError: this.state.serverError,
|
||||||
|
showPasswordModal: false,
|
||||||
|
user: null
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(newProps) {
|
componentWillReceiveProps(newProps) {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export default class UserItem extends React.Component {
|
|||||||
this.handleMakeActive = this.handleMakeActive.bind(this);
|
this.handleMakeActive = this.handleMakeActive.bind(this);
|
||||||
this.handleMakeNotActive = this.handleMakeNotActive.bind(this);
|
this.handleMakeNotActive = this.handleMakeNotActive.bind(this);
|
||||||
this.handleMakeAdmin = this.handleMakeAdmin.bind(this);
|
this.handleMakeAdmin = this.handleMakeAdmin.bind(this);
|
||||||
|
this.handleMakeSystemAdmin = this.handleMakeSystemAdmin.bind(this);
|
||||||
this.handleResetPassword = this.handleResetPassword.bind(this);
|
this.handleResetPassword = this.handleResetPassword.bind(this);
|
||||||
|
|
||||||
this.state = {};
|
this.state = {};
|
||||||
@@ -75,6 +76,23 @@ export default class UserItem extends React.Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleMakeSystemAdmin(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const data = {
|
||||||
|
user_id: this.props.user.id,
|
||||||
|
new_roles: 'system_admin'
|
||||||
|
};
|
||||||
|
|
||||||
|
Client.updateRoles(data,
|
||||||
|
() => {
|
||||||
|
this.props.refreshProfiles();
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
this.setState({serverError: err.message});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
handleResetPassword(e) {
|
handleResetPassword(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this.props.doPasswordReset(this.props.user);
|
this.props.doPasswordReset(this.props.user);
|
||||||
@@ -101,8 +119,9 @@ export default class UserItem extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const email = user.email;
|
const email = user.email;
|
||||||
let showMakeMember = (user.roles === 'admin') || user.roles === 'system_admin';
|
let showMakeMember = user.roles === 'admin' || user.roles === 'system_admin';
|
||||||
let showMakeAdmin = (user.roles === '') || user.roles === 'system_admin';
|
let showMakeAdmin = user.roles === '' || user.roles === 'system_admin';
|
||||||
|
let showMakeSystemAdmin = user.roles === '' || user.roles === 'admin';
|
||||||
let showMakeActive = false;
|
let showMakeActive = false;
|
||||||
let showMakeNotActive = user.roles !== 'system_admin';
|
let showMakeNotActive = user.roles !== 'system_admin';
|
||||||
|
|
||||||
@@ -111,10 +130,26 @@ export default class UserItem extends React.Component {
|
|||||||
currentRoles = 'Inactive';
|
currentRoles = 'Inactive';
|
||||||
showMakeMember = false;
|
showMakeMember = false;
|
||||||
showMakeAdmin = false;
|
showMakeAdmin = false;
|
||||||
|
showMakeSystemAdmin = false;
|
||||||
showMakeActive = true;
|
showMakeActive = true;
|
||||||
showMakeNotActive = false;
|
showMakeNotActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let makeSystemAdmin = null;
|
||||||
|
if (showMakeSystemAdmin) {
|
||||||
|
makeSystemAdmin = (
|
||||||
|
<li role='presentation'>
|
||||||
|
<a
|
||||||
|
role='menuitem'
|
||||||
|
href='#'
|
||||||
|
onClick={this.handleMakeSystemAdmin}
|
||||||
|
>
|
||||||
|
{'Make System Admin'}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let makeAdmin = null;
|
let makeAdmin = null;
|
||||||
if (showMakeAdmin) {
|
if (showMakeAdmin) {
|
||||||
makeAdmin = (
|
makeAdmin = (
|
||||||
@@ -206,6 +241,7 @@ export default class UserItem extends React.Component {
|
|||||||
{makeMember}
|
{makeMember}
|
||||||
{makeActive}
|
{makeActive}
|
||||||
{makeNotActive}
|
{makeNotActive}
|
||||||
|
{makeSystemAdmin}
|
||||||
<li role='presentation'>
|
<li role='presentation'>
|
||||||
<a
|
<a
|
||||||
role='menuitem'
|
role='menuitem'
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user