UNPKG

cspace-ui

Version:
135 lines (134 loc) 5.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactHelmet = require("react-helmet"); var _reactIntl = require("react-intl"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } const propTypes = { csrf: _propTypes.default.object, error: _propTypes.default.string, isLogoutSuccess: _propTypes.default.bool, intl: _reactIntl.intlShape.isRequired, locale: _propTypes.default.string, sso: _propTypes.default.object, tenantId: _propTypes.default.string }; const defaultProps = { csrf: null, error: null, isLogoutSuccess: false, locale: 'en-US', sso: {}, tenantId: null }; const messages = (0, _reactIntl.defineMessages)({ title: { "id": "serviceLoginPage.title", "defaultMessage": "Sign in" }, prompt: { "id": "serviceLoginPage.prompt", "defaultMessage": "Please sign in to continue." }, username: { "id": "serviceLoginPage.username", "defaultMessage": "Email" }, password: { "id": "serviceLoginPage.password", "defaultMessage": "Password" }, forgotPassword: { "id": "serviceLoginPage.forgotPassword", "defaultMessage": "Forgot password" }, ssoLink: { "id": "serviceLoginPage.ssoLink", "defaultMessage": "Continue with {name}" }, localLogin: { "id": "serviceLoginPage.localLogin", "defaultMessage": "Continue with email and password" }, logoutSuccess: { "id": "serviceLoginPage.logoutSuccess", "defaultMessage": "Sign out complete." }, errorBadCredentials: { "id": "serviceLoginPage.errorBadCredentials", "defaultMessage": "Sign in failed. Incorrect username/password." } }); function ServiceLoginPage(props) { const { csrf, error, isLogoutSuccess, intl, locale, sso, tenantId } = props; const ssoLinks = Object.entries(sso).sort((a, b) => a[1].name.localeCompare(b[1].name, locale, { sensitivity: 'base' })).map(([url, config]) => { const { icon } = config; const style = icon ? { backgroundImage: `url(${icon})` } : undefined; return /*#__PURE__*/_react.default.createElement("a", { className: "login", href: url, style: style }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _extends({}, messages.ssoLink, { values: config }))); }); const ssoPanel = ssoLinks.length > 0 ? /*#__PURE__*/_react.default.createElement("div", { className: "sso" }, ssoLinks) : undefined; const csrfInput = csrf ? /*#__PURE__*/_react.default.createElement("input", { type: "hidden", name: csrf.parameterName, value: csrf.token }) : undefined; const successMessage = isLogoutSuccess ? /*#__PURE__*/_react.default.createElement("p", { className: "status success" }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.logoutSuccess)) : undefined; let formattedError; if (/bad credentials/i.test(error)) { formattedError = /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.errorBadCredentials); } else { formattedError = error; } const errorMessage = formattedError ? /*#__PURE__*/_react.default.createElement("p", { className: "status error" }, formattedError) : undefined; const tidParam = tenantId ? `?tid=${tenantId}` : ''; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactHelmet.Helmet, null, /*#__PURE__*/_react.default.createElement("title", null, intl.formatMessage(messages.title))), successMessage, errorMessage, /*#__PURE__*/_react.default.createElement("main", null, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.prompt)), ssoPanel, /*#__PURE__*/_react.default.createElement("form", { method: "POST" }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("label", null, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.username), /*#__PURE__*/_react.default.createElement("input", { autoComplete: "username email", name: "username", type: "text" }))), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("label", null, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.password), /*#__PURE__*/_react.default.createElement("input", { autoComplete: "current-password", name: "password", type: "password" }))), /*#__PURE__*/_react.default.createElement("div", null, csrfInput, /*#__PURE__*/_react.default.createElement("button", { className: "login", type: "submit" }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.localLogin))), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("a", { href: `./accounts/requestpasswordreset${tidParam}` }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.forgotPassword)))))); } ServiceLoginPage.propTypes = propTypes; ServiceLoginPage.defaultProps = defaultProps; var _default = exports.default = (0, _reactIntl.injectIntl)(ServiceLoginPage);