fix: include missing files for tenant impersonation feature
All checks were successful
Build and Deploy / build-and-push (push) Successful in 1m7s
All checks were successful
Build and Deploy / build-and-push (push) Successful in 1m7s
- Added backend impersonate endpoint. - Added frontend impersonate button and functions. - Fixed build failure by including missing exported functions in dataService.ts.
This commit is contained in:
@@ -387,6 +387,50 @@ export const login = async (credentials: any): Promise<any> => {
|
||||
return data;
|
||||
};
|
||||
|
||||
export const impersonateTenant = async (tenantId: string): Promise<any> => {
|
||||
const response = await fetch(`${API_URL}/impersonate/${tenantId}`, {
|
||||
method: 'POST',
|
||||
headers: getHeaders()
|
||||
});
|
||||
|
||||
const contentType = response.headers.get("content-type");
|
||||
const isJson = contentType && contentType.indexOf("application/json") !== -1;
|
||||
|
||||
if (!response.ok) {
|
||||
const errorData = isJson ? await response.json() : { error: 'Erro no servidor' };
|
||||
throw new Error(errorData.error || 'Erro ao assumir identidade');
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
const oldToken = localStorage.getItem('ctms_token');
|
||||
if (oldToken) {
|
||||
localStorage.setItem('ctms_super_admin_token', oldToken);
|
||||
}
|
||||
|
||||
localStorage.setItem('ctms_token', data.token);
|
||||
localStorage.setItem('ctms_user_id', data.user.id);
|
||||
localStorage.setItem('ctms_tenant_id', data.user.tenant_id || '');
|
||||
return data;
|
||||
};
|
||||
|
||||
export const returnToSuperAdmin = (): boolean => {
|
||||
const superAdminToken = localStorage.getItem('ctms_super_admin_token');
|
||||
if (superAdminToken) {
|
||||
try {
|
||||
const payload = JSON.parse(atob(superAdminToken.split('.')[1]));
|
||||
localStorage.setItem('ctms_token', superAdminToken);
|
||||
localStorage.setItem('ctms_user_id', payload.id);
|
||||
localStorage.setItem('ctms_tenant_id', payload.tenant_id || 'system');
|
||||
localStorage.removeItem('ctms_super_admin_token');
|
||||
return true;
|
||||
} catch (e) {
|
||||
console.error("Failed to restore super admin token", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
export const register = async (userData: any): Promise<boolean> => {
|
||||
const response = await fetch(`${API_URL}/auth/register`, {
|
||||
method: 'POST',
|
||||
|
||||
Reference in New Issue
Block a user