diff --git a/app-client/appsync-client/package.json b/app-client/appsync-client/package.json index 412ebf31..094e20c0 100644 --- a/app-client/appsync-client/package.json +++ b/app-client/appsync-client/package.json @@ -8,6 +8,8 @@ "apollo-client": "^2.0.2", "apollo-client-preset": "^1.0.2", "apollo-link": "^1.0.0", + "aws-amplify": "^0.1.30", + "aws-amplify-react": "^0.1.30", "aws-appsync": "^1.0.1", "aws-appsync-react": "^1.0.1", "aws-sdk": "^2.158.0", diff --git a/app-client/appsync-client/src/App.js b/app-client/appsync-client/src/App.js index f8dc4235..407089ef 100644 --- a/app-client/appsync-client/src/App.js +++ b/app-client/appsync-client/src/App.js @@ -3,25 +3,19 @@ import UserList from './components/UserList'; import logo from './logo.svg'; import './App.css'; +import Amplify, { Auth } from 'aws-amplify'; +import { withAuthenticator } from 'aws-amplify-react/dist/Auth'; import AWSAppSyncClient from 'aws-appsync'; import { Rehydrated } from 'aws-appsync-react'; import { AUTH_TYPE } from 'aws-appsync/lib/link/auth-link'; import { ApolloProvider } from 'react-apollo'; -import * as AWS from 'aws-sdk'; -import awsconfig from './aws-exports'; -AWS.config.update({ - region: awsconfig.REGION, - credentials: new AWS.Credentials({ - accessKeyId: awsconfig.AWS_ACCESS_KEY_ID, - secretAccessKey: awsconfig.AWS_SECRET_ACCESS_KEY, - }), -}); - -const client = new AWSAppSyncClient({ - url: process.env.REACT_APP_GRAPHQL_ENDPOINT, - region: 'us-east-1', - auth: { type: AUTH_TYPE.AWS_IAM, credentials: AWS.config.credentials }, +Amplify.configure({ + Auth: { + region: process.env.REACT_APP_AWS_AUTH_REGION, // REQUIRED - Amazon Cognito Region + userPoolId: process.env.REACT_APP_USER_POOL_ID, //OPTIONAL - Amazon Cognito User Pool ID + userPoolWebClientId: process.env.REACT_APP_CLIENT_APP_ID, //User Pool App Client ID + }, }); class App extends Component { @@ -40,12 +34,28 @@ class App extends Component { } } -const WithProvider = () => ( - - - - - -); +class WithProvider extends React.Component { + render() { + if (this.props.authState !== 'signedIn') { + return null; + } else { + this.client = new AWSAppSyncClient({ + url: process.env.REACT_APP_GRAPHQL_ENDPOINT, + region: process.env.REACT_APP_AWS_CLIENT_REGION, + auth: { + type: AUTH_TYPE.AMAZON_COGNITO_USER_POOLS, + jwtToken: this.props.authData.signInUserSession.idToken.jwtToken, + }, + }); -export default WithProvider; + return ( + + + + + + ); + } + } +} +export default withAuthenticator(WithProvider, { includeGreetings: true }); diff --git a/app-client/appsync-client/src/aws-exports.js b/app-client/appsync-client/src/aws-exports.js deleted file mode 100644 index 6b8381e3..00000000 --- a/app-client/appsync-client/src/aws-exports.js +++ /dev/null @@ -1,9 +0,0 @@ -const config = { - AWS_ACCESS_KEY_ID: '', - AWS_SECRET_ACCESS_KEY: '', - HOST: 'xxxxxxx.dddpa.us-west-2.amazonaws.com', // Your hostname - REGION: 'us-west-2', //Your region - PATH: '/graphql', -}; -config.ENDPOINT = `https://${config.HOST}${config.PATH}`; -export default config; diff --git a/app-client/appsync-client/yarn.lock b/app-client/appsync-client/yarn.lock index 3e3d9648..29d0cb7c 100644 --- a/app-client/appsync-client/yarn.lock +++ b/app-client/appsync-client/yarn.lock @@ -102,6 +102,13 @@ alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" +amazon-cognito-identity-js@^1.19.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-1.29.0.tgz#bf1180a846b642e4aece3d970566d44e470c8162" + dependencies: + aws-sdk "^2.6.0" + js-cookie "^2.1.4" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -412,6 +419,20 @@ autoprefixer@^6.3.1: postcss "^5.2.16" postcss-value-parser "^3.2.3" +aws-amplify-react@^0.1.30: + version "0.1.30" + resolved "https://registry.yarnpkg.com/aws-amplify-react/-/aws-amplify-react-0.1.30.tgz#03f75b614e1cd16549bbef17ad39f39c14b6e3a0" + +aws-amplify@^0.1.30: + version "0.1.30" + resolved "https://registry.yarnpkg.com/aws-amplify/-/aws-amplify-0.1.30.tgz#ee2c934cc58eb487c38ffe66853c2ad5b3eb3f02" + dependencies: + amazon-cognito-identity-js "^1.19.0" + aws-sdk "^2.101.0" + aws-sdk-mobile-analytics "^0.9.2" + axios "^0.17.0" + querystring-browser "^1.0.4" + aws-appsync-react@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/aws-appsync-react/-/aws-appsync-react-1.0.1.tgz#51ad70daf8fd9b477845d10c46a67f4ea189e122" @@ -436,6 +457,27 @@ aws-appsync@^1.0.0, aws-appsync@^1.0.1: redux-thunk "^2.2.0" url "^0.11.0" +aws-sdk-mobile-analytics@^0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/aws-sdk-mobile-analytics/-/aws-sdk-mobile-analytics-0.9.2.tgz#b56a6e5206fc8c3975a19170b41536c53f6d5d91" + dependencies: + aws-sdk ">=2.2.37" + +aws-sdk@>=2.2.37, aws-sdk@^2.101.0, aws-sdk@^2.6.0: + version "2.176.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.176.0.tgz#2723c14e1c623ac45c5b890a3fc736eee8085f67" + dependencies: + buffer "4.9.1" + crypto-browserify "1.0.9" + events "^1.1.1" + jmespath "0.15.0" + querystring "0.2.0" + sax "1.2.1" + url "0.10.3" + uuid "3.1.0" + xml2js "0.4.17" + xmlbuilder "4.2.1" + aws-sdk@^2.139.0: version "2.158.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.158.0.tgz#56ec1e78770822fbc38ae62fed0f54e7a147bdeb" @@ -474,6 +516,13 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +axios@^0.17.0: + version "0.17.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d" + dependencies: + follow-redirects "^1.2.5" + is-buffer "^1.1.5" + axobject-query@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" @@ -2849,6 +2898,12 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" +follow-redirects@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.6.tgz#4dcdc7e4ab3dd6765a97ff89c3b4c258117c79bf" + dependencies: + debug "^3.1.0" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -4012,6 +4067,10 @@ js-base64@^2.1.9: version "2.3.2" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" +js-cookie@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.0.tgz#1b2c279a6eece380a12168b92485265b35b1effb" + js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -5476,6 +5535,10 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +querystring-browser@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/querystring-browser/-/querystring-browser-1.0.4.tgz#f2e35881840a819bc7b1bf597faf0979e6622dc6" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" diff --git a/config/security.env.local b/config/security.env.local index 14bdbc62..03eaa793 100644 --- a/config/security.env.local +++ b/config/security.env.local @@ -1,4 +1,8 @@ REACT_APP_GRAPHQL_ENDPOINT=http://localhost:4000/graphql REACT_APP_HANDLE=LeoDiCaprio REACT_APP_CONSUMER_KEY=N7vFfwCK4nM3DmzYZH4sTFKbS -REACT_APP_SECRET_KEY=HsrhKwC29Wtv6sJZEsU9UOtjnGpSn0a1PdjidvOQGKkNffJW7h \ No newline at end of file +REACT_APP_SECRET_KEY=HsrhKwC29Wtv6sJZEsU9UOtjnGpSn0a1PdjidvOQGKkNffJW7h +REACT_APP_AWS_AUTH_REGION=us-east-1 +REACT_APP_AWS_CLIENT_REGION=us-east-1 +REACT_APP_USER_POOL_ID=xxx +REACT_APP_CLIENT_APP_ID=xxx \ No newline at end of file diff --git a/config/security.env.prod b/config/security.env.prod index 13d6532b..3e1b3c5b 100644 --- a/config/security.env.prod +++ b/config/security.env.prod @@ -5,3 +5,7 @@ REACT_APP_CONSUMER_KEY=N7vFfwCK4nM3DmzYZH4sTFKbS REACT_APP_SECRET_KEY=HsrhKwC29Wtv6sJZEsU9UOtjnGpSn0a1PdjidvOQGKkNffJW7h DATABASE_URL="" DATABASE_TYPE="" +REACT_APP_AWS_AUTH_REGION=us-east-1 +REACT_APP_AWS_CLIENT_REGION=us-east-1 +REACT_APP_USER_POOL_ID=xxx +REACT_APP_CLIENT_APP_ID=xxx