import { Amplify, API, graphqlOperation, Storage } from "aws-amplify"; import { Admin, Resource } from "react-admin"; import { buildAuthProvider, buildDataProvider, CognitoGroupList, CognitoUserList, CognitoUserShow, } from "react-admin-amplify"; import awsExports from "./aws-exports"; import { AccountRepresentativeCreate, AccountRepresentativeEdit, AccountRepresentativeList, AccountRepresentativeShow, } from "./components/AccountRepresentative"; import { CustomerCreate, CustomerEdit, CustomerList, CustomerShow, } from "./components/Customer"; import { Dashboard } from "./components/Dashboard"; import { EmployeeCreate, EmployeeEdit, EmployeeList, EmployeeShow, } from "./components/Employee"; import { LoginPage } from "./components/LoginPage"; import { OrderCreate, OrderEdit, OrderList, OrderShow, } from "./components/Order"; import { ProductCreate, ProductEdit, ProductList, ProductShow, } from "./components/Product"; import { WarehouseCreate, WarehouseList, WarehouseShow, } from "./components/Warehouse"; import * as mutations from "./graphql/mutations"; import * as queries from "./graphql/queries"; Amplify.configure(awsExports); const authProvider = buildAuthProvider({ authGroups: ["superadmin", "admin"], }); const dataProvider = buildDataProvider( { queries, mutations, }, { storageBucket: awsExports.aws_user_files_s3_bucket, storageRegion: awsExports.aws_user_files_s3_bucket_region, enableAdminQueries: true, } ); // Get the demo user avatar authProvider.getIdentity = async () => { try { const userData = await API.graphql( graphqlOperation(queries.getUser, { id: "demo" }) ); const url = await Storage.get(userData.data.getUser.picture.key); return { id: "demo", fullName: "Demo", avatar: url, }; } catch (e) { console.log(e); } }; function App() { return ( <Admin authProvider={authProvider} dataProvider={dataProvider} loginPage={LoginPage} dashboard={Dashboard} > {(permissions) => [ <Resource name="orders" list={OrderList} show={OrderShow} edit={OrderEdit} create={OrderCreate} />, <Resource name="customers" list={CustomerList} show={CustomerShow} edit={CustomerEdit} create={CustomerCreate} />, <Resource name="employees" list={EmployeeList} show={EmployeeShow} edit={EmployeeEdit} create={EmployeeCreate} />, <Resource name="warehouses" list={WarehouseList} show={WarehouseShow} create={WarehouseCreate} />, <Resource name="accountRepresentatives" options={{ label: "Account Reps" }} list={AccountRepresentativeList} show={AccountRepresentativeShow} edit={AccountRepresentativeEdit} create={AccountRepresentativeCreate} />, <Resource name="products" list={ProductList} show={ProductShow} edit={ProductEdit} create={ProductCreate} />, permissions.includes("superadmin") ? ( <Resource name="cognitoUsers" options={{ label: "Cognito Users" }} list={CognitoUserList} show={CognitoUserShow} /> ) : null, permissions.includes("superadmin") ? ( <Resource name="cognitoGroups" options={{ label: "Cognito Groups" }} list={CognitoGroupList} /> ) : null, ]} </Admin> ); } export default App;