@ivyhjk/amplify-react-oauth
Version:
React authentication wrapper for amplify, based on OAuth2
61 lines • 2.61 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var amplify_react_core_auth_1 = require("@ivyhjk/amplify-react-core-auth");
var aws_amplify_1 = require("aws-amplify");
var react_1 = __importDefault(require("react"));
var hooks_1 = require("./hooks");
var OAuthContext_1 = require("./OAuthContext");
function OAuthContextProvider(_a) {
var children = _a.children;
var OAuthContext = OAuthContext_1.getOAuthContext();
var federatedSignIn = hooks_1.useFederatedSignIn()[0];
var signOut = hooks_1.useSignOut()[0];
var _b = react_1.default.useContext(amplify_react_core_auth_1.getCoreAuthContext()), dispatch = _b.dispatch, error = _b.error, loading = _b.loading, user = _b.user;
react_1.default.useEffect(function () {
var listener = function (_a) {
var _b = _a.payload, event = _b.event, data = _b.data;
switch (event) {
case 'signIn':
case 'cognitoHostedUI':
aws_amplify_1.Auth.currentAuthenticatedUser()
.then(function (user) { return dispatch({
loading: false,
user: user
}); })
.catch(function (error) { return dispatch({
error: error,
loading: false
}); });
break;
case 'signIn_failure':
case 'cognitoHostedUI_failure':
dispatch({
error: data,
loading: false
});
break;
}
};
aws_amplify_1.Hub.listen('auth', listener);
return function () {
aws_amplify_1.Hub.remove('auth', listener);
};
}, [dispatch]);
return (react_1.default.createElement(OAuthContext.Provider, { value: {
error: error,
loading: loading,
federatedSignIn: federatedSignIn,
signOut: signOut,
user: user
} }, children));
}
function OAuthProvider(_a) {
var children = _a.children;
return (react_1.default.createElement(amplify_react_core_auth_1.CoreAuthProvider, null,
react_1.default.createElement(OAuthContextProvider, null, children)));
}
exports.default = OAuthProvider;
//# sourceMappingURL=OAuthProvider.js.map