-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLoginForm.tsx
88 lines (73 loc) · 2.92 KB
/
LoginForm.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import React, { useState } from 'react';
import { Alert, Button, Heading, TextField, VStack } from "@navikt/ds-react";
import axios from 'axios';
import { useNavigate } from 'react-router-dom';
function LoginForm() {
const [formData, setFormData] = useState({orgnr: ''});
const [error, setError] = useState(null);
const navigate = useNavigate();
const handleInputChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value,
});
};
const handleSubmit = async () => {
setError(null);
try {
const response = await axios.post(`${import.meta.env.VITE_REACT_APP_BASE_URL}/systembruker`, new URLSearchParams(formData), {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
});
localStorage.setItem('token', response.data.tokenResponse.access_token);
localStorage.setItem('exp', Date.now() + response.data.tokenResponse.expires_in * 1000);
localStorage.setItem('orgnr', formData.orgnr);
navigate('/search');
} catch (error) {
setError(error?.response?.data || "Noe gikk galt.");
}
};
const handleRegistrerNyBedrift = async () => {
setError(null);
try {
const response = await axios.post(`${import.meta.env.VITE_REACT_APP_BASE_URL}/registrer-ny-bedrift`, {
kundeOrgnr: formData.orgnr,
}, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
});
if (!!response.data.confirmUrl) {
window.location.href = response.data.confirmUrl;
} else {
throw Error("Klarte ikke hente bekreftelses-url fra registreringsrespons.")
}
} catch (error) {
setError('Noe gikk galt da vi skulle registrere din bedrift som ny kunde. Det kan skyldes at den allerede er registrert. ' + error.message);
}
};
return (
<VStack gap="4" justify="center">
<Heading size="medium">
Logg inn og sett i gang!
</Heading>
{error && <Alert variant="error">{error}</Alert>}
<TextField
label="Orgnr"
name="orgnr"
value={formData.orgnr}
onChange={handleInputChange}
maxLength={9}
style={{maxWidth: 110}}
/>
<Button variant="primary" onClick={handleSubmit} style={{maxWidth: 340}}>
Logg inn
</Button>
<Button variant="secondary" onClick={handleRegistrerNyBedrift} style={{maxWidth: 340}}>
Registrer ny bedrift
</Button>
</VStack>
);
}
export default LoginForm;