Skip to content

Commit 3ea82fa

Browse files
committed
Fix: admin assigning + admin login
1 parent 601faff commit 3ea82fa

File tree

3 files changed

+65
-27
lines changed

3 files changed

+65
-27
lines changed

client/src/components/admin/AddPreview.tsx

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -109,25 +109,42 @@ const AddPreview = ({
109109
}
110110
}
111111

112-
const cmResponse = await backend.post(`/caseManagers`, {
113-
role: roleDict[userType],
114-
firstName: newUser.firstName,
115-
lastName: newUser.lastName,
116-
phoneNumber: newUser.phoneNumber,
117-
email: newUser.email,
118-
notes: newUser.notes
119-
});
120-
121-
const cm_id = cmResponse.data[0].id;
112+
try {
113+
const cmResponse = await backend.post(`/caseManagers`, {
114+
role: roleDict[userType],
115+
firstName: newUser.firstName,
116+
lastName: newUser.lastName,
117+
phoneNumber: newUser.phoneNumber,
118+
email: newUser.email,
119+
notes: newUser.notes
120+
});
122121

123-
await backend.post(`/locations`, {
124-
cmId: cm_id,
125-
name: newUser.location,
126-
date: new Date(),
127-
caloptimaFunded: false,
128-
});
122+
const cm_id = cmResponse.data[0].id;
129123

124+
await backend.post(`/locations`, {
125+
cmId: cm_id,
126+
name: newUser.location,
127+
date: new Date(),
128+
caloptimaFunded: false,
129+
});
130+
} catch (e) {
131+
console.error(e);
132+
}
130133

134+
if (roleDict[userType] === "admin") {
135+
try {
136+
await backend.post("/users/invite", {
137+
email: newUser.email,
138+
role: roleDict[userType],
139+
firstName: newUser.firstName,
140+
lastName: newUser.lastName,
141+
phoneNumber: newUser.phoneNumber,
142+
});
143+
} catch (e) {
144+
console.error(e);
145+
}
146+
}
147+
131148
onClose();
132149

133150
toast({
@@ -138,7 +155,7 @@ const AddPreview = ({
138155
isClosable: true,
139156
});
140157

141-
window.location.reload();
158+
// window.location.reload();
142159
} catch (e) {
143160
console.error(e);
144161

client/src/components/admin/ManageAccounts.tsx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import {
3737
import { MdFileUpload, MdOutlineManageSearch } from "react-icons/md";
3838

3939
import { useBackendContext } from "../../contexts/hooks/useBackendContext";
40+
import { useAuthContext } from "../../contexts/hooks/useAuthContext";
4041
import { downloadCSV } from "../../utils/downloadCSV.ts";
4142
import { HoverCheckbox } from "../hoverCheckbox/hoverCheckbox.tsx";
4243
import EditClient from "../userSettings/EditClient";
@@ -64,6 +65,8 @@ export type RoleKey = keyof typeof roles_dict;
6465

6566
export const ManageAccounts = () => {
6667
const { backend } = useBackendContext();
68+
const { currentUser } = useAuthContext();
69+
const currentUserEmail = currentUser?.email ?? null;
6770

6871
const [persons, setPersons] = useState<
6972
(Person & { isChecked: boolean; isHovered: boolean })[]
@@ -282,20 +285,32 @@ export const ManageAccounts = () => {
282285
try {
283286
if (view === "admin") {
284287
const response = await backend.get("/admin/admins");
285-
setPersons(response.data);
288+
setPersons(
289+
(response.data || []).filter(
290+
(person: Person) => person.email !== currentUserEmail
291+
)
292+
);
286293
} else if (view === "cms") {
287294
const response = await backend.get("/admin/caseManagers");
288-
setPersons(response.data);
295+
setPersons(
296+
(response.data || []).filter(
297+
(person: Person) => person.email !== currentUserEmail
298+
)
299+
);
289300
} else {
290301
const response = await backend.get("/admin/clients");
291-
setPersons(response.data);
302+
setPersons(
303+
(response.data || []).filter(
304+
(person: Person) => person.email !== currentUserEmail
305+
)
306+
);
292307
}
293308
} catch (error) {
294309
console.error("Error fetching client data: ", error);
295310
}
296311
};
297312
fetchData();
298-
}, [view, backend, setPersons]);
313+
}, [view, backend, setPersons, currentUserEmail]);
299314

300315
return (
301316
<VStack

server/routes/users.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,15 @@ usersRouter.delete("/email/:email", async (req, res) => {
7373
email,
7474
]);
7575

76-
const userRecord = await admin.auth().getUserByEmail(email);
77-
const uid = userRecord.uid;
78-
await admin.auth().deleteUser(uid);
76+
// Only try to delete from Firebase if the user exists there
77+
try {
78+
const userRecord = await admin.auth().getUserByEmail(email);
79+
const uid = userRecord.uid;
80+
await admin.auth().deleteUser(uid);
81+
} catch (firebaseError) {
82+
// If user doesn't exist in Firebase, that's okay - they might be a placeholder user
83+
console.log(`User ${email} not found in Firebase, skipping Firebase deletion`);
84+
}
7985

8086
res.status(200).json(keysToCamel(user));
8187
} catch (err) {
@@ -103,11 +109,11 @@ usersRouter.post("/create", async (req, res) => {
103109
// Create user with invitation
104110
usersRouter.post("/invite", async (req, res) => {
105111
try {
106-
const { email, role } = req.body;
112+
const { email, role, firstName, lastName, phoneNumber } = req.body;
107113

108114
const user = await db.query(
109-
"INSERT INTO users (email, role) VALUES ($1, $2) RETURNING *",
110-
[email, role]
115+
"INSERT INTO users (email, role, first_name, last_name, phone_number) VALUES ($1, $2, $3, $4, $5) RETURNING *",
116+
[email, role, firstName, lastName, phoneNumber]
111117
);
112118

113119
res.status(200).json(keysToCamel(user));

0 commit comments

Comments
 (0)