From b1600adec47a04f60e1da07d94a3ed3906ff5aee Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Thu, 14 Jun 2018 16:44:21 -0400 Subject: starter files --- .../frontend/components/PleaseSignIn.js | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 finished-application/frontend/components/PleaseSignIn.js (limited to 'finished-application/frontend/components/PleaseSignIn.js') diff --git a/finished-application/frontend/components/PleaseSignIn.js b/finished-application/frontend/components/PleaseSignIn.js new file mode 100644 index 0000000..5646749 --- /dev/null +++ b/finished-application/frontend/components/PleaseSignIn.js @@ -0,0 +1,46 @@ +import { Query } from 'react-apollo'; +import PropTypes from 'prop-types'; +import { CURRENT_USER_QUERY } from './User'; +import Signin from './Signin'; + +const PleaseSignIn = props => ( + + {({ data, loading }) => { + if (loading) return

Loading...

; + // check if they are signed in + if (!data.me) { + return ( +
+

Please sign in before continuing!

+ +
+ ); + } + // check if they need permissions + if (props.allowedPermissions) { + // check if they NO permissions, or they don't meet the requmrenets + if ( + !data.me.permissions || + !props.allowedPermissions.some(permission => data.me.permissions.includes(permission)) + ) { + return ( +

+ Insufficient Permissions. You have: + {data.me.permissions} + and you need + {props.allowedPermissions.join(' OR ')} +

+ ); + } + } + return props.children; + }} +
+); + +PleaseSignIn.propTypes = { + allowedPermissions: PropTypes.array, + children: PropTypes.any.isRequired, +}; + +export default PleaseSignIn; -- cgit v1.3