cspace-ui
Version:
CollectionSpace user interface for browsers
85 lines (84 loc) • 3.78 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = LoginForm;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _immutable = _interopRequireDefault(require("immutable"));
var _reactIntl = require("react-intl");
var _reactRouterDom = require("react-router-dom");
var _errorCodes = require("../../constants/errorCodes");
var _LoginForm = _interopRequireDefault(require("../../../styles/cspace-ui/LoginForm.css"));
var _AuthStatusContainer = _interopRequireDefault(require("../../containers/login/AuthStatusContainer"));
var _LoginLink = _interopRequireDefault(require("./LoginLink"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const messages = (0, _reactIntl.defineMessages)({
prompt: {
"id": "loginForm.prompt",
"defaultMessage": "Please sign in to continue."
},
expiredPrompt: {
"id": "loginForm.expiredPrompt",
"defaultMessage": "Your sign in has expired. Please renew it to continue."
},
loginWindowOpen: {
"id": "loginForm.loginWindowOpen",
"defaultMessage": "Sign in is in progress in another browser window."
},
loginWindowOpenFailed: {
"id": "loginForm.loginWindowOpenFailed",
"defaultMessage": "The sign in window could not be opened. Please allow pop-ups for this site."
},
logout: {
"id": "loginForm.logout",
"defaultMessage": "Sign out to change to another user."
}
});
const propTypes = {
isLoginExpired: _propTypes.default.bool,
isLoginPending: _propTypes.default.bool,
isLoginSuccess: _propTypes.default.bool,
isLoginWindowOpen: _propTypes.default.bool,
isLoginWindowOpenFailed: _propTypes.default.bool,
loginError: _propTypes.default.instanceOf(_immutable.default.Map),
openLoginWindow: _propTypes.default.func,
showPrompt: _propTypes.default.bool
};
const defaultProps = {
isLoginExpired: false,
isLoginPending: false,
isLoginSuccess: false,
isLoginWindowOpen: false,
isLoginWindowOpenFailed: false,
loginError: null,
openLoginWindow: null,
showPrompt: false
};
function LoginForm(props) {
const {
isLoginExpired,
isLoginPending,
isLoginSuccess,
isLoginWindowOpen,
isLoginWindowOpenFailed,
loginError,
openLoginWindow,
showPrompt
} = props;
let prompt = null;
if (!isLoginSuccess && !isLoginPending && !loginError && showPrompt) {
const messageKey = isLoginExpired ? 'expiredPrompt' : 'prompt';
prompt = /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages[messageKey]));
}
const errorCode = loginError && loginError.get('code');
return /*#__PURE__*/_react.default.createElement("div", {
className: _LoginForm.default.common
}, isLoginWindowOpen && /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.loginWindowOpen), !isLoginWindowOpen && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AuthStatusContainer.default, null), prompt, !isLoginSuccess && !isLoginPending && /*#__PURE__*/_react.default.createElement("p", null, errorCode === _errorCodes.ERR_WRONG_TENANT ? /*#__PURE__*/_react.default.createElement(_reactRouterDom.Link, {
to: "/logout"
}, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.logout)) : /*#__PURE__*/_react.default.createElement(_LoginLink.default, {
openLoginWindow: openLoginWindow
}))), isLoginWindowOpenFailed && /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.loginWindowOpenFailed));
}
LoginForm.propTypes = propTypes;
LoginForm.defaultProps = defaultProps;