import React from 'react'; import Can from '@/components/elements/Can'; import ScreenBlock from '@/components/screens/ScreenBlock'; import isEqual from 'react-fast-compare'; const requireServerPermission = (Component: React.ComponentType<any>, permissions: string | string[]) => { return class extends React.Component<any, any> { shouldComponentUpdate (nextProps: Readonly<any>) { return !isEqual(nextProps, this.props); } render () { return ( <Can action={permissions} renderOnError={ <ScreenBlock image={'/assets/svgs/server_error.svg'} title={'Access Denied'} message={'You do not have permission to access this page.'} /> } > <Component {...this.props}/> </Can> ); } }; }; export default requireServerPermission;