Fixing state setting

This commit is contained in:
=Corey Hulen
2015-09-23 15:16:48 -07:00
parent 7f3bfdbe0c
commit 985aebf861
5 changed files with 102 additions and 33 deletions

View File

@@ -938,8 +938,8 @@ func updateRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if model.IsInRole(new_roles, model.ROLE_SYSTEM_ADMIN) {
c.Err = model.NewAppError("updateRoles", "The system_admin role can only be set from the command line", "")
if model.IsInRole(new_roles, model.ROLE_SYSTEM_ADMIN) && !c.IsSystemAdmin() {
c.Err = model.NewAppError("updateRoles", "The system_admin role can only be set by another system admin", "")
c.Err.StatusCode = http.StatusForbidden
return
}

View File

@@ -192,15 +192,6 @@ export default class AdminSidebar extends React.Component {
{'Log Settings'}
</a>
</li>
<li>
<a
href='#'
className={this.isSelected('logs')}
onClick={this.handleClick.bind(this, 'logs', null)}
>
{'Logs'}
</a>
</li>
<li>
<a
href='#'
@@ -245,6 +236,21 @@ export default class AdminSidebar extends React.Component {
<li>
{teams}
</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>
</li>
</ul>

View File

@@ -21,13 +21,11 @@ export default class ResetPasswordModal extends React.Component {
var password = React.findDOMNode(this.refs.password).value;
if (!password || password.length < 5) {
this.state.serverError = 'Please enter at least 5 characters.';
this.setState(this.state);
this.setState({serverError: 'Please enter at least 5 characters.'});
return;
}
this.state.serverError = null;
this.setState(this.state);
this.setState({serverError: null});
var data = {};
data.new_password = password;
@@ -39,15 +37,13 @@ export default class ResetPasswordModal extends React.Component {
this.props.onModalSubmit(React.findDOMNode(this.refs.password).value);
},
(err) => {
this.state.serverError = err.message;
this.setState(this.state);
this.setState({serverError: err.message});
}
);
}
doCancel() {
this.state.serverError = null;
this.setState(this.state);
this.setState({serverError: null});
this.props.onModalDismissed();
}

View File

@@ -33,6 +33,14 @@ export default class UserList extends React.Component {
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) {
Client.getProfilesForTeam(
teamId,
@@ -56,33 +64,56 @@ export default class UserList extends React.Component {
return 0;
});
this.state.users = memberList;
this.setState(this.state);
this.setState({
teamId: this.state.teamId,
users: memberList,
serverError: this.state.serverError,
showPasswordModal: this.state.showPasswordModal,
user: this.state.user
});
},
(err) => {
this.state.serverError = err.message;
this.state.users = null;
this.setState(this.state);
this.setState({
teamId: this.state.teamId,
users: null,
serverError: err.message,
showPasswordModal: this.state.showPasswordModal,
user: this.state.user
});
}
);
}
doPasswordReset(user) {
this.state.showPasswordModal = true;
this.state.user = user;
this.setState(this.state);
this.setState({
teamId: this.state.teamId,
users: this.state.users,
serverError: this.state.serverError,
showPasswordModal: true,
user
});
}
doPasswordResetDismiss() {
this.state.showPasswordModal = false;
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() {
this.state.showPasswordModal = false;
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
});
}
componentWillReceiveProps(newProps) {

View File

@@ -12,6 +12,7 @@ export default class UserItem extends React.Component {
this.handleMakeActive = this.handleMakeActive.bind(this);
this.handleMakeNotActive = this.handleMakeNotActive.bind(this);
this.handleMakeAdmin = this.handleMakeAdmin.bind(this);
this.handleMakeSystemAdmin = this.handleMakeSystemAdmin.bind(this);
this.handleResetPassword = this.handleResetPassword.bind(this);
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) {
e.preventDefault();
this.props.doPasswordReset(this.props.user);
@@ -101,8 +119,9 @@ export default class UserItem extends React.Component {
}
const email = user.email;
let showMakeMember = (user.roles === 'admin') || user.roles === 'system_admin';
let showMakeAdmin = (user.roles === '') || user.roles === 'system_admin';
let showMakeMember = user.roles === 'admin' || user.roles === 'system_admin';
let showMakeAdmin = user.roles === '' || user.roles === 'system_admin';
let showMakeSystemAdmin = user.roles === '' || user.roles === 'admin';
let showMakeActive = false;
let showMakeNotActive = user.roles !== 'system_admin';
@@ -111,10 +130,26 @@ export default class UserItem extends React.Component {
currentRoles = 'Inactive';
showMakeMember = false;
showMakeAdmin = false;
showMakeSystemAdmin = false;
showMakeActive = true;
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;
if (showMakeAdmin) {
makeAdmin = (
@@ -206,6 +241,7 @@ export default class UserItem extends React.Component {
{makeMember}
{makeActive}
{makeNotActive}
{makeSystemAdmin}
<li role='presentation'>
<a
role='menuitem'