diff --git a/src/actions/auth.js b/src/actions/auth.js index 6e8a85bd37bed86ce3d6f8f371c37413a1d221c6..ac0e9e51764333deae7eacf7741ad0510b9bc3f9 100644 --- a/src/actions/auth.js +++ b/src/actions/auth.js @@ -15,11 +15,28 @@ export const getUserData = () => ( motivation_exercise: motivationExercise, signed, groups, + role, } = user.data; + let permission; + switch (role) { + case 'Applicant': + permission=1; + break; + case 'Student': + permission=2; + break; + case 'Staff': + permission=3; + break; + default: + permission=0; + break; + } + dispatch({ type: GET_USERDATA, payload: { - id, joinDate, nick, motivationAbout, motivationProfession, motivationExercise, signed, groups, + id, joinDate, nick, motivationAbout, motivationProfession, motivationExercise, signed, groups, role, permission }, }); } catch (e) { diff --git a/src/components/Header.js b/src/components/Header.js index e84ddf4c3401303828a2e11712467f1d0d9a5c0b..0a750b792a43063e04670055607e5543e64171d9 100644 --- a/src/components/Header.js +++ b/src/components/Header.js @@ -12,39 +12,49 @@ import { connect } from 'react-redux'; import { getUserData } from '../actions'; import KSZKlogo from './images/kszk_logo.svg'; - const menuItems = [ { text: 'FĹoldal', to: '/home', prefix: <Image size='mini' src={KSZKlogo} style={{ marginRight: '1.5em' }} />, + permissionLevel: 0, }, { text: 'HĂrek', to: '/news', prefix: '', + permissionLevel: 0, }, { text: 'KĂśreink', to: '/groups', prefix: '', + permissionLevel: 0, }, { text: 'Ătemterv', to: '/schedule', prefix: '', + permissionLevel: 1, }, { text: 'Statisztika', to: '/statistics', prefix: '', + permissionLevel: 3, }, -] +]; const FixedMenu = ({ user }) => ( <Menu fixed='top' size='large' pointing> <Container> - {menuItems.map( (item, i) => <Menu.Item key={i} as={Link} to={item.to}>{item.text}</Menu.Item>)} + {menuItems.map((item, i) => + (user.permission >= item.permissionLevel || + (item.permissionLevel === 0) + ? + <Menu.Item key={i} as={Link} to={item.to}>{item.text}</Menu.Item> + : + null))} <Menu.Menu position='right'> <Menu.Item className='item'> @@ -82,6 +92,8 @@ class Header extends Component { this.setState({ visible: true }); } + + render() { const { visible } = this.state; @@ -97,11 +109,12 @@ class Header extends Component { <Container> <Menu inverted secondary size='large'> - {menuItems.map( - (item, i) => ( + {menuItems.map((item, i) => + (this.props.user.permission >= item.permissionLevel || + (item.permissionLevel === 0) ? <Menu.Item key={i} as={Link} to={item.to}>{item.prefix}{item.text}</Menu.Item> - ) - )} + : + null))} <Menu.Item position='right'> {