Merge branch 'dev' of github.com:smart-chain-fr/leCoffre-front into dev
This commit is contained in:
commit
d4a96106d5
@ -15,7 +15,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.folderlist-container {
|
.folderlist-container {
|
||||||
height: 100%;
|
max-height: calc(100vh - 290px);
|
||||||
|
height: calc(100vh - 290px);
|
||||||
|
overflow: auto;
|
||||||
border-right: 1px solid var(--grey-medium);
|
border-right: 1px solid var(--grey-medium);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
.folderlist-container {
|
.folderlist-container {
|
||||||
max-height: calc(100vh - 290px);
|
max-height: calc(100vh - 290px);
|
||||||
|
height: calc(100vh - 290px);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border-right: 1px solid var(--grey-medium);
|
border-right: 1px solid var(--grey-medium);
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
.folderlist-container {
|
.folderlist-container {
|
||||||
max-height: calc(100vh - 290px);
|
max-height: calc(100vh - 290px);
|
||||||
|
height: calc(100vh - 290px);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border-right: 1px solid var(--grey-medium);
|
border-right: 1px solid var(--grey-medium);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.folderlist-container {
|
.folderlist-container {
|
||||||
height: 100%;
|
max-height: 100vh;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: auto;
|
||||||
border-right: 1px solid var(--grey-medium);
|
border-right: 1px solid var(--grey-medium);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.folderlist-container {
|
.folderlist-container {
|
||||||
height: 100%;
|
max-height: 100vh;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: auto;
|
||||||
border-right: 1px solid var(--grey-medium);
|
border-right: 1px solid var(--grey-medium);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.folderlist-container {
|
.folderlist-container {
|
||||||
height: 100%;
|
max-height: 100vh;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: auto;
|
||||||
border-right: 1px solid var(--grey-medium);
|
border-right: 1px solid var(--grey-medium);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ export default function CollaboratorInformations(props: IProps) {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!userSelected) return;
|
if (!userSelected) return;
|
||||||
setIsAdminChecked(userSelected.role?.name === "admin" && !userSelected.office_role);
|
setIsAdminChecked(userSelected.role?.name === "admin");
|
||||||
}, [userSelected]);
|
}, [userSelected]);
|
||||||
|
|
||||||
const handleRoleChange = useCallback((option: IOption) => {
|
const handleRoleChange = useCallback((option: IOption) => {
|
||||||
@ -81,7 +81,21 @@ export default function CollaboratorInformations(props: IProps) {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// retirer rôle admin
|
const defaultRole = await Roles.getInstance().getOne({
|
||||||
|
where: {
|
||||||
|
name: "default",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!defaultRole) return;
|
||||||
|
await Users.getInstance().put(
|
||||||
|
userSelected?.uid as string,
|
||||||
|
User.hydrate<User>({
|
||||||
|
uid: userSelected?.uid as string,
|
||||||
|
office_role: undefined,
|
||||||
|
role: defaultRole,
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
setAdminModalOpened(false);
|
setAdminModalOpened(false);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -12,7 +12,7 @@ import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Ty
|
|||||||
import DefaultUserDashboard from "@Front/Components/LayoutTemplates/DefaultUserDashboard";
|
import DefaultUserDashboard from "@Front/Components/LayoutTemplates/DefaultUserDashboard";
|
||||||
import JwtService from "@Front/Services/JwtService/JwtService";
|
import JwtService from "@Front/Services/JwtService/JwtService";
|
||||||
import Toasts from "@Front/Stores/Toasts";
|
import Toasts from "@Front/Stores/Toasts";
|
||||||
import User, { Appointment, Vote } from "le-coffre-resources/dist/SuperAdmin";
|
import User, { Appointment, OfficeRole, Vote } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { EAppointmentStatus, EVote } from "le-coffre-resources/dist/SuperAdmin/Appointment";
|
import { EAppointmentStatus, EVote } from "le-coffre-resources/dist/SuperAdmin/Appointment";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
@ -28,6 +28,7 @@ export default function UserInformations(props: IProps) {
|
|||||||
const [userSelected, setUserSelected] = useState<User | null>(null);
|
const [userSelected, setUserSelected] = useState<User | null>(null);
|
||||||
const [availableRoles, setAvailableRoles] = useState<IOption[]>([]);
|
const [availableRoles, setAvailableRoles] = useState<IOption[]>([]);
|
||||||
|
|
||||||
|
const [roleModalOpened, setRoleModalOpened] = useState<boolean>(false);
|
||||||
const [isSuperAdminModalOpened, setIsSuperAdminModalOpened] = useState<boolean>(false);
|
const [isSuperAdminModalOpened, setIsSuperAdminModalOpened] = useState<boolean>(false);
|
||||||
const [superAdminModalType, setSuperAdminModalType] = useState<"add" | "remove">("add");
|
const [superAdminModalType, setSuperAdminModalType] = useState<"add" | "remove">("add");
|
||||||
const [adminModalType, setAdminModalType] = useState<"add" | "remove">("add");
|
const [adminModalType, setAdminModalType] = useState<"add" | "remove">("add");
|
||||||
@ -36,8 +37,15 @@ export default function UserInformations(props: IProps) {
|
|||||||
const [isAdminChecked, setIsAdminChecked] = useState<boolean>(false);
|
const [isAdminChecked, setIsAdminChecked] = useState<boolean>(false);
|
||||||
const [isAdminModalOpened, setIsAdminModalOpened] = useState<boolean>(false);
|
const [isAdminModalOpened, setIsAdminModalOpened] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const [selectedOption, setSelectedOption] = useState<IOption | null>(null);
|
||||||
|
|
||||||
const [currentAppointment, setCurrentAppointment] = useState<Appointment | null>(null);
|
const [currentAppointment, setCurrentAppointment] = useState<Appointment | null>(null);
|
||||||
|
|
||||||
|
const handleRoleChange = useCallback((option: IOption) => {
|
||||||
|
setSelectedOption(option);
|
||||||
|
setRoleModalOpened(true);
|
||||||
|
}, []);
|
||||||
|
|
||||||
/** When page change, get the user of the page */
|
/** When page change, get the user of the page */
|
||||||
|
|
||||||
const getUser = useCallback(async () => {
|
const getUser = useCallback(async () => {
|
||||||
@ -83,7 +91,7 @@ export default function UserInformations(props: IProps) {
|
|||||||
|
|
||||||
const closeAdminModal = useCallback(() => {
|
const closeAdminModal = useCallback(() => {
|
||||||
setIsAdminModalOpened(false);
|
setIsAdminModalOpened(false);
|
||||||
setIsAdminChecked(userSelected?.role?.name === "admin" && !userSelected.office_role);
|
setIsAdminChecked(userSelected?.role?.name === "admin");
|
||||||
}, [userSelected]);
|
}, [userSelected]);
|
||||||
|
|
||||||
const handleAdminChanged = (checked: boolean) => {
|
const handleAdminChanged = (checked: boolean) => {
|
||||||
@ -111,7 +119,21 @@ export default function UserInformations(props: IProps) {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// retirer rôle admin
|
const defaultRole = await Roles.getInstance().getOne({
|
||||||
|
where: {
|
||||||
|
name: "default",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!defaultRole) return;
|
||||||
|
await Users.getInstance().put(
|
||||||
|
userSelected?.uid as string,
|
||||||
|
User.hydrate<User>({
|
||||||
|
uid: userSelected?.uid as string,
|
||||||
|
office_role: undefined,
|
||||||
|
role: defaultRole,
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
setIsAdminModalOpened(false);
|
setIsAdminModalOpened(false);
|
||||||
}, [userSelected, adminModalType]);
|
}, [userSelected, adminModalType]);
|
||||||
@ -123,7 +145,7 @@ export default function UserInformations(props: IProps) {
|
|||||||
|
|
||||||
const closeSuperAdminModal = useCallback(() => {
|
const closeSuperAdminModal = useCallback(() => {
|
||||||
setIsSuperAdminModalOpened(false);
|
setIsSuperAdminModalOpened(false);
|
||||||
setIsSuperAdminChecked(userSelected?.role?.name === "super-admin" && !userSelected.office_role);
|
setIsSuperAdminChecked(userSelected?.role?.name === "super-admin");
|
||||||
}, [userSelected]);
|
}, [userSelected]);
|
||||||
|
|
||||||
const handleSuperAdminChanged = (checked: boolean) => {
|
const handleSuperAdminChanged = (checked: boolean) => {
|
||||||
@ -156,11 +178,33 @@ export default function UserInformations(props: IProps) {
|
|||||||
setIsSuperAdminModalOpened(false);
|
setIsSuperAdminModalOpened(false);
|
||||||
}, [userSelected, currentAppointment, superAdminModalType, getUser]);
|
}, [userSelected, currentAppointment, superAdminModalType, getUser]);
|
||||||
|
|
||||||
|
const closeRoleModal = useCallback(() => {
|
||||||
|
setRoleModalOpened(false);
|
||||||
|
setSelectedOption({
|
||||||
|
value: userSelected?.office_role ? userSelected?.office_role?.uid : userSelected?.role?.uid,
|
||||||
|
label: userSelected?.office_role ? userSelected?.office_role?.name : userSelected?.role?.name!,
|
||||||
|
});
|
||||||
|
}, [userSelected?.office_role, userSelected?.role?.name, userSelected?.role?.uid]);
|
||||||
|
|
||||||
|
const changeRole = useCallback(async () => {
|
||||||
|
await Users.getInstance().put(
|
||||||
|
userSelected?.uid as string,
|
||||||
|
User.hydrate<User>({
|
||||||
|
uid: userSelected?.uid as string,
|
||||||
|
office_role: OfficeRole.hydrate<OfficeRole>({
|
||||||
|
uid: selectedOption?.value as string,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
setRoleModalOpened(false);
|
||||||
|
getUser();
|
||||||
|
}, [getUser, selectedOption?.value, userSelected?.uid]);
|
||||||
|
|
||||||
/** Reset switch state when userSelect change */
|
/** Reset switch state when userSelect change */
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!userSelected) return;
|
if (!userSelected) return;
|
||||||
setIsSuperAdminChecked(userSelected.role?.name === "super-admin");
|
setIsSuperAdminChecked(userSelected.role?.name === "super-admin");
|
||||||
setIsAdminChecked(userSelected.role?.name === "admin" && !userSelected.office_role);
|
setIsAdminChecked(userSelected.role?.name === "admin");
|
||||||
}, [userSelected]);
|
}, [userSelected]);
|
||||||
|
|
||||||
const userHasVoted = useCallback(() => {
|
const userHasVoted = useCallback(() => {
|
||||||
@ -223,7 +267,8 @@ export default function UserInformations(props: IProps) {
|
|||||||
<SelectField
|
<SelectField
|
||||||
placeholder="Rôle"
|
placeholder="Rôle"
|
||||||
name="role"
|
name="role"
|
||||||
options={availableRoles}
|
options={availableRoles.filter((role) => role.label !== "admin")}
|
||||||
|
onChange={handleRoleChange}
|
||||||
selectedOption={{
|
selectedOption={{
|
||||||
value: userSelected?.office_role ? userSelected?.office_role?.uid : userSelected?.role?.uid,
|
value: userSelected?.office_role ? userSelected?.office_role?.uid : userSelected?.role?.uid,
|
||||||
label: userSelected?.office_role ? userSelected?.office_role?.name : userSelected?.role?.name!,
|
label: userSelected?.office_role ? userSelected?.office_role?.name : userSelected?.role?.name!,
|
||||||
@ -271,6 +316,21 @@ export default function UserInformations(props: IProps) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<Confirm
|
||||||
|
isOpen={roleModalOpened}
|
||||||
|
onClose={closeRoleModal}
|
||||||
|
onAccept={changeRole}
|
||||||
|
closeBtn
|
||||||
|
header={"Changement de rôle"}
|
||||||
|
confirmText={"Valider"}
|
||||||
|
cancelText={"Annuler"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
Attribuer le rôle de <span className={classes["role-name"]}>{selectedOption?.label}</span> à{" "}
|
||||||
|
{userSelected?.contact?.first_name} {userSelected?.contact?.last_name} ?
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
<Confirm
|
<Confirm
|
||||||
isOpen={isSuperAdminModalOpened}
|
isOpen={isSuperAdminModalOpened}
|
||||||
onClose={closeSuperAdminModal}
|
onClose={closeSuperAdminModal}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user