current hostname as cookie domain, group edit member bugfix

This commit is contained in:
2024-04-09 14:59:19 +02:00
parent 6c551b08d8
commit 72d2850e83
8 changed files with 98 additions and 27 deletions

View File

@@ -1,5 +1,5 @@
import React, {lazy, Suspense, useCallback, useState} from "react";
import {BrowserRouter, Route, Routes} from "react-router-dom";
import {BrowserRouter, Navigate, Route, Routes} from "react-router-dom";
import Dialog from "shared/elements/dialog";
import Sidebar from "./elements/sidebar";
import Footer from "./elements/footer";
@@ -73,7 +73,7 @@ export default function AdminDashboard(props) {
<section className={"content"}>
<Suspense fallback={<div>{L("general.loading")}... </div>}>
<Routes>
<Route path={"/admin"} element={<Overview {...controlObj} />}/>
<Route path={"/admin"} element={<Navigate to={"/admin/dashboard"} />}/>
<Route path={"/admin/dashboard"} element={<Overview {...controlObj} />}/>
<Route path={"/admin/users"} element={<UserListView {...controlObj} />}/>
<Route path={"/admin/user/:userId"} element={<UserEditView {...controlObj} />}/>

View File

@@ -1,4 +1,4 @@
import {useCallback, useContext, useEffect, useState} from "react";
import {useCallback, useContext, useEffect, useRef, useState} from "react";
import {Link, useNavigate, useParams} from "react-router-dom";
import {LocaleContext} from "shared/locale";
import SearchField from "shared/elements/search-field";
@@ -34,7 +34,7 @@ export default function EditGroupView(props) {
const [fetchGroup, setFetchGroup] = useState(!isNewGroup);
const [group, setGroup] = useState(isNewGroup ? defaultGroupData : null);
const [members, setMembers] = useState([]);
const [selectedUser, setSelectedUser] = useState(null);
const selectedUserRef = useRef(null);
// ui
const [dialogData, setDialogData] = useState({open: false});
@@ -86,19 +86,19 @@ export default function EditGroupView(props) {
}, [api, showDialog, groupId, members]);
const onAddMember = useCallback(() => {
if (selectedUser) {
api.addGroupMember(groupId, selectedUser.id).then(data => {
if (selectedUserRef.current) {
api.addGroupMember(groupId, selectedUserRef.current.id).then(data => {
if (!data.success) {
showDialog(data.msg, L("account.add_group_member_error"));
} else {
let newMembers = [...members];
newMembers.push(selectedUser);
newMembers.push(selectedUserRef.current);
setMembers(newMembers);
}
setSelectedUser(null);
selectedUserRef.current = null;
});
}
}, [api, showDialog, groupId, selectedUser, members])
}, [api, showDialog, groupId, selectedUserRef, members])
const onSave = useCallback(() => {
setSaving(true);
@@ -152,15 +152,19 @@ export default function EditGroupView(props) {
size: "small", key: "search",
element: SearchField,
onSearch: v => onSearchUser(v),
onSelect: u => setSelectedUser(u),
onSelect: u => { selectedUserRef.current = u },
getOptionLabel: u => u.fullName || u.name
}
],
onOption: (option) => option === 0 ?
onAddMember() :
setSelectedUser(null)
onOption: (option) => {
if(option === 0) {
onAddMember()
} else {
selectedUserRef.current = null
}
}
});
}, [onAddMember, onSearchUser, setSelectedUser, setDialogData]);
}, [onAddMember, onSearchUser, selectedUserRef, setDialogData]);
useEffect(() => {
onFetchGroup();

View File

@@ -7,7 +7,7 @@ import {
CircularProgress,
FormControl,
FormGroup,
FormLabel, Paper, styled,
FormLabel, styled,
TextField
} from "@mui/material";
import {
@@ -26,6 +26,7 @@ import ButtonBar from "../../elements/button-bar";
import MfaTotp from "./mfa-totp";
import MfaFido from "./mfa-fido";
import Dialog from "shared/elements/dialog";
import PasswordStrength from "shared/elements/password-strength";
const GpgKeyField = styled(TextField)((props) => ({
"& > div": {
@@ -211,8 +212,6 @@ export default function ProfileView(props) {
reader.readAsText(file);
}, [showDialog]);
console.log("SELECTED USER:", profile.twoFactorToken);
return <>
<div className={"content-header"}>
<div className={"container-fluid"}>
@@ -285,6 +284,9 @@ export default function ProfileView(props) {
onChange={e => setChangePassword({...changePassword, confirm: e.target.value })} />
</FormControl>
</ProfileFormGroup>
<Box className={"w-50"}>
<PasswordStrength password={changePassword.new} minLength={6} />
</Box>
</CollapseBox>
<CollapseBox title={L("account.gpg_key")} open={openedTab === "gpg"}