feat(org): user and PM management - list/define users, roles, project assignment (API + organization panel)
This commit is contained in:
@@ -1325,6 +1325,20 @@ const rawInventory = (r: {
|
||||
interface RawCat { id: string; slug: string; name: string; }
|
||||
interface RawUnitL { id: number; code: string; name_fa: string | null; }
|
||||
|
||||
// Organization panel — one user row (backend GET /users shape).
|
||||
export interface UserRow {
|
||||
id: string;
|
||||
casdoor_id: string;
|
||||
first_name: string;
|
||||
last_name: string;
|
||||
phone: string | null;
|
||||
role: "pm" | "procurement_manager" | "admin" | null;
|
||||
role_label: string | null;
|
||||
project_id: string | null;
|
||||
project_name: string | null;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export const apiV26 = {
|
||||
lookup: {
|
||||
categories: async (): Promise<RawCat[]> => getData<RawCat[]>("/material-categories?page_size=100"),
|
||||
@@ -1356,6 +1370,19 @@ export const apiV26 = {
|
||||
display_name: `${data.first_name} ${data.last_name}`.trim() || data.casdoor_id,
|
||||
};
|
||||
},
|
||||
// --- Organization panel (admin / procurement manager) ---
|
||||
list: async (): Promise<UserRow[]> => {
|
||||
const data = await getData<UserRow[]>("/users");
|
||||
return data;
|
||||
},
|
||||
create: async (body: {
|
||||
first_name: string; last_name?: string; phone?: string | null;
|
||||
casdoor_id?: string | null; role?: "pm" | "procurement_manager" | "admin" | null;
|
||||
}): Promise<UserRow> => postData<UserRow>("/users", body),
|
||||
updateRole: async (id: string, role: "pm" | "procurement_manager" | "admin" | null): Promise<UserRow> =>
|
||||
patchData<UserRow>(`/users/${id}`, { role }),
|
||||
assignProject: async (id: string, projectId: string | null): Promise<UserRow> =>
|
||||
postData<UserRow>(`/users/${id}/project`, { project_id: projectId }),
|
||||
},
|
||||
|
||||
warehouses: {
|
||||
|
||||
Reference in New Issue
Block a user