cspace-ui
Version:
CollectionSpace user interface for browsers
135 lines (134 loc) • 5.79 kB
JavaScript
"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);