Skip to content

Commit 67f8f77

Browse files
committed
Bedre støtte for userKey
1 parent d043466 commit 67f8f77

File tree

3 files changed

+51
-17
lines changed

3 files changed

+51
-17
lines changed

v3/packages/dev-server/index.ts

+31
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ import { SuccessResponse } from './responses/SuccessResponse';
66
import { mockMe } from '../internarbeidsflate-decorator-v3/src/__mocks__/mock-handlers'
77
import { NotFoundResponse } from './responses/NotFoundResponse';
88
import { BunServerWebsocket } from './types';
9+
910
type Metadata = { ident: string };
1011

1112
const serve = () => {
1213
type Context = { aktivEnhet: string | undefined; aktivBruker: string | undefined };
1314
const context: Context = { aktivEnhet: '0118', aktivBruker: '10108000398' };
1415
const clients: Record<string, BunServerWebsocket> = {};
16+
const codeToFnr: Record<string, string> = {}
1517

1618
const app = new CustomServer();
1719

@@ -79,6 +81,35 @@ const serve = () => {
7981
return new SuccessResponse({...context});
8082
});
8183

84+
app.post('/modiacontextholder/api/fnr-code/retrieve', async (request) => {
85+
if (!request.body) {
86+
return new BadRequestResponse('No body provided');
87+
}
88+
89+
const { code }: { code: string } = await Bun.readableStreamToJSON(request.body);
90+
91+
const fnr = codeToFnr[code]
92+
93+
if (!fnr) {
94+
return new NotFoundResponse()
95+
}
96+
97+
return new SuccessResponse({ fnr, code });
98+
});
99+
100+
app.post('/modiacontextholder/api/fnr-code/generate', async (request) => {
101+
if (!request.body) {
102+
return new BadRequestResponse('No body provided');
103+
}
104+
105+
const { fnr }: { fnr: string } = await Bun.readableStreamToJSON(request.body);
106+
107+
const code = crypto.randomUUID()
108+
109+
codeToFnr[code] = fnr
110+
111+
return new SuccessResponse({ fnr, code });
112+
});
82113
app.addWebSocketHandler<Metadata>('/ws/:ident', {
83114
open: (ws, params) => {
84115
const ident = params.ident;

v3/packages/internarbeidsflate-decorator-v3/src/api/ContextHolderAPI.ts

+13-9
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,22 @@ interface AktivEnhetResponse {
1010
aktivEnhet: string | undefined;
1111
}
1212

13+
interface FnrCodeResponse {
14+
fnr: string;
15+
code: string;
16+
}
1317

1418
export class ContextHolderAPI extends ApiClient {
1519
constructor(url: string, token?: string) {
1620
super(url, token);
1721
}
1822

1923
readonly exhangeUserKeyForFnr = (
20-
userKey: string,
21-
): Promise<FetchResponse<string>> => {
22-
return this.post<string>({
23-
path: `/bytt-bruker-nokkel`,
24-
body: { userKey },
24+
code: string,
25+
): Promise<FetchResponse<FnrCodeResponse>> => {
26+
return this.post<FnrCodeResponse>({
27+
path: `/fnr-code/retrieve`,
28+
body: { code },
2529
});
2630
};
2731

@@ -40,22 +44,22 @@ export class ContextHolderAPI extends ApiClient {
4044
};
4145

4246
readonly getEnhet = (enhetId: string): Promise<FetchResponse<Enhet>> => {
43-
return this.get<Enhet>({ path: `/enhet/${enhetId}` })
47+
return this.get<Enhet>({ path: `/enhet/${enhetId}` });
4448
};
4549

4650
readonly getVeilederDetails = (): Promise<FetchResponse<Veileder>> => {
47-
return this.get<Veileder>({ path: `/decorator` })
51+
return this.get<Veileder>({ path: `/decorator` });
4852
};
4953

5054
readonly getVeiledersActiveFnr = (): Promise<
5155
FetchResponse<AktivBrukerResponse>
5256
> => {
53-
return this.get<AktivBrukerResponse>({ path: `/v2/aktivbruker` })
57+
return this.get<AktivBrukerResponse>({ path: `/v2/aktivbruker` });
5458
};
5559

5660
readonly getVeiledersActiveEnhet = (): Promise<
5761
FetchResponse<AktivEnhetResponse>
5862
> => {
59-
return this.get<AktivEnhetResponse>({ path: `/v2/aktivenhet` })
63+
return this.get<AktivEnhetResponse>({ path: `/v2/aktivenhet` });
6064
};
6165
}

v3/packages/internarbeidsflate-decorator-v3/src/store/FnrValueManager.ts

+7-8
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ export class FnrValueManager extends ContextValueManager {
4646
if (fnrKey) {
4747
await this.changeFnrLocallyAndExternally(fnrKey);
4848
}
49-
5049
};
5150

5251
#registerPropsHandler = () => {
@@ -58,10 +57,8 @@ export class FnrValueManager extends ContextValueManager {
5857
);
5958
};
6059

61-
readonly updateFnrLocallyToMatchContextHolder = async (
62-
) => {
63-
const activeUser =
64-
await this.contextHolderApi.getVeiledersActiveFnr();
60+
readonly updateFnrLocallyToMatchContextHolder = async () => {
61+
const activeUser = await this.contextHolderApi.getVeiledersActiveFnr();
6562
if (activeUser.error) {
6663
this.#errorMessageManager.addErrorMessage(
6764
PredefiniertFeilmeldinger.HENT_BRUKER_CONTEXT_FEILET,
@@ -132,16 +129,18 @@ export class FnrValueManager extends ContextValueManager {
132129
): Promise<string | undefined> => {
133130
let fnr = initialFnr;
134131

135-
if (userKey?.length) {
132+
if (userKey?.length && !erGyldigFodselsnummer(userKey)) {
136133
const res = await this.contextHolderApi.exhangeUserKeyForFnr(userKey);
137-
if (res.error) {
134+
if (res.error || !res.data) {
138135
this.#errorMessageManager.addErrorMessage({
139136
code: ErrorMessageCode.BYTT_BRUKERNØKKEL_FEILET,
140137
message: 'Klarte ikke å bytte inn brukernøkkel til fnr.',
141138
});
142139
} else {
143-
fnr = res.data;
140+
fnr = res.data.fnr;
144141
}
142+
} else if (userKey?.length && erGyldigFodselsnummer(userKey)) {
143+
fnr = userKey;
145144
}
146145
return fnr;
147146
};

0 commit comments

Comments
 (0)