Skip to content

Commit

Permalink
Revert endringer
Browse files Browse the repository at this point in the history
  • Loading branch information
frodehansen2 committed Sep 23, 2024
1 parent 7e986b8 commit 0752242
Show file tree
Hide file tree
Showing 20 changed files with 230 additions and 63 deletions.
1 change: 0 additions & 1 deletion apps/omsorgspengesoknad/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
"@navikt/ds-react": "7.0.1",
"@navikt/ds-tailwind": "7.0.1",
"@navikt/sif-app-register": "*",
"@navikt/sif-common": "*",
"@navikt/sif-common-amplitude": "*",
"@navikt/sif-common-core-ds": "*",
"@navikt/sif-common-formik-ds": "*",
Expand Down
105 changes: 94 additions & 11 deletions apps/omsorgspengesoknad/server.cjs
Original file line number Diff line number Diff line change
@@ -1,29 +1,84 @@
/* eslint-disable no-console */
const express = require('express');
const path = require('path');
const mustacheExpress = require('mustache-express');
const getAppSettings = require('./src/build/AppSettings.cjs');
const getDecorator = require('./src/build/decorator.cjs');
const compression = require('compression');
const cookieParser = require('cookie-parser');
const jose = require('jose');
const { v4: uuidv4 } = require('uuid');
const { createProxyMiddleware } = require('http-proxy-middleware');
const { initTokenX, exchangeToken } = require('./tokenx.cjs');
const RateLimit = require('express-rate-limit');

const isDev = process.env.NODE_ENV === 'development';

const serverUtils = require('@navikt/sif-common/server/serverUtils');

if (isDev) {
require('dotenv').config();
}

const server = serverUtils.initServer();
const server = express();
server.use((_req, res, next) => {
res.removeHeader('X-Powered-By');
res.set('X-Frame-Options', 'SAMEORIGIN');
res.set('X-XSS-Protection', '1; mode=block');
res.set('X-Content-Type-Options', 'nosniff');
res.set('Referrer-Policy', 'no-referrer');
res.set('Feature-Policy', "geolocation 'none'; microphone 'none'; camera 'none'");
next();
});
server.use(compression());
server.use(cookieParser());

if (isDev) {
require('dotenv').config();
server.set('views', `${__dirname}`);
} else {
server.set('views', `${__dirname}/dist`);
}
server.set('view engine', 'mustache');
server.engine('html', mustacheExpress());

const logError = (errorMessage, details) => console.log(errorMessage, details);

const isExpiredOrNotAuthorized = (token) => {
if (token) {
try {
const exp = jose.decodeJwt(token).exp;
return Date.now() >= exp * 1000;
} catch (err) {
// eslint-disable-next-line no-console
console.error('Feilet med dekoding av token: ', err);
return true;
}
}
return true;
};

const getRouterConfig = async (req, audience) => {
{
req.headers['X-Correlation-ID'] = uuidv4();

if (process.env.NAIS_CLIENT_ID !== undefined) {
req.headers['X-K9-Brukerdialog'] = process.env.NAIS_CLIENT_ID;
}

if (req.headers['authorization'] !== undefined) {
const token = req.headers['authorization'].replace('Bearer ', '');
if (isExpiredOrNotAuthorized(token)) {
return undefined;
}
const exchangedToken = await exchangeToken(token, audience);
if (exchangedToken != null && !exchangedToken.expired() && exchangedToken.access_token) {
req.headers['authorization'] = `Bearer ${exchangedToken.access_token}`;
}
}

return undefined;
}
};

const renderApp = (decoratorFragments) =>
new Promise((resolve, reject) => {
server.render('index.html', decoratorFragments, (err, html) => {
Expand All @@ -35,20 +90,48 @@ const renderApp = (decoratorFragments) =>
});
});

// const setupTokenX = async () => {
// if (isDev) {
// return Promise.resolve();
// }
// return Promise.all([initTokenX()]);
// };
const setupTokenX = async () => {
if (isDev) {
return Promise.resolve();
}
return Promise.all([initTokenX()]);
};

