From 0d71747959c39cced58adea126ee03e94a2db14b Mon Sep 17 00:00:00 2001 From: Tin Geber <tin@greenhost.nl> Date: Thu, 30 Nov 2023 18:39:40 +0100 Subject: [PATCH] telepresence, tags added to User, admin in table --- .gitignore | 1 + backend/areas/users/user_service.py | 2 +- frontend/src/components/Header/Header.tsx | 14 ++++++++++++- frontend/src/modules/users/Users.tsx | 21 +++++-------------- .../src/services/users/transformations.ts | 2 ++ frontend/src/services/users/types.ts | 2 ++ 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 848cf35f..b2e2ad0a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ # dependencies /node_modules /frontend/node_modules +/backend/venv /backend/web/node_modules /backend/venv /.pnp diff --git a/backend/areas/users/user_service.py b/backend/areas/users/user_service.py index 0783ef70..8ef92c12 100644 --- a/backend/areas/users/user_service.py +++ b/backend/areas/users/user_service.py @@ -99,7 +99,7 @@ class UserService: db.session.add(app_role) - if data["tags"]: + if data.get("tags"): UserStackspinData.setTags(res["id"], data["tags"]) # Commit all changes to the stackspin database. diff --git a/frontend/src/components/Header/Header.tsx b/frontend/src/components/Header/Header.tsx index 3b360fc0..451e88d1 100644 --- a/frontend/src/components/Header/Header.tsx +++ b/frontend/src/components/Header/Header.tsx @@ -1,6 +1,6 @@ import React, { Fragment, useEffect, useState } from 'react'; import { Disclosure, Menu, Transition } from '@headlessui/react'; -import { MenuIcon, XIcon } from '@heroicons/react/outline'; +import { MenuIcon, XIcon, ExclamationIcon } from '@heroicons/react/outline'; import { performApiCall } from 'src/services/api'; import { useAuth } from 'src/services/auth'; import { useApps } from 'src/services/apps'; @@ -32,11 +32,13 @@ function filterNavigationByDashboardRole(isAdmin: boolean) { export interface Environment { HYDRA_PUBLIC_URL: string; KRATOS_PUBLIC_URL: string; + TELEPRESENCE: boolean; } const defaultEnvironment: Environment = { HYDRA_PUBLIC_URL: 'error-failed-to-load-env-from-backend', KRATOS_PUBLIC_URL: 'error-failed-to-load-env-from-backend', + TELEPRESENCE: false, }; // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -94,8 +96,18 @@ const Header: React.FC<HeaderProps> = () => { </span> ) : null; + // banner that only shows if telepresence is active + const underConstruction = environment.TELEPRESENCE ? ( + <div className="shadow bg-pink-500 h-6 text-xs text-white font-semibold uppercase flex justify-center items-center gap-2"> + <ExclamationIcon className="h-4" /> + <span className="h-4 m-0 p-0">Under Construction</span> + <ExclamationIcon className="h-4" /> + </div> + ) : null; + return ( <> + {underConstruction} <Disclosure as="nav" className="bg-white shadow relative z-10"> {({ open }) => ( <div className="relative"> diff --git a/frontend/src/modules/users/Users.tsx b/frontend/src/modules/users/Users.tsx index b8bbefe4..b4111122 100644 --- a/frontend/src/modules/users/Users.tsx +++ b/frontend/src/modules/users/Users.tsx @@ -176,6 +176,10 @@ export const Users: React.FC = () => { footer: (props) => props.column.id, accessorKey: 'email', }, + { + header: 'is Admin?', + accessorKey: 'admin', + }, { header: 'Status', footer: (props) => props.column.id, @@ -219,7 +223,7 @@ export const Users: React.FC = () => { }, initialState: { pagination: { - pageSize: 10, + pageSize: 20, }, }, onSortingChange: setSorting, @@ -445,21 +449,6 @@ export const Users: React.FC = () => { )} </div> - {/* <div className="flex flex-col"> - <div className="-my-2 overflow-x-auto sm:-mx-6 lg:-mx-8"> - <div className="py-2 align-middle inline-block min-w-full sm:px-6 lg:px-8"> - <div className="shadow border-b border-gray-200 sm:rounded-lg overflow-hidden"> - <Table - data={filterSearch as any} - columns={columns} - getSelectedRowIds={selectedRows} - loading={userTableLoading} - /> - </div> - </div> - </div> - </div> */} - <div className="flex flex-col"> <div className="-my-2 overflow-x-auto sm:-mx-6 lg:-mx-8"> <div className="py-2 align-middle inline-block min-w-full sm:px-6 lg:px-8">{CreateUserTable()}</div> diff --git a/frontend/src/services/users/transformations.ts b/frontend/src/services/users/transformations.ts index e430c1f0..0d045416 100644 --- a/frontend/src/services/users/transformations.ts +++ b/frontend/src/services/users/transformations.ts @@ -61,6 +61,8 @@ export const transformUser = (response: any): User => { preferredUsername: response.preferredUsername ?? '', status: response.state ?? '', totp: transformTotp(response), + tags: response.stackspin_data.tags ?? '', + admin: response.stackspin_data.stackspin_admin ?? '', }; }; diff --git a/frontend/src/services/users/types.ts b/frontend/src/services/users/types.ts index cb3112f8..44f7e5bd 100644 --- a/frontend/src/services/users/types.ts +++ b/frontend/src/services/users/types.ts @@ -6,6 +6,8 @@ export interface User { preferredUsername: string; status: string; totp?: boolean; + tags?: []; + admin?: boolean; } export interface FormUser extends User { -- GitLab