@krowdy/kds-auth
Version:
React components that implement Google's Material Design.
99 lines (88 loc) • 3.03 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import React, { useCallback, useState } from 'react';
import MicrosoftLogin from 'react-microsoft-login';
import { makeStyles, Typography } from '@krowdy/kds-core';
import { IMAGES_SOCIAL, METHODS_SESSION } from './constants';
import { useAuth } from '../utils';
var useStyles = makeStyles(function (_ref) {
var spacing = _ref.spacing,
shape = _ref.shape,
palette = _ref.palette;
return {
btnSocialMicrosoft: {
'& img': {
marginLeft: spacing(.75),
marginRight: spacing(2)
},
'& span': {
fontSize: 14,
margin: 'auto'
},
'&:hover': {
background: '#1b1b1b'
},
alignItems: 'center',
background: palette.common.black,
border: 0,
borderRadius: shape.borderRadius,
color: palette.common.white,
cursor: 'pointer',
display: 'flex',
height: 40,
justifyContent: 'center',
marginTop: spacing(2),
position: 'relative',
width: '100%'
}
};
});
var _ref2 = /*#__PURE__*/React.createElement(Typography, {
variant: "body2"
}, "Ingresa con Microsoft");
var MicrosoftButton = function MicrosoftButton() {
var classes = useStyles();
var _useAuth = useAuth(),
_useAuth$microsoftCre = _useAuth.microsoftCredentials;
_useAuth$microsoftCre = _useAuth$microsoftCre === void 0 ? {} : _useAuth$microsoftCre;
var clientId = _useAuth$microsoftCre.clientId,
redirectUri = _useAuth$microsoftCre.redirectUri,
validateSocialNetwork = _useAuth.validateSocialNetwork,
setLoadingSignIn = _useAuth.setLoadingSignIn;
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
verifying = _useState2[0],
setVerifying = _useState2[1];
var handleResponseMicrosoft = useCallback(function (err, response, msal) {
if (err) {
setVerifying(false);
setLoadingSignIn(false); // eslint-disable-next-line no-console
console.log(err);
return;
}
if (response && msal && !verifying) {
var accessToken = response.accessToken;
setVerifying(true);
validateSocialNetwork('microsoft', {
method: METHODS_SESSION['microsoft'],
tokenId: accessToken
});
}
}, [validateSocialNetwork, verifying, setLoadingSignIn]);
var _handleRequest = useCallback(function () {
setLoadingSignIn(true); // eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return clientId ? /*#__PURE__*/React.createElement("div", {
onClick: _handleRequest
}, /*#__PURE__*/React.createElement(MicrosoftLogin, {
authCallback: handleResponseMicrosoft,
clientId: clientId // forceRedirectStrategy
,
redirectUri: redirectUri
}, /*#__PURE__*/React.createElement("button", {
className: classes.btnSocialMicrosoft
}, /*#__PURE__*/React.createElement("img", {
alt: "microsoftSocial",
src: IMAGES_SOCIAL.microsoft
}), _ref2))) : null;
};
export default MicrosoftButton;