summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author=Corey Hulen <corey@hulen.com>2015-09-23 15:16:48 -0700
committer=Corey Hulen <corey@hulen.com>2015-09-23 15:16:48 -0700
commit985aebf86120188c2a14adfab39af7c4da3c1c9d (patch)
tree45f4421eec697be3750a59f298e97bf6c39ade79
parent7f3bfdbe0c2442714bb5a14adfdeac1576123601 (diff)
downloadchat-985aebf86120188c2a14adfab39af7c4da3c1c9d.tar.gz
chat-985aebf86120188c2a14adfab39af7c4da3c1c9d.tar.bz2
chat-985aebf86120188c2a14adfab39af7c4da3c1c9d.zip
Fixing state setting
-rw-r--r--api/user.go4
-rw-r--r--web/react/components/admin_console/admin_sidebar.jsx24
-rw-r--r--web/react/components/admin_console/reset_password_modal.jsx12
-rw-r--r--web/react/components/admin_console/team_users.jsx55
-rw-r--r--web/react/components/admin_console/user_item.jsx40
5 files changed, 102 insertions, 33 deletions
diff --git a/api/user.go b/api/user.go
index 5be703bfb..2edbde3e2 100644
--- a/api/user.go
+++ b/api/user.go
@@ -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
}
diff --git a/web/react/components/admin_console/admin_sidebar.jsx b/web/react/components/admin_console/admin_sidebar.jsx
index 375a6a8e9..cebb3ff20 100644
--- a/web/react/components/admin_console/admin_sidebar.jsx
+++ b/web/react/components/admin_console/admin_sidebar.jsx
@@ -195,15 +195,6 @@ export default class AdminSidebar extends React.Component {
<li>
<a
href='#'
- className={this.isSelected('logs')}
- onClick={this.handleClick.bind(this, 'logs', null)}
- >
- {'Logs'}
- </a>
- </li>
- <li>
- <a
- href='#'
className={this.isSelected('rate_settings')}
onClick={this.handleClick.bind(this, 'rate_settings', null)}
>
@@ -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>
diff --git a/web/react/components/admin_console/reset_password_modal.jsx b/web/react/components/admin_console/reset_password_modal.jsx
index 4aa86dfcb..0b83edb17 100644
--- a/web/react/components/admin_console/reset_password_modal.jsx
+++ b/web/react/components/admin_console/reset_password_modal.jsx
@@ -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();
}
diff --git a/web/react/components/admin_console/team_users.jsx b/web/react/components/admin_console/team_users.jsx
index 088a44932..0a971ff15 100644
--- a/web/react/components/admin_console/team_users.jsx
+++ b/web/react/components/admin_console/team_users.jsx
@@ -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) {
diff --git a/web/react/components/admin_console/user_item.jsx b/web/react/components/admin_console/user_item.jsx
index ff204e1d9..32812e875 100644
--- a/web/react/components/admin_console/user_item.jsx
+++ b/web/react/components/admin_console/user_item.jsx
@@ -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'