diff --git a/app/components/app-bar/AppBar.tsx b/app/components/app-bar/AppBar.tsx index b7b48f4..ad87cb1 100644 --- a/app/components/app-bar/AppBar.tsx +++ b/app/components/app-bar/AppBar.tsx @@ -8,7 +8,7 @@ import { TasklistIcon, XMarkIcon } from '@navikt/aksel-icons'; -import { NavLink, Link} from "@remix-run/react"; +import {Link} from "@remix-run/react"; import MeInfo from "~/components/app-bar/MeInfo"; import {IMeInfo} from "~/data/types"; import {BodyShort, Box, Button, HGrid, Hide, HStack, LinkPanel, Popover} from "@navikt/ds-react"; @@ -67,7 +67,7 @@ export function AppBar(props: { me: IMeInfo, basePath?: string }) { - + Brukere diff --git a/app/components/assignment/AssignedRolesTable.tsx b/app/components/assignment/AssignedRolesTable.tsx index 0577d8f..bc6e6a7 100644 --- a/app/components/assignment/AssignedRolesTable.tsx +++ b/app/components/assignment/AssignedRolesTable.tsx @@ -8,7 +8,8 @@ export const AssignedRolesTable: any = (props: { assignedRoles: IAssignedRoles, size: string, page: string, - search: string + search: string, + basePath?: string }) => { const [searchParams, setSearchParams] = useSearchParams() @@ -48,7 +49,7 @@ export const AssignedRolesTable: any = (props: { variant={"secondary"} icon={} iconPosition={"right"} - href={`/resources/${params.id}/role-assignments/${role.assignmentRef}/delete?page=${searchParams.get("page") === null ? 0 : searchParams.get("page")}`} + href={`${props.basePath}/resources/${params.id}/role-assignments/${role.assignmentRef}/delete?page=${searchParams.get("page") === null ? 0 : searchParams.get("page")}`} > Slett diff --git a/app/components/assignment/AssignedUsersTable.tsx b/app/components/assignment/AssignedUsersTable.tsx index 31ad258..88a220e 100644 --- a/app/components/assignment/AssignedUsersTable.tsx +++ b/app/components/assignment/AssignedUsersTable.tsx @@ -4,7 +4,12 @@ import React from "react"; import {Outlet, useParams, useSearchParams} from "@remix-run/react"; import {TrashIcon} from "@navikt/aksel-icons"; -export const AssignedUsersTable: any = (props: { assignedUsers: IAssignedUsers, size: string, page: string }) => { +export const AssignedUsersTable: any = (props: { + assignedUsers: IAssignedUsers, + size: string, + page: string, + basePath?: string +}) => { const [searchParams, setSearchParams] = useSearchParams() const params = useParams() @@ -43,7 +48,7 @@ export const AssignedUsersTable: any = (props: { assignedUsers: IAssignedUsers, variant={"secondary"} icon={} iconPosition={"right"} - href={`/resources/${params.id}/user-assignments/${user.assignmentRef}/delete?page=${searchParams.get("page") === null ? 0 : searchParams.get("page")}`} + href={`${props.basePath}/resources/${params.id}/user-assignments/${user.assignmentRef}/delete?page=${searchParams.get("page") === null ? 0 : searchParams.get("page")}`} > Slett diff --git a/app/components/assignment/NewAssignmentRoleTable.tsx b/app/components/assignment/NewAssignmentRoleTable.tsx index 743ae86..c0b5337 100644 --- a/app/components/assignment/NewAssignmentRoleTable.tsx +++ b/app/components/assignment/NewAssignmentRoleTable.tsx @@ -1,7 +1,7 @@ import {Box, Button, Heading, Link, Pagination, Select, Table, Tag} from "@navikt/ds-react"; import type {IRole} from "~/data/types"; import React from "react"; -import {useSearchParams} from "@remix-run/react"; +import {Outlet, useSearchParams} from "@remix-run/react"; import {PlusIcon} from "@navikt/aksel-icons"; export const AssignRoleTable: any = (props: { @@ -10,7 +10,8 @@ export const AssignRoleTable: any = (props: { page: string, resourceId: string, totalPages: number, - currentPage: number + currentPage: number, + basePath?: string }) => { const [searchParams, setSearchParams] = useSearchParams() @@ -26,7 +27,7 @@ export const AssignRoleTable: any = (props: { return (
Grupper - {/**/} + @@ -54,7 +55,7 @@ export const AssignRoleTable: any = (props: { variant={"secondary"} icon={} iconPosition="right" - href={`/assignment/resource/${props.resourceId}/role/${role.id}/orgunit/${role.organisationUnitId}/assign?page=${searchParams.get("page")}`} + href={`${props.basePath}/assignment/resource/${props.resourceId}/role/${role.id}/orgunit/${role.organisationUnitId}/assign?page=${searchParams.get("page") === null ? 0 : searchParams.get("page")}`} underline={false} > Tildel diff --git a/app/components/assignment/NewAssignmentUserTable.tsx b/app/components/assignment/NewAssignmentUserTable.tsx index b0d8660..812ce1d 100644 --- a/app/components/assignment/NewAssignmentUserTable.tsx +++ b/app/components/assignment/NewAssignmentUserTable.tsx @@ -1,7 +1,7 @@ import {Box, Button, Heading, Link, Pagination, Select, Table, Tag} from "@navikt/ds-react"; import type {IUser} from "~/data/types"; import React from "react"; -import {useSearchParams} from "@remix-run/react"; +import {Outlet, useSearchParams} from "@remix-run/react"; import {PlusIcon} from "@navikt/aksel-icons"; export const AssignUserTable: any = (props: { @@ -11,6 +11,7 @@ export const AssignUserTable: any = (props: { resourceId: string, totalPages: number, currentPage: number, + basePath?: string }) => { const [searchParams, setSearchParams] = useSearchParams() @@ -26,7 +27,7 @@ export const AssignUserTable: any = (props: { return (
Brukere - {/* */} +
@@ -55,7 +56,7 @@ export const AssignUserTable: any = (props: { variant={"secondary"} icon={} iconPosition="right" - href={`/assignment/resource/${props.resourceId}/user/${user.id}/orgunit/${user.organisationUnitId}/assign?page=${searchParams.get("page")}`} + href={`${props.basePath}/assignment/resource/${props.resourceId}/user/${user.id}/orgunit/${user.organisationUnitId}/assign?page=${searchParams.get("page") === null ? 0 : searchParams.get("page")}`} underline={false} > Tildel diff --git a/app/components/resource/ResourceTable.tsx b/app/components/resource/ResourceTable.tsx index 52fa7a0..c310c2e 100644 --- a/app/components/resource/ResourceTable.tsx +++ b/app/components/resource/ResourceTable.tsx @@ -42,7 +42,7 @@ export const ResourceTable: any = (props: { resourcePage: IResourcePage, size: s } iconPosition={"right"} onClick={() => - navigate(`/resources/${resource.id}/all-assignments`) + navigate(`/resources/${resource.id}/user-assignments`) } // id={`resource-${i}`} variant={"secondary"} diff --git a/app/data/fetch-assignments.ts b/app/data/fetch-assignments.ts index c5a747b..ae705d7 100644 --- a/app/data/fetch-assignments.ts +++ b/app/data/fetch-assignments.ts @@ -1,4 +1,5 @@ import {ASSIGNMENT_API_URL, BASE_PATH} from "../../environment"; +import logger from "~/logging/logger"; export const fetchAssignedUsers = async (token: string | null, id: string | undefined, size: string, page: string, search: string, userType: string, orgUnits: string[]) => { const response = await fetch @@ -116,20 +117,27 @@ export const createRoleAssignment = async (token: string | null, resourceRef: nu if (response.ok) { return response; } - throw new Error("Nokko gjekk gale!") + throw new Error("Noe gikk galt!") } export const deleteAssignment = async (token: string | null, assignmentRef: string) => { - const response = await fetch(`${ASSIGNMENT_API_URL}${BASE_PATH}/api/assignments/${assignmentRef}`, { + + const url = `${ASSIGNMENT_API_URL}${BASE_PATH}/api/assignments/${assignmentRef}` + logger.debug("Delete assignment ", url); + const response = await fetch(url, { headers: { Authorization: token ?? "" }, method: 'DELETE' }); - + logger.debug("Response from ", url, response.status); if (response.status === 410) { return response; } - throw new Error("Nokko gjekk gale!") + + if (response.status === 403) { + throw new Error("Det ser ut som om du mangler rettigheter i løsningen") + } + throw new Error("Noe gikk galt!") } \ No newline at end of file diff --git a/app/data/fetch-me-info.ts b/app/data/fetch-me-info.ts index 041e1f6..e144927 100644 --- a/app/data/fetch-me-info.ts +++ b/app/data/fetch-me-info.ts @@ -1,9 +1,8 @@ -import {BASE_PATH, basePathNoTrailingSlash, USER_API_URL} from "../../environment"; +import {BASE_PATH, USER_API_URL} from "../../environment"; import logger from "~/logging/logger"; export const fetchMeInfo = async (token: string | null) => { const url = `${USER_API_URL}${BASE_PATH}/api/users/me`; - logger.debug("Requesting API @ ", url, " with token", token); const response = await fetch(`${USER_API_URL}${BASE_PATH}/api/users/me`, { headers: {Authorization: token ?? ""} }); diff --git a/app/root.tsx b/app/root.tsx index fbef04a..4899eb1 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -3,7 +3,6 @@ import navStyles from "@navikt/ds-css/dist/index.css?url"; import "react-toastify/dist/ReactToastify.css" import {Links, Meta, Outlet, Scripts, ScrollRestoration, useLoaderData, useRouteError,} from "@remix-run/react"; import styles from "~/styles/main.css?url"; -import type {IMeInfo} from "~/data/types"; import {fetchMeInfo} from "~/data/fetch-me-info"; import meStyles from "~/components/app-bar/appBar.css?url"; import type {LoaderFunctionArgs} from "@remix-run/router"; @@ -12,7 +11,6 @@ import {BodyShort, Box, Page} from "@navikt/ds-react"; import {AppBar} from "~/components/app-bar/AppBar"; import {BASE_PATH} from "../environment"; - export const meta: MetaFunction = () => { return [ { @@ -115,7 +113,7 @@ export function ErrorBoundary() { const me = null return ( - + Feil oppstod diff --git a/app/routes/assignment.resource.$id.role.tsx b/app/routes/assignment.resource.$id.role.tsx index 83e06b2..91536a1 100644 --- a/app/routes/assignment.resource.$id.role.tsx +++ b/app/routes/assignment.resource.$id.role.tsx @@ -10,6 +10,7 @@ import {fetchRoles} from "~/data/fetch-roles"; import {NewAssignmentRoleSearch} from "~/components/assignment/NewAssignmentRoleSearch"; import {fetchOrgUnits} from "~/data/fetch-resources"; import {fetchAssignedRoles} from "~/data/fetch-assignments"; +import {BASE_PATH} from "../../environment"; export async function loader({params, request}: LoaderFunctionArgs): Promise & { json(): Promise @@ -42,7 +43,8 @@ export async function loader({params, request}: LoaderFunctionArgs): Promise(); const params = useParams() @@ -71,6 +74,7 @@ export default function NewAssignmentForRole() { rolesId={params.id} currentPage={data.roleList.currentPage} totalPages={data.roleList.totalPages} + basePath={data.basePath} /> ); diff --git a/app/routes/assignment.resource.$id.user.tsx b/app/routes/assignment.resource.$id.user.tsx index 731596b..1737720 100644 --- a/app/routes/assignment.resource.$id.user.tsx +++ b/app/routes/assignment.resource.$id.user.tsx @@ -11,6 +11,7 @@ import {NewAssignmentUserSearch} from "~/components/assignment/NewAssignmentUser import {fetchOrgUnits} from "~/data/fetch-resources"; import {fetchAssignedUsers} from "~/data/fetch-assignments"; import {UserTypeFilter} from "~/components/user/UserTypeFilter"; +import {BASE_PATH} from "../../environment"; export async function loader({params, request}: LoaderFunctionArgs): Promise & { @@ -44,7 +45,8 @@ export async function loader({params, request}: LoaderFunctionArgs): Promise(); const params = useParams() @@ -73,6 +76,7 @@ export default function NewAssignment() { resourceId={params.id} currentPage={data.userList.currentPage} totalPages={data.userList.totalPages} + basePath={data.basePath} /> ); diff --git a/app/routes/resources.$id.role-assignments.$assignmentRef.delete.tsx b/app/routes/resources.$id.role-assignments.$assignmentRef.delete.tsx index 5d2c3f6..396a605 100644 --- a/app/routes/resources.$id.role-assignments.$assignmentRef.delete.tsx +++ b/app/routes/resources.$id.role-assignments.$assignmentRef.delete.tsx @@ -14,7 +14,7 @@ export async function action({request}: ActionFunctionArgs) { return redirect(`/resources/${data.get("resourceRef")}/role-assignments?page=${searchParams.get("page")}`) } -export default function DeleteUserAssignment() { +export default function DeleteRoleAssignment() { const params = useParams() const navigate = useNavigate() @@ -36,7 +36,7 @@ export default function DeleteUserAssignment() { -
+ diff --git a/app/routes/resources.$id.role-assignments.tsx b/app/routes/resources.$id.role-assignments.tsx index 9c48dc6..732661a 100644 --- a/app/routes/resources.$id.role-assignments.tsx +++ b/app/routes/resources.$id.role-assignments.tsx @@ -1,14 +1,15 @@ -import React from 'react'; +//import React from 'react'; import styles from "../components/resource/resource.css?url" import {useLoaderData, useRouteLoaderData} from "@remix-run/react"; -import {IAssignedRoles} from "~/data/types"; +import {IAssignedRoles} from "~/data/types"; import {json} from "@remix-run/node"; -import {LoaderFunctionArgs} from "@remix-run/router"; +import {LoaderFunctionArgs} from "@remix-run/router"; import {fetchAssignedRoles} from "~/data/fetch-assignments"; import {AssignedRolesTable} from "~/components/assignment/AssignedRolesTable"; import {AssignedRolesSearch} from "~/components/assignment/AssignedRolesSearch"; import {SelectObjectType} from "~/components/resource/SelectObjectType"; import {Box, Heading} from "@navikt/ds-react"; +import {BASE_PATH} from "../../environment"; export function links() { return [{rel: 'stylesheet', href: styles}] @@ -26,7 +27,8 @@ export async function loader({params, request}: LoaderFunctionArgs) { ]); return json({ - assignedRoles: await assignedRoles.json() + assignedRoles: await assignedRoles.json(), + basePath: BASE_PATH === "/" ? "" : BASE_PATH }) } @@ -37,6 +39,7 @@ export function useResourceByIdLoaderData() { export default function AssignedRoles() { const data = useLoaderData<{ assignedRoles: IAssignedRoles, + basePath: string }>(); return ( @@ -51,7 +54,7 @@ export default function AssignedRoles() {
- +
); diff --git a/app/routes/resources.$id.tsx b/app/routes/resources.$id.tsx index 9729e50..4aadbdc 100644 --- a/app/routes/resources.$id.tsx +++ b/app/routes/resources.$id.tsx @@ -1,12 +1,13 @@ import React from 'react'; import styles from "../components/resource/resource.css?url" import {Box, Heading, LinkPanel} from "@navikt/ds-react"; -import {Outlet, useLoaderData, useRouteLoaderData} from "@remix-run/react"; +import {Outlet, useLoaderData} from "@remix-run/react"; import type {IResource} from "~/data/types"; import {json} from "@remix-run/node"; import type {LoaderFunctionArgs} from "@remix-run/router"; import {fetchResourceById} from "~/data/fetch-resources"; import {ResourceInfo} from "~/components/resource/ResourceInfo"; +import {BASE_PATH} from "../../environment"; export function links() { return [{rel: 'stylesheet', href: styles}] @@ -14,37 +15,25 @@ export function links() { export async function loader({params, request}: LoaderFunctionArgs) { - // const url = new URL(request.url); - // const size = url.searchParams.get("size") ?? "10"; - // const page = url.searchParams.get("page") ?? "0" - - const [resource/*, assignedUsers, assignedRoles*/] = await Promise.all([ + const [resource] = await Promise.all([ fetchResourceById(request.headers.get("Authorization"), params.id), - // fetchAssignedUsers(request.headers.get("Authorization"), params.id, size, page), - // fetchAssignedRoles(request.headers.get("Authorization"), params.id, size, pageRole) ]); return json({ resource: await resource.json(), - // assignedUsers: await assignedUsers.json(), - // assignedRoles: await assignedRoles.json() + basePath: BASE_PATH === "/" ? "" : BASE_PATH }) } -export function useResourceByIdLoaderData() { - return useRouteLoaderData("resource.$id") -} - export default function ResourceById() { const data = useLoaderData<{ resource: IResource, - // assignedUsers: IAssignedUsers, - // assignedRoles: IAssignedRoles + basePath: string }>(); return (
- + Ny tildeling diff --git a/app/routes/resources.$id.user-assignments.tsx b/app/routes/resources.$id.user-assignments.tsx index 22c7614..203bf0f 100644 --- a/app/routes/resources.$id.user-assignments.tsx +++ b/app/routes/resources.$id.user-assignments.tsx @@ -1,7 +1,7 @@ import React from 'react'; import styles from "../components/resource/resource.css?url" import {useLoaderData, useRouteLoaderData} from "@remix-run/react"; -import {IAssignedUsers} from "~/data/types"; +import {IAssignedUsers} from "~/data/types"; import {json} from "@remix-run/node"; import type {LoaderFunctionArgs} from "@remix-run/router"; import {fetchAssignedUsers} from "~/data/fetch-assignments"; @@ -10,6 +10,7 @@ import {Box, Heading} from "@navikt/ds-react"; import {SelectObjectType} from "~/components/resource/SelectObjectType"; import {AssignedUsersSearch} from "~/components/assignment/AssignedUsersSearch"; import {UserTypeFilter} from "~/components/user/UserTypeFilter"; +import {BASE_PATH} from "../../environment"; export function links() { return [{rel: 'stylesheet', href: styles}] @@ -29,7 +30,8 @@ export async function loader({params, request}: LoaderFunctionArgs) { ]); return json({ - assignedUsers: await assignedUsers.json() + assignedUsers: await assignedUsers.json(), + basePath: BASE_PATH === "/" ? "" : BASE_PATH }) } @@ -40,6 +42,7 @@ export function useResourceByIdLoaderData() { export default function AssignedUsers() { const data = useLoaderData<{ assignedUsers: IAssignedUsers, + basePath: string }>(); return ( @@ -55,7 +58,7 @@ export default function AssignedUsers() {
- +
); diff --git a/kustomize/overlays/beta/fintlabs-no/kustomization.yaml b/kustomize/overlays/beta/fintlabs-no/kustomization.yaml index a797c0d..3be87cb 100644 --- a/kustomize/overlays/beta/fintlabs-no/kustomization.yaml +++ b/kustomize/overlays/beta/fintlabs-no/kustomization.yaml @@ -60,6 +60,11 @@ patches: value: name: ACCESS_MANAGEMENT_API_URL value: http://fint-kontroll-access-mngmnt-catalog:8080 + - op: add + path: "/spec/env/-" + value: + name: LOG_LEVEL + value: info target: kind: Application name: fint-kontroll-frontend diff --git a/server/server.js b/server/server.js index 25f72e8..0718b9d 100644 --- a/server/server.js +++ b/server/server.js @@ -1,5 +1,5 @@ import express from "express"; -import {BASE_PATH, PORT} from "../environment.js"; +import {BASE_PATH, LOG_LEVEL, PORT} from "../environment.js"; import morgan from "morgan"; import log4js from 'log4js'; import {createRequestHandler} from "@remix-run/express"; @@ -50,5 +50,6 @@ app.all( createRequestHandler({build})); app.listen(PORT, () => { + logger.info("LOG_LEVEL", LOG_LEVEL) logger.info(`App listening on http://localhost:${PORT}${BASE_PATH.replace(/\/$/,'')}`); });