From 124f227a8235e08bddf8376e0b3d01d33c4414f3 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 15 Aug 2018 14:47:25 -0400 Subject: Permissions is doneeee --- .../36/frontend/components/Permissions.js | 104 +++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100755 stepped-solutions/36/frontend/components/Permissions.js (limited to 'stepped-solutions/36/frontend/components/Permissions.js') diff --git a/stepped-solutions/36/frontend/components/Permissions.js b/stepped-solutions/36/frontend/components/Permissions.js new file mode 100755 index 0000000..10b59ab --- /dev/null +++ b/stepped-solutions/36/frontend/components/Permissions.js @@ -0,0 +1,104 @@ +import { Query } from 'react-apollo'; +import Error from './ErrorMessage'; +import gql from 'graphql-tag'; +import Table from './styles/Table'; +import SickButton from './styles/SickButton'; +import PropTypes from 'prop-types'; + +const possiblePermissions = [ + 'ADMIN', + 'USER', + 'ITEMCREATE', + 'ITEMUPDATE', + 'ITEMDELETE', + 'PERMISSIONUPDATE', +]; + +const ALL_USERS_QUERY = gql` + query { + users { + id + name + email + permissions + } + } +`; + +const Permissions = props => ( + + {({ data, loading, error }) => ( +
+ +
+

Manage Permissions

+ + + + + + {possiblePermissions.map(permission => )} + + + + {data.users.map(user => )} +
NameEmail{permission}👇🏻
+
+
+ )} +
+); + +class UserPermissions extends React.Component { + static propTypes = { + user: PropTypes.shape({ + name: PropTypes.string, + email: PropTypes.string, + id: PropTypes.string, + permissions: PropTypes.array, + }).isRequired, + }; + state = { + permissions: this.props.user.permissions, + }; + handlePermissionChange = e => { + const checkbox = e.target; + // take a copy of the current permissions + let updatedPermissions = [...this.state.permissions]; + // figure out if we need to remove or add this permission + if (checkbox.checked) { + // add it in! + updatedPermissions.push(checkbox.value); + } else { + updatedPermissions = updatedPermissions.filter(permission => permission !== checkbox.value); + } + this.setState({ permissions: updatedPermissions }); + console.log(updatedPermissions); + }; + render() { + const user = this.props.user; + return ( + + {user.name} + {user.email} + {possiblePermissions.map(permission => ( + + + + ))} + + Update + + + ); + } +} + +export default Permissions; -- cgit v1.3