Skip to content
This repository was archived by the owner on Nov 1, 2024. It is now read-only.

Commit 7dce3a4

Browse files
authored
Merge branch 'main' into collapsible-menu-productarea
2 parents 44401e9 + 8f434d5 commit 7dce3a4

17 files changed

+247
-237
lines changed

.github/workflows/deploy.yaml

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ jobs:
3232
uses: nais/deploy/actions/deploy@v2
3333
env:
3434
CLUSTER: dev-gcp
35-
VAR: image=${{ needs.build-and-push.outputs.image }},ingress=https://data.intern.dev.nav.no/
36-
RESOURCE: .nais/nais.yaml
35+
VAR: image=${{ needs.build-and-push.outputs.image }}
36+
RESOURCE: .nais/dev.yaml
3737

3838
deploy-prod:
3939
runs-on: ubuntu-latest
@@ -47,5 +47,5 @@ jobs:
4747
uses: nais/deploy/actions/deploy@v2
4848
env:
4949
CLUSTER: prod-gcp
50-
VAR: image=${{ needs.build-and-push.outputs.image }},ingress=https://data.intern.nav.no/
51-
RESOURCE: .nais/nais.yaml,.nais/alert.yaml
50+
VAR: image=${{ needs.build-and-push.outputs.image }}
51+
RESOURCE: .nais/prod.yaml,.nais/alert.yaml

.nais/dev.yaml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: 'nais.io/v1alpha1'
2+
kind: 'Application'
3+
metadata:
4+
name: nada-frontend
5+
namespace: nada
6+
labels:
7+
team: nada
8+
spec:
9+
image: {{image}}
10+
port: 3000
11+
ingresses:
12+
- https://data.ansatt.dev.nav.no
13+
accessPolicy:
14+
outbound:
15+
rules:
16+
- application: nada-backend

.nais/nais.yaml .nais/prod.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ spec:
99
image: {{image}}
1010
port: 3000
1111
ingresses:
12-
- {{ingress}}
12+
- https://data.ansatt.nav.no
1313
accessPolicy:
1414
outbound:
1515
rules:

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:21.7.1-alpine AS node-with-deps
1+
FROM node:21.7.3-alpine AS node-with-deps
22

33
WORKDIR /usr/app
44

components/dataproducts/access/datasetAccess.tsx

