Merge pull request #947 from mattermost/PLT-435

PLT-435 adding ability to demote system admin
Этот коммит содержится в:
Christopher Speller
2015-10-07 08:30:57 -04:00
родитель 2cd546370f 3b4b79d99f
Коммит cf9ce772c2
3 изменённых файлов: 31 добавлений и 22 удалений

Просмотреть файл

@@ -991,7 +991,7 @@ func updateRoles(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if model.IsInRole(new_roles, model.ROLE_SYSTEM_ADMIN) && !c.IsSystemAdmin() { 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 = 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
} }
@@ -1014,6 +1014,12 @@ func updateRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if user.IsInRole(model.ROLE_SYSTEM_ADMIN) && !c.IsSystemAdmin() {
c.Err = model.NewAppError("updateRoles", "The system admin role can only by modified by another system admin", "")
c.Err.StatusCode = http.StatusForbidden
return
}
ruser := UpdateRoles(c, user, new_roles) ruser := UpdateRoles(c, user, new_roles)
if c.Err != nil { if c.Err != nil {
return return

Просмотреть файл

@@ -126,7 +126,6 @@ export default class UserItem extends React.Component {
let showMakeNotActive = user.roles !== 'system_admin'; let showMakeNotActive = user.roles !== 'system_admin';
if (user.delete_at > 0) { if (user.delete_at > 0) {
currentRoles = 'Inactive';
currentRoles = 'Inactive'; currentRoles = 'Inactive';
showMakeMember = false; showMakeMember = false;
showMakeAdmin = false; showMakeAdmin = false;

Просмотреть файл

@@ -24,32 +24,32 @@ export default class MemberListTeamItem extends React.Component {
}; };
Client.updateRoles(data, Client.updateRoles(data,
function handleMakeMemberSuccess() { () => {
AsyncClient.getProfiles(); AsyncClient.getProfiles();
}, },
function handleMakeMemberError(err) { (err) => {
this.setState({serverError: err.message}); this.setState({serverError: err.message});
}.bind(this) }
); );
} }
handleMakeActive() { handleMakeActive() {
Client.updateActive(this.props.user.id, true, Client.updateActive(this.props.user.id, true,
function handleMakeActiveSuccess() { () => {
AsyncClient.getProfiles(); AsyncClient.getProfiles();
}, },
function handleMakeActiveError(err) { (err) => {
this.setState({serverError: err.message}); this.setState({serverError: err.message});
}.bind(this) }
); );
} }
handleMakeNotActive() { handleMakeNotActive() {
Client.updateActive(this.props.user.id, false, Client.updateActive(this.props.user.id, false,
function handleMakeNotActiveSuccess() { () => {
AsyncClient.getProfiles(); AsyncClient.getProfiles();
}, },
function handleMakeNotActiveError(err) { (err) => {
this.setState({serverError: err.message}); this.setState({serverError: err.message});
}.bind(this) }
); );
} }
handleMakeAdmin() { handleMakeAdmin() {
@@ -59,12 +59,12 @@ export default class MemberListTeamItem extends React.Component {
}; };
Client.updateRoles(data, Client.updateRoles(data,
function handleMakeAdminSuccess() { () => {
AsyncClient.getProfiles(); AsyncClient.getProfiles();
}, },
function handleMakeAdmitError(err) { (err) => {
this.setState({serverError: err.message}); this.setState({serverError: err.message});
}.bind(this) }
); );
} }
render() { render() {
@@ -82,14 +82,18 @@ export default class MemberListTeamItem extends React.Component {
const timestamp = UserStore.getCurrentUser().update_at; const timestamp = UserStore.getCurrentUser().update_at;
if (user.roles.length > 0) { if (user.roles.length > 0) {
currentRoles = user.roles.charAt(0).toUpperCase() + user.roles.slice(1); if (user.roles.indexOf('system_admin') > -1) {
currentRoles = 'System Admin';
} else {
currentRoles = user.roles.charAt(0).toUpperCase() + user.roles.slice(1);
}
} }
const email = user.email; const email = user.email;
let showMakeMember = user.roles === 'admin'; let showMakeMember = user.roles === 'admin' || user.roles === 'system_admin';
let showMakeAdmin = user.roles === ''; let showMakeAdmin = user.roles === '' || user.roles === 'system_admin';
let showMakeActive = false; let showMakeActive = false;
let showMakeNotActive = true; let showMakeNotActive = user.roles !== 'system_admin';
if (user.delete_at > 0) { if (user.delete_at > 0) {
currentRoles = 'Inactive'; currentRoles = 'Inactive';
@@ -108,7 +112,7 @@ export default class MemberListTeamItem extends React.Component {
href='#' href='#'
onClick={this.handleMakeAdmin} onClick={this.handleMakeAdmin}
> >
Make Admin {'Make Admin'}
</a> </a>
</li> </li>
); );
@@ -123,7 +127,7 @@ export default class MemberListTeamItem extends React.Component {
href='#' href='#'
onClick={this.handleMakeMember} onClick={this.handleMakeMember}
> >
Make Member {'Make Member'}
</a> </a>
</li> </li>
); );
@@ -138,7 +142,7 @@ export default class MemberListTeamItem extends React.Component {
href='#' href='#'
onClick={this.handleMakeActive} onClick={this.handleMakeActive}
> >
Make Active {'Make Active'}
</a> </a>
</li> </li>
); );
@@ -153,7 +157,7 @@ export default class MemberListTeamItem extends React.Component {
href='#' href='#'
onClick={this.handleMakeNotActive} onClick={this.handleMakeNotActive}
> >
Make Inactive {'Make Inactive'}
</a> </a>
</li> </li>
); );