Feat(Fix): Multi Org, Suspension, User Detail
Multi Org switch, members suspend/unsuspend status, delete account, next serial, show email in user member search
This commit is contained in:
@@ -455,6 +455,10 @@ export const api = {
|
||||
body: JSON.stringify(data),
|
||||
}),
|
||||
|
||||
// Delete the current user's own account (soft delete)
|
||||
deleteMe: (requestConfig?: RequestConfig) =>
|
||||
request<{ message: string }>('/users/me', { method: 'DELETE' }, true, requestConfig),
|
||||
|
||||
organizations: (requestConfig?: RequestConfig) =>
|
||||
request<OrganizationsResponse>('/users/me/organizations', {}, true, requestConfig),
|
||||
|
||||
@@ -548,6 +552,15 @@ export const api = {
|
||||
unsuspendUser: (userId: string, requestConfig?: RequestConfig) =>
|
||||
request<{ user: User }>(`/admin/users/${userId}/unsuspend`, { method: 'POST' }, true, requestConfig),
|
||||
|
||||
// Permanently delete a user — revokes certs, cascades DB delete, unrecoverable
|
||||
hardDeleteUser: (userId: string, requestConfig?: RequestConfig) =>
|
||||
request<{ deleted_user_id: string; deleted_user_email: string; ssh_keys_deleted: number; certs_revoked: number }>(
|
||||
`/admin/users/${userId}/delete`,
|
||||
{ method: 'POST', body: JSON.stringify({ confirm: true }) },
|
||||
true,
|
||||
requestConfig,
|
||||
),
|
||||
|
||||
// Get the cert policy for a department
|
||||
getDeptCertPolicy: (orgId: string, deptId: string, requestConfig?: RequestConfig) =>
|
||||
request<{ cert_policy: DeptCertPolicy }>(`/organizations/${orgId}/departments/${deptId}/cert-policy`, {}, true, requestConfig),
|
||||
@@ -801,6 +814,10 @@ export const api = {
|
||||
getById: (orgId: string, requestConfig?: RequestConfig) =>
|
||||
request<{ organization: Organization; member_count: number }>(`/organizations/${orgId}`, {}, true, requestConfig),
|
||||
|
||||
// Delete an organization (owner only; must have no other members)
|
||||
deleteOrganization: (orgId: string, requestConfig?: RequestConfig) =>
|
||||
request<{ message: string }>(`/organizations/${orgId}`, { method: 'DELETE' }, true, requestConfig),
|
||||
|
||||
// Get organization members
|
||||
getMembers: (orgId: string, requestConfig?: RequestConfig) =>
|
||||
request<{ members: OrganizationMember[]; count: number }>(`/organizations/${orgId}/members`, {}, true, requestConfig),
|
||||
@@ -976,6 +993,15 @@ export const api = {
|
||||
method: 'POST',
|
||||
}, true, requestConfig),
|
||||
|
||||
// Transfer organization ownership to another member
|
||||
transferOwnership: (orgId: string, newOwnerUserId: string, requestConfig?: RequestConfig) =>
|
||||
request<{ previous_owner: OrganizationMember; new_owner: OrganizationMember }>(
|
||||
`/organizations/${orgId}/transfer-ownership`,
|
||||
{ method: 'POST', body: JSON.stringify({ new_owner_user_id: newOwnerUserId }) },
|
||||
true,
|
||||
requestConfig,
|
||||
),
|
||||
|
||||
// List Certificate Authorities for an org
|
||||
getCAs: (orgId: string, requestConfig?: RequestConfig) =>
|
||||
request<{ cas: OrgCA[]; count: number }>(`/organizations/${orgId}/cas`, {}, true, requestConfig),
|
||||
@@ -1364,6 +1390,8 @@ export interface OrgCA {
|
||||
total_certs: number;
|
||||
active_certs: number;
|
||||
revoked_certs: number;
|
||||
/** Next serial number that will be assigned when a certificate is issued. */
|
||||
next_serial_number: number | null;
|
||||
created_at: string | null;
|
||||
updated_at: string | null;
|
||||
/** Set when the key was last rotated. */
|
||||
|
||||
Reference in New Issue
Block a user