From db7c557ee7d037f3549c8fba3ebb1c39329fb307 Mon Sep 17 00:00:00 2001 From: Sivert Kronen Hatteberg <skh@uio.no> Date: Fri, 3 Dec 2021 08:35:54 +0100 Subject: [PATCH] Make the login-page look like the sketch. - Create a new loginbox component. To be used as invitation login latter. - Add a util function that creates the correct stylized institution abbrevation --- frontend/public/locales/en/frontpage.json | 10 ++- frontend/public/locales/nb/frontpage.json | 10 ++- frontend/public/locales/nn/footer.json | 2 +- frontend/public/locales/nn/frontpage.json | 10 ++- frontend/src/components/loginBox/index.tsx | 61 +++++++++++++++++++ .../routes/frontpage/components/loginpage.tsx | 41 +++++++++---- frontend/src/utils/index.ts | 17 ++++++ 7 files changed, 130 insertions(+), 21 deletions(-) create mode 100644 frontend/src/components/loginBox/index.tsx diff --git a/frontend/public/locales/en/frontpage.json b/frontend/public/locales/en/frontpage.json index a580f0ec..c4a59e86 100644 --- a/frontend/public/locales/en/frontpage.json +++ b/frontend/public/locales/en/frontpage.json @@ -1,5 +1,9 @@ { - "description": "Gjestetjenesten er for personer som ikke er ansatt eller student ved UiO som har behov for tilgang til deler av UiOs IT-systemer. Enkelte ansatte eller andre tilknyttede personer som mottar lønn fra UiO kan også ha behov for IT-tilganger i en lengre periode enn kontraktsperioden. Logg inn for å registrere en ny gjest eller endre på en eksisterende konto.", - "header": "Guest Registration", - "login": "Login" + "description": "The Guest Service is for individuals who are not employed of student at {{inst}}, that need access to part of {{inst}}s IT-services. Choose log-in method below:", + "header": "Guest Service", + "login": "Log in (FEIDE/ID-porten)", + "sponsor": "Sponsor", + "sponsorInfo": "Only for administration of guests.", + "guest": "Guests", + "guestInfo": "Only for guests. Access to registered personal information." } \ No newline at end of file diff --git a/frontend/public/locales/nb/frontpage.json b/frontend/public/locales/nb/frontpage.json index 2d123c53..48c13192 100644 --- a/frontend/public/locales/nb/frontpage.json +++ b/frontend/public/locales/nb/frontpage.json @@ -1,5 +1,9 @@ { - "description": "Gjestetjenesten er for personer som ikke er ansatt eller student ved UiO som har behov for tilgang til deler av UiOs IT-systemer. Enkelte ansatte eller andre tilknyttede personer som mottar lønn fra UiO kan også ha behov for IT-tilganger i en lengre periode enn kontraktsperioden. Logg inn for å registrere en ny gjest eller endre på en eksisterende konto.", + "description": "Gjestetjenesten er for personer som ikke er ansatt eller student ved {{inst}} som har behov for tilgang til deler av {{inst}}s IT-systemer. Velg en innloggingsmetode:", "header": "Gjestetjenesten", - "login": "Logg inn" -} \ No newline at end of file + "login": "Logg inn (FEIDE/ID-porten)", + "sponsor": "Verter", + "sponsorInfo": "Kun for administratorer av gjester. ", + "guest": "Gjester", + "guestInfo": "Kun for gjester. Innsyn i registert innformasjon." +} \ No newline at end of file diff --git a/frontend/public/locales/nn/footer.json b/frontend/public/locales/nn/footer.json index a4f6ecd0..b06709b0 100644 --- a/frontend/public/locales/nn/footer.json +++ b/frontend/public/locales/nn/footer.json @@ -1,5 +1,5 @@ { - "applicationTitle": "Gjestetjenesten", + "applicationTitle": "Gjestetenesta", "link": { "terms": { "header": "VILKÅR", diff --git a/frontend/public/locales/nn/frontpage.json b/frontend/public/locales/nn/frontpage.json index 2d123c53..87d32b93 100644 --- a/frontend/public/locales/nn/frontpage.json +++ b/frontend/public/locales/nn/frontpage.json @@ -1,5 +1,9 @@ { - "description": "Gjestetjenesten er for personer som ikke er ansatt eller student ved UiO som har behov for tilgang til deler av UiOs IT-systemer. Enkelte ansatte eller andre tilknyttede personer som mottar lønn fra UiO kan også ha behov for IT-tilganger i en lengre periode enn kontraktsperioden. Logg inn for å registrere en ny gjest eller endre på en eksisterende konto.", - "header": "Gjestetjenesten", - "login": "Logg inn" + "description": "Gjestetenesta er for personar som ikkje er ansatt eller student ved {{inst}} som har behov for tilgang til delar av {{inst}}s IT-systemer. Velg ein innloggingsmetode:", + "header": "Gjestetenesta", + "login": "Logg inn (FEIDE/ID-porten)", + "sponsor": "Vertar", + "sponsorInfo": "Kun for administratorar av gjestar. ", + "guest": "Gjestar", + "guestInfo": "Kun for gjestar. Innsyn i registert innformasjon." } \ No newline at end of file diff --git a/frontend/src/components/loginBox/index.tsx b/frontend/src/components/loginBox/index.tsx new file mode 100644 index 00000000..448c9e4e --- /dev/null +++ b/frontend/src/components/loginBox/index.tsx @@ -0,0 +1,61 @@ +import { useTranslation } from 'react-i18next' + +import { styled } from '@mui/system' +import Box from '@mui/material/Box' +import AccountBoxOutlinedIcon from '@mui/icons-material/AccountBoxOutlined' + +import { HrefButton } from 'components/button' + +const StyledParagraph = styled('p')({ + fontSize: '1rem', +}) + +const StyledBox = styled(Box)({ + borderStyle: 'solid', + borderColor: 'black', + borderWidth: '2px', + borderRadius: '1%', + width: '24rem', + height: '18rem', +}) + +interface LoginBoxProps { + header: string + info: string +} + +export default function LoginBox({ header, info }: LoginBoxProps) { + const { t } = useTranslation(['frontpage']) + return ( + <StyledBox + sx={{ + marginBottom: { xs: '2rem', md: '0rem' }, + }} + > + <Box + sx={{ + display: 'flex', + flexDirection: 'column', + margin: '2rem', + height: '35%', + }} + > + <Box sx={{ display: 'flex', alignItems: 'center' }}> + <AccountBoxOutlinedIcon + fontSize="inherit" + sx={{ + marginRight: { xs: '0rem', md: '0.5rem' }, + }} + /> + {header} + </Box> + <StyledParagraph>{info}</StyledParagraph> + </Box> + <Box sx={{ display: 'flex', margin: '2rem' }}> + <HrefButton to="/oidc/authenticate/"> + <Box sx={{ margin: '0 2rem 0 2rem' }}>{t('login')}</Box> + </HrefButton> + </Box> + </StyledBox> + ) +} diff --git a/frontend/src/routes/frontpage/components/loginpage.tsx b/frontend/src/routes/frontpage/components/loginpage.tsx index 711648f8..79d2f554 100644 --- a/frontend/src/routes/frontpage/components/loginpage.tsx +++ b/frontend/src/routes/frontpage/components/loginpage.tsx @@ -2,11 +2,9 @@ import { useTranslation } from 'react-i18next' import { styled } from '@mui/system' import { Container } from '@mui/material' -import { HrefButton } from 'components/button' - -const StyledWrapper = styled('div')({ - paddingTop: '2rem', -}) +import LoginBox from 'components/loginBox' +import { instNameUpperCaser } from 'utils' +import { appInst } from 'appConfig' const StyledParagraph = styled('p')({ fontSize: '1rem', @@ -16,12 +14,33 @@ export default function LoginPage() { const { t } = useTranslation(['frontpage']) return ( - <StyledWrapper> - <Container maxWidth="sm"> - <h2>{t('header')}</h2> - <StyledParagraph>{t('description')}</StyledParagraph> - <HrefButton to="/oidc/authenticate/">{t('login')}</HrefButton> + <Container + maxWidth="md" + sx={{ + display: 'flex', + flexDirection: 'column', + marginTop: '4rem', + marginBottom: '10rem', + }} + > + <Container> + <h1>{t('header')}</h1> + <StyledParagraph sx={{ marginBottom: '4rem' }}> + {t('description', { inst: instNameUpperCaser(appInst) })} + </StyledParagraph> + </Container> + + <Container + sx={{ + display: 'flex', + justifyContent: 'space-between', + flexDirection: { xs: 'column', md: 'row' }, + alignItems: 'center', + }} + > + <LoginBox header={t('sponsor')} info={t('sponsorInfo')} /> + <LoginBox header={t('guest')} info={t('guestInfo')} /> </Container> - </StyledWrapper> + </Container> ) } diff --git a/frontend/src/utils/index.ts b/frontend/src/utils/index.ts index 2e993f03..35eb41c8 100644 --- a/frontend/src/utils/index.ts +++ b/frontend/src/utils/index.ts @@ -154,3 +154,20 @@ export function parseIdentity( verified_at: identity.verified_at ? parseISO(identity.verified_at) : null, } } + +/** + * Method to ensure the correct "styled" case of a institution acronym. + * + * @param instName An institution acronym in any case + * @returns The correct "styled" case acronym, or the input string if no match. + */ +export function instNameUpperCaser(instName: String): String { + switch (instName.toLocaleLowerCase()) { + case 'uio': + return 'UiO' + case 'uib': + return 'UiB' + default: + return instName + } +} -- GitLab