| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import { useState } from 'react'
- import { useTranslation, Trans } from 'react-i18next'
- import { Alert } from 'react-bootstrap'
- import Icon from '../../../../shared/components/icon'
- import getMeta from '../../../../utils/meta'
- type InstitutionLink = {
- universityName: string
- hasEntitlement?: boolean
- }
- type SAMLError = {
- translatedMessage?: string
- message?: string
- tryAgain?: boolean
- }
- export function SSOAlert() {
- const { t } = useTranslation()
- const institutionLinked: InstitutionLink | undefined = getMeta(
- 'ol-institutionLinked'
- )
- const institutionEmailNonCanonical: string | undefined = getMeta(
- 'ol-institutionEmailNonCanonical'
- )
- const samlError: SAMLError | undefined = getMeta('ol-samlError')
- const [infoClosed, setInfoClosed] = useState(false)
- const [warningClosed, setWarningClosed] = useState(false)
- const [errorClosed, setErrorClosed] = useState(false)
- const handleInfoClosed = () => setInfoClosed(true)
- const handleWarningClosed = () => setWarningClosed(true)
- const handleErrorClosed = () => setErrorClosed(true)
- if (samlError) {
- return !errorClosed ? (
- <Alert bsStyle="danger" className="mb-0" onDismiss={handleErrorClosed}>
- <p className="text-center">
- <Icon
- type="exclamation-triangle"
- accessibilityLabel={t('generic_something_went_wrong')}
- />{' '}
- {samlError.translatedMessage
- ? samlError.translatedMessage
- : samlError.message}
- </p>
- {samlError.tryAgain && <p className="text-center">{t('try_again')}</p>}
- </Alert>
- ) : null
- }
- if (!institutionLinked) {
- return null
- }
- return (
- <>
- {!infoClosed && (
- <Alert bsStyle="info" className="mb-0" onDismiss={handleInfoClosed}>
- <p className="text-center">
- <Trans
- i18nKey="institution_acct_successfully_linked_2"
- components={[<strong />]} // eslint-disable-line react/jsx-key
- values={{ institutionName: institutionLinked.universityName }}
- />
- </p>
- {institutionLinked.hasEntitlement && (
- <p className="text-center">
- <Trans
- i18nKey="this_grants_access_to_features_2"
- components={[<strong />]} // eslint-disable-line react/jsx-key
- values={{ featureType: t('professional') }}
- />
- </p>
- )}
- </Alert>
- )}
- {!warningClosed && institutionEmailNonCanonical && (
- <Alert
- bsStyle="warning"
- className="mb-0"
- onDismiss={handleWarningClosed}
- >
- <p className="text-center">
- <Icon
- type="exclamation-triangle"
- accessibilityLabel={t('generic_something_went_wrong')}
- />{' '}
- <Trans
- i18nKey="in_order_to_match_institutional_metadata_2"
- components={[<strong />]} // eslint-disable-line react/jsx-key
- values={{ email: institutionEmailNonCanonical }}
- />
- </p>
- </Alert>
- )}
- </>
- )
- }
|