+89-59
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ import { useState } from 'react'
33
import { isAfter, parseISO, format } from 'date-fns'
44
import {
55
useRevokeAccessMutation,
6-
useApproveAccessRequestMutation,
7-
useDenyAccessRequestMutation,
86
} from '../../../lib/schema/graphql'
97
import {
108
Alert,
@@ -19,7 +17,7 @@ import { ExternalLink } from '@navikt/ds-icons'
1917
import { nb } from 'date-fns/locale'
2018
import ErrorMessage from '../../lib/error'
2119
import { useGetDataset } from '../../../lib/rest/dataproducts'
22-
import { useFetchAccessRequestsForDataset } from '../../../lib/rest/access'
20+
import { apporveAccessRequest, denyAccessRequest, useFetchAccessRequestsForDataset } from '../../../lib/rest/access'
2321

2422
interface AccessEntry {
2523
subject: string
@@ -126,23 +124,89 @@ interface AccessModalProps {
126124

127125
interface AccessRequestModalProps {
128126
requestID: string
129-
actionDeny: (requestID: string, setOpen: Function) => void
130-
actionApprove: (requestID: string) => void
127+
user?: string
131128
}
132129

133-
const AccessRequestModal = ({
130+
export const AccessRequestModal = ({
134131
requestID,
135-
actionDeny,
136-
actionApprove,
132+
user,
137133
}: AccessRequestModalProps) => {
138-
const [open, setOpen] = useState(false)
134+
const [openDeny, setOpenDeny] = useState(false)
135+
const [openApprove, setOpenApprove] = useState(false)
136+
const [errorApprove, setErrorApprove] = useState<string|undefined>(undefined)
137+
const [errorDeny, setErrorDeny] = useState<string|undefined>(undefined)
138+
const approve = async (requestID: string) =>
139+
apporveAccessRequest(requestID).then(res=>
140+
{
141+
setOpenApprove(false)
142+
setErrorApprove(undefined)
143+
window.location.reload();
144+
}
145+
).catch((e:any)=>{
146+
setErrorApprove(e.message)
147+
})
148+
const deny = async (requestID: string, reason?: string)=>denyAccessRequest(requestID, reason ||'')
149+
.then(()=>{
150+
setOpenDeny(false)
151+
setErrorDeny(undefined)
152+
window.location.reload();
153+
}).catch((e:any)=>{
154+
setErrorDeny(e.message)
155+
})
156+
157+
158+
const cancelApprove = () => {
159+
setOpenApprove(false)
160+
setErrorApprove(undefined)
161+
}
162+
163+
const cancelDeny = () => {
164+
setOpenDeny(false)
165+
setErrorDeny(undefined)
166+
}
167+
139168
return (
140169
<>
141170
<Modal
142-
open={open}
171+
open={openApprove}
172+
aria-label="Godkjenn søknad"
173+
onClose={() => setOpenApprove(false)}
174+
className='w-full md:w-[60rem] px-8 h-[13rem]'
175+
>
176+
<Modal.Body className='h-full'>
177+
<div className='flex flex-col justify-center items-center'>
178+
<Heading level="1" size="medium">
179+
Godkjenn søknad
180+
</Heading>
181+
<p className='mt-4 mb-4'>Gi tilgang til datasett{user ? ` til ${user}` : ''}? </p>
182+
<div className="flex flex-row gap-4">
183+
<Button
184+
onClick={cancelApprove}
185+
variant="secondary"
186+
size="small"
187+
>
188+
Avbryt
189+
</Button>
190+
<Button
191+
onClick={() => {
192+
approve(requestID)
193+
}}
194+
variant="primary"
195+
size="small"
196+
>
197+
Godkjenn
198+
</Button>
199+
</div>
200+
{errorApprove && <div className='text-red-600'>{errorApprove}</div>}
201+
</div>
202+
</Modal.Body>
203+
</Modal>
204+
205+
<Modal
206+
open={openDeny}
143207
aria-label="Avslå søknad"
144-
onClose={() => setOpen(false)}
145-
className="max-w-full md:max-w-3xl px-8 h-[20rem]"
208+
onClose={() => setOpenDeny(false)}
209+
className="max-w-full md:max-w-3xl px-8 h-[24rem]"
146210
>
147211
<Modal.Body className="h-full">
148212
<div className="flex flex-col gap-8">
@@ -152,32 +216,33 @@ const AccessRequestModal = ({
152216
<Textarea label="Begrunnelse" />
153217
<div className="flex flex-row gap-4">
154218
<Button
155-
onClick={() => setOpen(false)}
219+
onClick={cancelDeny}
156220
variant="secondary"
157221
size="small"
158222
>
159223
Avbryt
160224
</Button>
161225
<Button
162-
onClick={() => actionDeny(requestID, setOpen)}
226+
onClick={() => deny(requestID)}
163227
variant="primary"
164228
size="small"
165229
>
166230
Avslå
167231
</Button>
168232
</div>
233+
{errorDeny && <div className='text-red-600'>{errorDeny}</div>}
169234
</div>
170235
</Modal.Body>
171236
</Modal>
172237
<div className="flex flex-row flex-nowrap gap-4 justify-end">
173238
<Button
174-
onClick={() => actionApprove(requestID)}
239+
onClick={() => setOpenApprove(true)}
175240
variant="secondary"
176241
size="small"
177242
>
178243
Godkjenn
179244
</Button>
180-
<Button onClick={() => setOpen(true)} variant="secondary" size="small">
245+
<Button onClick={() => setOpenDeny(true)} variant="secondary" size="small">
181246
Avslå
182247
</Button>
183248
</div>
@@ -235,58 +300,24 @@ const AccessModal = ({ accessEntry, action }: AccessModalProps) => {
235300
const DatasetAccess = ({ id }: AccessListProps) => {
236301
const [formError, setFormError] = useState('')
237302
const [revokeAccess] = useRevokeAccessMutation()
238-
const [approveAccessRequest] = useApproveAccessRequestMutation()
239-
const [denyAccessRequest] = useDenyAccessRequestMutation()
240303
const fetchAccessRequestsForDataset = useFetchAccessRequestsForDataset(id)
241304

242305
const getDataset = useGetDataset(id)
243306

244307
if (fetchAccessRequestsForDataset.error)
245308
return <ErrorMessage error={fetchAccessRequestsForDataset.error} />
246-
if (
247-
fetchAccessRequestsForDataset.loading ||
248-
!fetchAccessRequestsForDataset.data?.accessRequests
249-
)
250-
return <div />
251309

252-
const datasetAccessRequests =
253-
fetchAccessRequestsForDataset.data.accessRequests as any[]
310+
const datasetAccessRequests = fetchAccessRequestsForDataset.loading ||
311+
!fetchAccessRequestsForDataset.data?.accessRequests
312+
? []
313+
: fetchAccessRequestsForDataset.data.accessRequests as any[]
254314

255315
if (getDataset.error)
256316
return <ErrorMessage error={getDataset.error} />
257-
if (
258-
getDataset.loading ||
259-
!getDataset?.dataset?.access
260-
)
261-
return <div />
262-
263-
const access = getDataset.dataset.access
264-
265-
const approveRequest = async (requestID: string) => {
266-
try {
267-
await approveAccessRequest({
268-
variables: { id: requestID },
269-
refetchQueries: [
270-
],
271-
})
272-
} catch (e: any) {
273-
setFormError(e.message)
274-
}
275-
}
276317

277-
const denyRequest = async (requestID: string, setOpen: Function) => {
278-
try {
279-
await denyAccessRequest({
280-
variables: { id: requestID },
281-
refetchQueries: [
282-
],
283-
})
284-
} catch (e: any) {
285-
setFormError(e.message)
286-
} finally {
287-
setOpen(false)
288-
}
289-
}
318+
const access = getDataset.loading ||
319+
!getDataset?.dataset?.access ? [] :
320+
getDataset.dataset.access
290321

291322
const removeAccess = async (a: access, setOpen: Function) => {
292323
try {
@@ -351,8 +382,7 @@ const DatasetAccess = ({ id }: AccessListProps) => {
351382
<Table.DataCell className="w-[150px]" align="right">
352383
<AccessRequestModal
353384
requestID={r.id}
354-
actionApprove={approveRequest}
355-
actionDeny={denyRequest}
385+
user={r.subject}
356386
/>
357387
</Table.DataCell>
358388
</Table.Row>

components/dataproducts/accessRequest/accessRequestsListForOwner.tsx

-77
This file was deleted.

components/header/user.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,15 @@ export default function User() {
8484
Mine innsiktsprodukter
8585
</Dropdown.Menu.GroupedList.Item>
8686

87+
<Dropdown.Menu.GroupedList.Item
88+
className={'text-base'}
89+
onClick={() => {
90+
router.push({ pathname: '/user/requestsForGroup' })
91+
}}
92+
>
93+
Tilgangssøknader til meg
94+
</Dropdown.Menu.GroupedList.Item>
95+
8796
<Dropdown.Menu.GroupedList.Item
8897
className={'text-base'}
8998
onClick={() => {
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Alert, Link } from "@navikt/ds-react"
2+
import { useContext, useState } from "react"
3+
import { UserState } from "../../lib/context"
4+
5+
export const AccessRequestAlert = () => {
6+
const userData = useContext(UserState)
7+
return userData?.accessRequestsAsGranter?.length ?(
8+
<Alert variant='info'>
9+
Du har tilgangssøknad som venter på <Link href="/user/requestsForGroup">behandling</Link>.
10+
</Alert>): <></>
11+
}

0 commit comments

Comments
 (0)