Avoid listing without permissions from client side

This commit is contained in:
joker-x 2020-08-30 16:07:15 +02:00
parent e8bad80e59
commit 564c0ce4f9
6 changed files with 39 additions and 5 deletions

View file

@ -37,6 +37,7 @@ import {getCampaignLabels, ListsSelectorHelper} from "../campaigns/helpers";
import {withComponentMixins} from "../lib/decorator-helpers"; import {withComponentMixins} from "../lib/decorator-helpers";
import interoperableErrors from "../../../shared/interoperable-errors"; import interoperableErrors from "../../../shared/interoperable-errors";
import {Trans} from "react-i18next"; import {Trans} from "react-i18next";
import mailtrainConfig from 'mailtrainConfig';
@withComponentMixins([ @withComponentMixins([
withTranslation, withTranslation,
@ -254,6 +255,10 @@ export default class CUD extends Component {
} }
componentDidMount() { componentDidMount() {
const t = this.props.t;
if (!mailtrainConfig.user.admin && !mailtrainConfig.globalPermissions.manageChannels) {
this.navigateToWithFlashMessage('/', 'danger', t('permissionDenied')+': manageChannels');
}
if (this.props.entity) { if (this.props.entity) {
this.getFormValuesFromEntity(this.props.entity); this.getFormValuesFromEntity(this.props.entity);

View file

@ -10,6 +10,7 @@ import {tableAddDeleteButton, tableRestActionDialogInit, tableRestActionDialogRe
import {withComponentMixins} from "../lib/decorator-helpers"; import {withComponentMixins} from "../lib/decorator-helpers";
import styles from "./styles.scss"; import styles from "./styles.scss";
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import mailtrainConfig from 'mailtrainConfig';
@withComponentMixins([ @withComponentMixins([
withTranslation, withTranslation,
@ -31,6 +32,13 @@ export default class List extends Component {
permissions: PropTypes.object permissions: PropTypes.object
} }
componentDidMount() {
const t = this.props.t;
if (!mailtrainConfig.user.admin && !mailtrainConfig.globalPermissions.manageChannels) {
this.navigateToWithFlashMessage('/', 'danger', t('permissionDenied')+': manageChannels');
}
}
render() { render() {
const t = this.props.t; const t = this.props.t;

View file

@ -27,6 +27,7 @@ import {FieldWizard, UnsubscriptionMode} from '../../../shared/lists';
import styles from "../lib/styles.scss"; import styles from "../lib/styles.scss";
import {getMailerTypes} from "../send-configurations/helpers"; import {getMailerTypes} from "../send-configurations/helpers";
import {withComponentMixins} from "../lib/decorator-helpers"; import {withComponentMixins} from "../lib/decorator-helpers";
import mailtrainConfig from 'mailtrainConfig';
@withComponentMixins([ @withComponentMixins([
withTranslation, withTranslation,
@ -73,6 +74,10 @@ export default class CUD extends Component {
} }
componentDidMount() { componentDidMount() {
const t = this.props.t;
if (!mailtrainConfig.user.admin && !mailtrainConfig.globalPermissions.manageLists) {
this.navigateToWithFlashMessage('/', 'danger', t('permissionDenied')+': manageLists');
}
if (this.props.entity) { if (this.props.entity) {
this.getFormValuesFromEntity(this.props.entity); this.getFormValuesFromEntity(this.props.entity);

View file

@ -27,6 +27,13 @@ export default class List extends Component {
tableRestActionDialogInit(this); tableRestActionDialogInit(this);
} }
componentDidMount() {
const t = this.props.t;
if (!mailtrainConfig.user.admin && !mailtrainConfig.globalPermissions.manageLists) {
this.navigateToWithFlashMessage('/', 'danger', t('permissionDenied')+': manageLists');
}
}
static propTypes = { static propTypes = {
permissions: PropTypes.object permissions: PropTypes.object
} }
@ -118,7 +125,6 @@ export default class List extends Component {
]; ];
return ( return (
{(mailtrainConfig.user.admin || mailtrainConfig.globalPermissions.manageList) ?
<div> <div>
{tableRestActionDialogRender(this)} {tableRestActionDialogRender(this)}
<Toolbar> <Toolbar>
@ -134,8 +140,7 @@ export default class List extends Component {
<Table ref={node => this.table = node} withHeader dataUrl="rest/lists-table" columns={columns} /> <Table ref={node => this.table = node} withHeader dataUrl="rest/lists-table" columns={columns} />
</div> </div>
: )
<div><h1>No tienes permisos para manejar listas</h1></div>}
);
} }
} }

View file

@ -25,6 +25,7 @@ import {getFieldColumn, SubscriptionStatus} from '../../../../shared/lists';
import {getFieldTypes, getSubscriptionStatusLabels} from './helpers'; import {getFieldTypes, getSubscriptionStatusLabels} from './helpers';
import moment from 'moment-timezone'; import moment from 'moment-timezone';
import {withComponentMixins} from "../../lib/decorator-helpers"; import {withComponentMixins} from "../../lib/decorator-helpers";
import mailtrainConfig from 'mailtrainConfig';
@withComponentMixins([ @withComponentMixins([
withTranslation, withTranslation,
@ -89,6 +90,11 @@ export default class CUD extends Component {
} }
componentDidMount() { componentDidMount() {
const t = this.props.t;
if (!mailtrainConfig.user.admin && !mailtrainConfig.globalPermissions.manageLists) {
this.navigateToWithFlashMessage('/', 'danger', t('permissionDenied')+': manageLists');
}
if (this.props.entity) { if (this.props.entity) {
this.getFormValuesFromEntity(this.props.entity); this.getFormValuesFromEntity(this.props.entity);

View file

@ -21,6 +21,7 @@ import {
} from "../../lib/modals"; } from "../../lib/modals";
import listStyles from "../styles.scss"; import listStyles from "../styles.scss";
import {withComponentMixins} from "../../lib/decorator-helpers"; import {withComponentMixins} from "../../lib/decorator-helpers";
import mailtrainConfig from 'mailtrainConfig';
@withComponentMixins([ @withComponentMixins([
withTranslation, withTranslation,
@ -58,6 +59,10 @@ export default class List extends Component {
} }
componentDidMount() { componentDidMount() {
const t = this.props.t;
if (!mailtrainConfig.user.admin && !mailtrainConfig.globalPermissions.manageLists) {
this.navigateToWithFlashMessage('/', 'danger', t('permissionDenied')+': manageLists');
}
this.populateFormValues({ this.populateFormValues({
segment: this.props.segmentId || '' segment: this.props.segmentId || ''
}); });
@ -188,4 +193,4 @@ export default class List extends Component {
</div> </div>
); );
} }
} }