1
0
mirror of https://github.com/ascribe/onion.git synced 2024-06-28 16:48:04 +02:00
onion/js/components/acl_proxy.js

38 lines
1.1 KiB
JavaScript
Raw Normal View History

2015-07-14 11:11:28 +02:00
'use strict';
import React from 'react';
2015-07-14 11:14:15 +02:00
/**
* This component can easily be used to present another component conditionally
* - dependent on their acl.
*
* In order to do that, just wrap AclProxy around the component, add aclObject and
* the acl name you're looking for.
*/
2015-07-14 11:11:28 +02:00
let AclProxy = React.createClass({
propTypes: {
children: React.PropTypes.oneOfType([
React.PropTypes.arrayOf(React.PropTypes.element),
React.PropTypes.element
]).isRequired,
aclObject: React.PropTypes.object.isRequired,
aclName: React.PropTypes.string.isRequired
},
render() {
if(this.props.aclObject[this.props.aclName]) {
return (
2015-07-14 17:49:31 +02:00
<span>
2015-07-14 11:11:28 +02:00
{this.props.children}
2015-07-14 17:49:31 +02:00
</span>
2015-07-14 11:11:28 +02:00
);
} else {
if(typeof this.props.aclObject[this.props.aclName] === 'undefined') {
console.warn('The aclName you\'re filtering for was not present (undefined) in the aclObject.');
}
return null;
}
}
});
export default AclProxy;