UNPKG

@reactionable/amplify

Version:
101 lines 5.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IdentityContextProvider = exports.withIdentityContext = exports.useIdentityContext = exports.useIdentityProviderProps = exports.SignOut = exports.SignUp = exports.ForgotPassword = exports.VerifyContact = exports.ConfirmSignIn = exports.SignIn = void 0; const tslib_1 = require("tslib"); const jsx_runtime_1 = require("react/jsx-runtime"); const auth_1 = require("@aws-amplify/auth"); const I18n_1 = require("@reactionable/core/lib/i18n/I18n"); const Identity_1 = require("@reactionable/core/lib/identity/Identity"); const Authenticator_1 = tslib_1.__importDefault(require("aws-amplify-react/lib/Auth/Authenticator")); const types_1 = require("aws-amplify-react/lib/Auth/common/types"); const react_1 = require("react"); var Auth_1 = require("aws-amplify-react/lib/Auth"); Object.defineProperty(exports, "SignIn", { enumerable: true, get: function () { return Auth_1.SignIn; } }); Object.defineProperty(exports, "ConfirmSignIn", { enumerable: true, get: function () { return Auth_1.ConfirmSignIn; } }); Object.defineProperty(exports, "VerifyContact", { enumerable: true, get: function () { return Auth_1.VerifyContact; } }); Object.defineProperty(exports, "ForgotPassword", { enumerable: true, get: function () { return Auth_1.ForgotPassword; } }); Object.defineProperty(exports, "SignUp", { enumerable: true, get: function () { return Auth_1.SignUp; } }); Object.defineProperty(exports, "SignOut", { enumerable: true, get: function () { return Auth_1.SignOut; } }); const dataToUser = (data) => { if (!data) { return null; } return data; }; function AuthComponent(props) { var _a; const { t } = (0, I18n_1.useTranslation)(); const { setUser, hide } = useIdentityContext(); const authenticatorProps = Object.assign({ errorMessage: (message) => t(message), usernameAttributes: types_1.UsernameAttributes.EMAIL, signUpConfig: Object.assign({ hideAllDefaults: true, signUpFields: [ { label: "Email", key: "email", required: true, displayOrder: 1, type: "string", }, { label: "Password", key: "password", required: true, displayOrder: 2, type: "password", }, ...(((_a = props === null || props === void 0 ? void 0 : props.signUpConfig) === null || _a === void 0 ? void 0 : _a.signUpFields) || []), ] }, ((props === null || props === void 0 ? void 0 : props.signUpConfig) || {})), }, hide); return ((0, jsx_runtime_1.jsx)(Authenticator_1.default, Object.assign({}, authenticatorProps, { onStateChange: (authState, data) => { setUser(authState !== "signedIn" ? null : dataToUser(data)); } }))); } const useIdentityProviderProps = (props = {}) => { const user = props.user; const [userState, setUser] = (0, react_1.useState)(); (0, react_1.useEffect)(() => { if (user && user !== userState) { setUser(user); return; } if (userState === undefined) { auth_1.Auth.currentAuthenticatedUser() .then((data) => { setUser(dataToUser(data)); }) .catch((error) => { if (error === "The user is not authenticated") { setUser(null); } else { throw error; } }); return; } }, [user, userState]); return Object.assign(Object.assign(Object.assign({}, (0, Identity_1.useIdentityProviderProps)()), { identityProvider: "Amplify", logout: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return yield auth_1.Auth.signOut(); }), login: (values) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const result = yield auth_1.Auth.signIn(values); const user = dataToUser(result); if (user) { return user; } throw new Error("No user retrieved from signIn"); }), AuthComponent, user }), props); }; exports.useIdentityProviderProps = useIdentityProviderProps; function useIdentityContext() { return (0, Identity_1.useIdentityContext)(); } exports.useIdentityContext = useIdentityContext; function withIdentityContext(Component, identityProviderProps) { return ((0, jsx_runtime_1.jsx)(exports.IdentityContextProvider, Object.assign({}, (0, exports.useIdentityProviderProps)(identityProviderProps), { children: (0, jsx_runtime_1.jsx)(Component, {}) }))); } exports.withIdentityContext = withIdentityContext; const IdentityContextProvider = (props) => { return (0, jsx_runtime_1.jsx)(Identity_1.IdentityContextProvider, Object.assign({}, (0, exports.useIdentityProviderProps)(props))); }; exports.IdentityContextProvider = IdentityContextProvider; //# sourceMappingURL=Identity.js.map