fix unsafe roles being usable, begin work on role/server editor

This commit is contained in:
Katalina / stardust 2017-12-24 03:22:41 -06:00
parent d1f556b0f0
commit bd15a812e5
20 changed files with 343 additions and 92 deletions

View file

@ -2,10 +2,12 @@ import React, { Component, Fragment } from 'react'
import { connect } from 'react-redux'
import superagent from 'superagent'
import * as Actions from './actions'
import * as UIActions from '../../actions/ui'
import './RolePicker.sass'
import Category from './Category'
import { Scrollbars } from 'react-custom-scrollbars';
import { Link } from 'react-router-dom';
const mapState = ({ rolePicker, servers }, ownProps) => {
return {
@ -24,7 +26,7 @@ class RolePicker extends Component {
componentWillReceiveProps (nextProps) {
if (this.props.match.params.server !== nextProps.match.params.server) {
const { dispatch } = this.props
dispatch(Actions.setup(nextProps.match.params.server))
dispatch(UIActions.fadeOut(() => dispatch(Actions.setup(nextProps.match.params.server))))
}
}
@ -37,6 +39,29 @@ class RolePicker extends Component {
return !data.get('rolesSelected').equals(data.get('originalRolesSelected'))
}
renderServerMessage (server) {
const roleManager = server.getIn(['perms', 'canManageRoles'])
const msg = server.get('message')
if (!roleManager && msg !== '') {
return <section>
<h3>Server Message</h3>
<p>{msg}</p>
</section>
}
if (roleManager) {
return <section>
<div className="role-picker__header">
<h3>Server Message</h3>
<Link to={`/s/${server.get('id')}/edit`} uk-tooltip='' title='Edit' uk-icon="icon: file-edit"></Link>
</div>
<p>{msg || <i>no server message</i>}</p>
</section>
}
return null
}
render () {
const { data, server, dispatch } = this.props
const vm = data.get('viewMap')
@ -46,16 +71,9 @@ class RolePicker extends Component {
}
return <div className={`inner role-picker ${(data.get('hidden')) ? 'hidden' : ''}`}>
{/* <Scrollbars> */}
{ (server.get('message') !== '')
? <section>
<h3>Server Message</h3>
<p>{server.get('message')}</p>
</section>
: null
}
{ this.renderServerMessage(server) }
<section>
<div className="role-picker__roles-header">
<div className="role-picker__header">
<h3>Roles</h3>
<div className="role-picker__spacer"></div>
<div className={`role-picker__actions ${(!this.rolesHaveChanged) ? 'hidden' : ''}`}>
@ -69,12 +87,10 @@ class RolePicker extends Component {
</div>
<div className="role-picker__categories">
{
vm.map((c, name) => <Category name={name} category={c} isSelected={this.isSelected} onChange={(roles) => dispatch(Actions.updateRoles(roles))} />).toArray()
vm.map((c, name) => <Category key={name} name={name} category={c} isSelected={this.isSelected} onChange={(roles) => dispatch(Actions.updateRoles(roles))} />).toArray()
}
</div>
</section>
{/* </Scrollbars> */}
</div>
}
}