From 4346f81e231569c94ddc81dfbd425348398cb1b7 Mon Sep 17 00:00:00 2001 From: "Navy.gif" Date: Wed, 22 Mar 2023 19:07:03 +0200 Subject: [PATCH] update perms button + favicon --- public/favicon.ico | Bin 3870 -> 116538 bytes src/pages/Users.js | 51 +++++++++++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index a11777cc471a4344702741ab1c8a588998b1311a..7421c6daacceb562cafe8810fb9a36d08d43ad88 100644 GIT binary patch literal 116538 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/src/pages/Users.js b/src/pages/Users.js index f1c5bb4..77ae4a6 100644 --- a/src/pages/Users.js +++ b/src/pages/Users.js @@ -1,22 +1,28 @@ import React, { useEffect, useRef, useState } from "react"; import { Route, Routes, useNavigate, useParams } from "react-router"; import ErrorBoundary from "../util/ErrorBoundary"; -import { get } from '../util/Util'; +import { get, post } from '../util/Util'; import '../css/pages/Users.css'; import { Table, TableListEntry } from "../components/Table"; -const Permission = ({name, value}) => { +const Permission = ({ name, value, chain, updatePerms }) => { + const inputRef = useRef(); + const onChange = () => { + const val = inputRef.current.value; + updatePerms(chain, val); + }; + return
  • - +
  • ; }; -const PermissionGroup = ({ name, value }) => { +const PermissionGroup = ({ name, value, chain, updatePerms }) => { const elements = []; for (const [perm, val] of Object.entries(value)) { - const props = { key: perm, name: perm, value: val }; + const props = { key: perm, name: perm, value: val, updatePerms, chain: `${chain}:${perm}` }; if(typeof val ==='object') elements.push(); else elements.push(); } @@ -30,12 +36,12 @@ const PermissionGroup = ({ name, value }) => { ; }; -const Permissions = ({ perms }) => { +const Permissions = ({ perms, updatePerms }) => { const elements = []; const keys = Object.keys(perms); for (const perm of keys) { - const props = { key: perm, name: perm, value: perms[perm] }; + const props = { key: perm, name: perm, value: perms[perm], chain: perm, updatePerms }; let Elem = null; switch (typeof perms[perm]) { case 'number': @@ -96,6 +102,7 @@ const User = ({ user }) => { const navigate = useNavigate(); const [apps, updateApps] = useState([]); + const perms = {...user.permissions}; useEffect(() => { (async () => { @@ -104,6 +111,22 @@ const User = ({ user }) => { })(); }, []); + const updatePerms = (chain, value) => { + value = parseInt(value); + if (isNaN(value)) return; + + let selected = perms; + const keys = chain.split(':'); + for (const key of keys) { + if (key === keys[keys.length - 1]) selected[key] = value; + else selected = selected[key]; + } + }; + + const commitPerms = async () => { + await post(`/api/users/${user.id}/permissions`, perms); + }; + const ApplicationWrapper = () => { const { appid } = useParams(); const app = apps.find(a => a.id === appid); @@ -130,17 +153,12 @@ const User = ({ user }) => {

    2FA: {user.twoFactor.toString()}

    Disabled: {user.disabled.toString()}

    - - + + - + - -

    Applications

    } /> @@ -150,7 +168,8 @@ const User = ({ user }) => {
    - + +