const startServer = async (html) => {
await serverUtils.tokenXUtils.setupTokenX(isDev);
await setupTokenX();

server.get(`${process.env.PUBLIC_PATH}/health/isAlive`, (_req, res) => res.sendStatus(200));
server.get(`${process.env.PUBLIC_PATH}/health/isReady`, (_req, res) => res.sendStatus(200));

serverUtils.createProxyMiddlewares(server);
server.use(
process.env.FRONTEND_API_PATH,
createProxyMiddleware({
target: process.env.API_URL,
changeOrigin: true,
pathRewrite: (path) => {
return path.replace(process.env.FRONTEND_API_PATH, '');
},
router: async (req) => getRouterConfig(req, process.env.API_TOKENX_AUDIENCE),
secure: true,
xfwd: true,
logLevel: 'info',
}),
);

server.use(
process.env.K9_SAK_INNSYN_API_PATH,
createProxyMiddleware({
target: process.env.K9_SAK_INNSYN_API_URL,
changeOrigin: true,
pathRewrite: (path) => {
return path.replace(process.env.K9_SAK_INNSYN_API_PATH, '');
},
router: async (req) => getRouterConfig(req, process.env.K9_SAK_INNSYN_API_TOKENX_AUDIENCE),
secure: true,
xfwd: true,
logLevel: 'info',
}),
);

if (isDev) {
const fs = require('fs');
Expand Down
1 change: 1 addition & 0 deletions apps/omsorgspengesoknad/src/app/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import axios, { AxiosError, AxiosRequestConfig, RawAxiosRequestHeaders } from 'a
import { relocateToLoginPage, relocateToNoAccessPage } from '../utils/navigationUtils';

export enum ApiEndpoint {
'soker' = 'oppslag/soker',
'barn' = 'oppslag/barn',
'send_søknad' = 'omsorgspenger-utvidet-rett/innsending',
'vedlegg' = 'vedlegg',
Expand Down
55 changes: 55 additions & 0 deletions apps/omsorgspengesoknad/src/app/api/endpoints/barnEndpoint.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { ISODateToDate } from '@navikt/sif-common-utils';
import { isObject, isString } from 'formik';
import { isArray } from 'lodash';
import { RegistrertBarn } from '../../types/RegistrertBarn';
import api, { ApiEndpoint } from '../api';

export interface BarnDTO {
barn: Array<{
aktørId: string;
fornavn: string;
etternavn: string;
mellomnavn?: string;
fødselsdato: string;
}>;
}
export const isValidRegistrertBarnResponse = (response: any): response is RegistrertBarn => {
if (
isObject(response) &&
isString(response.aktørId) &&
isString(response.fornavn) &&
isString(response.etternavn) &&
isString(response.fødselsdato)
) {
return true;
} else {
return false;
}
};

const barnEndpoint = {
fetch: async (): Promise<RegistrertBarn[]> => {
const { data } = await api.get<BarnDTO>(ApiEndpoint.barn);
const registrerteBarn: RegistrertBarn[] = [];

let hasInvalidBarnRespons = false;
if (data?.barn && isArray(data.barn)) {
data.barn.forEach((barn) => {
if (isValidRegistrertBarnResponse(barn)) {
registrerteBarn.push({
...barn,
fødselsdato: ISODateToDate(barn.fødselsdato),
});
} else {
hasInvalidBarnRespons = true;
}
});
}
if (hasInvalidBarnRespons) {
return Promise.reject('Invalid barn respons');
}
return Promise.resolve(registrerteBarn);
},
};

export default barnEndpoint;
29 changes: 29 additions & 0 deletions apps/omsorgspengesoknad/src/app/api/endpoints/søkerEndpoint.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { isValidSøkerResponse, Søker } from '../../types/Søker';
import api, { ApiEndpoint } from '../api';

type SøkerDTO = {
etternavn: string;
fornavn: string;
mellomnavn?: string;
kjønn: string;
fødselsnummer: string;
};

const søkerEndpoint = {
fetch: async (): Promise<Søker> => {
const { data } = await api.get<SøkerDTO>(ApiEndpoint.soker);
if (!isValidSøkerResponse(data)) {
return Promise.reject(`Invalid søkerdata`);
}
return Promise.resolve(data);
},
fetchId: async (): Promise<string> => {
const { data } = await api.get<SøkerDTO>(ApiEndpoint.soker);
if (!isValidSøkerResponse(data)) {
return Promise.reject(`Invalid søkerdata`);
}
return Promise.resolve(data.fødselsnummer);
},
};

export default søkerEndpoint;
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { Søker } from '@navikt/sif-common';
import persistence, { PersistenceInterface } from '@navikt/sif-common-core-ds/src/utils/persistence/persistence';
import { jsonSort } from '@navikt/sif-common-utils';
import { AxiosResponse } from 'axios';
import hash from 'object-hash';
import { SØKNAD_VERSJON } from '../../constants/SØKNAD_VERSJON';
// import { Søker } from '../../types/Søker';
import { Søker } from '../../types/Søker';
import { SøknadContextState } from '../../types/SøknadContextState';
import { isValidSøknadRoute } from '../../utils/søknadRoutesUtils';
import { ApiEndpoint, axiosConfig } from '../api';
Expand Down
7 changes: 4 additions & 3 deletions apps/omsorgspengesoknad/src/app/api/useSøknadInitialData.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { useEffect, useState } from 'react';
import { fetchBarn, fetchSøker } from '@navikt/sif-common';
import { isUnauthorized } from '@navikt/sif-common-core-ds/src/utils/apiUtils';
import { RegistrertBarn, Søker } from '@navikt/sif-common/api/types';
import { SØKNAD_VERSJON } from '../constants/SØKNAD_VERSJON';
Expand All @@ -11,6 +10,8 @@ import søknadStateEndpoint, {
isPersistedSøknadStateValid,
SøknadStatePersistence,
} from './endpoints/søknadStateEndpoint';
import søkerEndpoint from './endpoints/søkerEndpoint';
import barnEndpoint from './endpoints/barnEndpoint';

export type SøknadInitialData = SøknadContextState;

Expand Down Expand Up @@ -67,8 +68,8 @@ function useSøknadInitialData(): SøknadInitialDataState {

const fetch = async () => {
try {
const søker = await fetchSøker();
const barn = await fetchBarn();
const søker = await søkerEndpoint.fetch();
const barn = await barnEndpoint.fetch();
const lagretSøknadState = await søknadStateEndpoint.fetch();
setInitialData({
status: RequestStatus.success,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useEffect, useState } from 'react';
import innvilgetVedtakEndpoint from '../api/endpoints/innvilgetVedtakEndpoint';
import { HentSisteGyldigeVedtakResponseDto } from '../types/innvilgetVedtakApiData/HentSisteGyldigeVedtakResponseDto';
import { RegistrertBarn } from '@navikt/sif-common';
import { RegistrertBarn } from '../types/RegistrertBarn';

export interface InnvilgedeVedtak {
[key: string]: HentSisteGyldigeVedtakResponseDto;
Expand Down
5 changes: 2 additions & 3 deletions apps/omsorgspengesoknad/src/app/søknad/SøknadRouter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react';
import { Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom';
import LoadingSpinner from '@navikt/sif-common-core-ds/src/atoms/loading-spinner/LoadingSpinner';
import { useVerifyUserOnWindowFocus } from '@navikt/sif-common-soknad-ds/src';
// import søkerEndpoint from '../api/endpoints/søkerEndpoint';
import søkerEndpoint from '../api/endpoints/søkerEndpoint';
import { useMellomlagring } from '../hooks/useMellomlagring';
import { usePersistSøknadState } from '../hooks/usePersistSøknadState';
import { useResetSøknad } from '../hooks/useResetSøknad';
Expand All @@ -17,7 +17,6 @@ import DeltBostedStep from './steps/delt-bosted/DeltBostedStep';
import LegeerklæringStep from './steps/legeerklæring/LegeerklæringStep';
import OmBarnetStep from './steps/om-barnet/OmBarnetStep';
import OppsummeringStep from './steps/oppsummering/OppsummeringStep';
import { fetchSøkerId } from '@navikt/sif-common';

const SøknadRouter = () => {
const { pathname } = useLocation();
Expand All @@ -31,7 +30,7 @@ const SøknadRouter = () => {
const { setShouldResetSøknad, shouldResetSøknad } = useResetSøknad();

usePersistSøknadState();
useVerifyUserOnWindowFocus(søker.fødselsnummer, fetchSøkerId);
useVerifyUserOnWindowFocus(søker.fødselsnummer, søkerEndpoint.fetchId);

useEffect(() => {
if (stateSøknadRoute && isFirstTimeLoadingApp) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { RegistrertBarn } from '@navikt/sif-common';
import { BarnSammeAdresse } from '../../types/BarnSammeAdresse';
import { RegistrertBarn } from '../../types/RegistrertBarn';
import { SøkersRelasjonTilBarnet } from '../../types/SøkersRelasjonTilBarnet';
import { OmBarnetSøknadsdata } from '../../types/søknadsdata/Søknadsdata';
import { includeDeltBostedStep } from '../søknadStepConfig';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { RegistrertBarn, Søker } from '@navikt/sif-common';
import { isDevMode } from '@navikt/sif-common-core-ds/src/utils/envUtils';
import { YesOrNo } from '@navikt/sif-common-formik-ds';
import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler';
Expand All @@ -22,6 +21,8 @@ import HøyereRisikoForFraværBeskrivelseSpørsmål from './spørsmål/HøyereRi
import HøyereRisikoForFraværSpørsmål from './spørsmål/HøyereRisikoForFraværSpørsmål';
import KroniskEllerFunksjonshemningSpørsmål from './spørsmål/KroniskEllerFunksjonshemningSpørsmål';
import RegistrertBarnSpørsmål from './spørsmål/RegistrertBarnSpørsmål';
import { RegistrertBarn } from '../../../types/RegistrertBarn';
import { Søker } from '../../../types/Søker';

interface Props {
values: Partial<OmBarnetFormValues>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ import { SøknadContextState } from '../../../types/SøknadContextState';
import { OmBarnetSøknadsdata, Søknadsdata } from '../../../types/søknadsdata/Søknadsdata';
import { OmBarnetFormValues } from './OmBarnetStep';
import { SøkersRelasjonTilBarnet } from '../../../types/SøkersRelasjonTilBarnet';
import { RegistrertBarn } from '@navikt/sif-common';

import { RegistrertBarn } from '../../../types/RegistrertBarn';
export const getOmBarnetStepInitialValues = (
søknadsdata: Søknadsdata,
formValues?: OmBarnetFormValues,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useAppIntl } from '../../../../i18n';
import { OmBarnetFormFields } from '../OmBarnetStep';
import { mapBarnTilRadioProps } from '../omBarnetStepUtils';
import { omBarnetFormComponents } from '../omBarnetFormComponents';
import { RegistrertBarn } from '@navikt/sif-common';
import { RegistrertBarn } from '../../../../types/RegistrertBarn';

interface Props {
registrerteBarn: RegistrertBarn[];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { FormSummary } from '@navikt/ds-react';
import React from 'react';
import { Søker } from '@navikt/sif-common';
import { formatName } from '@navikt/sif-common-core-ds/src/utils/personUtils';
import { useAppIntl } from '../../../../i18n';
import { Søker } from '../../../../types/Søker';

interface Props {
søker: Søker;
Expand Down
14 changes: 7 additions & 7 deletions apps/omsorgspengesoknad/src/app/types/RegistrertBarn.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// export interface RegistrertBarn {
// aktørId: string;
// fornavn: string;
// etternavn: string;
// mellomnavn?: string;
// fødselsdato: Date;
// }
export interface RegistrertBarn {
aktørId: string;
fornavn: string;
etternavn: string;
mellomnavn?: string;
fødselsdato: Date;
}
Loading

0 comments on commit 0752242

Please sign in to comment.