fix(console): orgs list is shown empty when org is removed (#7781)

fix:active orgs not shown when org is removed

Co-authored-by: Livio Spring <livio.a@gmail.com>
This commit is contained in:
Miguel Cabrerizo 2024-04-25 07:02:20 +02:00 committed by GitHub
parent d016379e2a
commit 207b20ff0f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 53 additions and 10 deletions

View File

@ -15,6 +15,7 @@ import { Member } from 'src/app/proto/generated/zitadel/member_pb';
import { Metadata } from 'src/app/proto/generated/zitadel/metadata_pb'; import { Metadata } from 'src/app/proto/generated/zitadel/metadata_pb';
import { Org, OrgState } from 'src/app/proto/generated/zitadel/org_pb'; import { Org, OrgState } from 'src/app/proto/generated/zitadel/org_pb';
import { User } from 'src/app/proto/generated/zitadel/user_pb'; import { User } from 'src/app/proto/generated/zitadel/user_pb';
import { AdminService } from 'src/app/services/admin.service';
import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service'; import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
import { GrpcAuthService } from 'src/app/services/grpc-auth.service'; import { GrpcAuthService } from 'src/app/services/grpc-auth.service';
import { ManagementService } from 'src/app/services/mgmt.service'; import { ManagementService } from 'src/app/services/mgmt.service';
@ -48,6 +49,7 @@ export class OrgDetailComponent implements OnInit, OnDestroy {
private auth: GrpcAuthService, private auth: GrpcAuthService,
private dialog: MatDialog, private dialog: MatDialog,
public mgmtService: ManagementService, public mgmtService: ManagementService,
private adminService: AdminService,
private toast: ToastService, private toast: ToastService,
private router: Router, private router: Router,
breadcrumbService: BreadcrumbService, breadcrumbService: BreadcrumbService,
@ -146,15 +148,34 @@ export class OrgDetailComponent implements OnInit, OnDestroy {
width: '400px', width: '400px',
}); });
// Before we remove the org we get the current default org
// we have to query before the current org is removed
dialogRef.afterClosed().subscribe((resp) => { dialogRef.afterClosed().subscribe((resp) => {
if (resp) { if (resp) {
this.mgmtService this.adminService
.removeOrg() .getDefaultOrg()
.then(() => { .then((response) => {
setTimeout(() => { const org = response?.org;
this.router.navigate(['/orgs']); if (org) {
}, 1000); // We now remove the org
this.toast.showInfo('ORG.TOAST.DELETED', true); this.mgmtService
.removeOrg()
.then(() => {
setTimeout(() => {
// We change active org to default org as
// current org was deleted to avoid Organization doesn't exist
this.auth.setActiveOrg(org);
// Now we visit orgs
this.router.navigate(['/orgs']);
}, 1000);
this.toast.showInfo('ORG.TOAST.DELETED', true);
})
.catch((error) => {
this.toast.showError(error);
});
} else {
this.toast.showError('ORG.TOAST.DEFAULTORGNOTFOUND', false, true);
}
}) })
.catch((error) => { .catch((error) => {
this.toast.showError(error); this.toast.showError(error);

View File

@ -90,6 +90,8 @@ import {
GetDefaultLanguageResponse, GetDefaultLanguageResponse,
GetDefaultLoginTextsRequest, GetDefaultLoginTextsRequest,
GetDefaultLoginTextsResponse, GetDefaultLoginTextsResponse,
GetDefaultOrgRequest,
GetDefaultOrgResponse,
GetDefaultPasswordChangeMessageTextRequest, GetDefaultPasswordChangeMessageTextRequest,
GetDefaultPasswordChangeMessageTextResponse, GetDefaultPasswordChangeMessageTextResponse,
GetDefaultPasswordlessRegistrationMessageTextRequest, GetDefaultPasswordlessRegistrationMessageTextRequest,
@ -429,6 +431,11 @@ export class AdminService {
this.storageService.getItem('onboarding-dismissed', StorageLocation.local) === 'true' ? true : false; this.storageService.getItem('onboarding-dismissed', StorageLocation.local) === 'true' ? true : false;
} }
public getDefaultOrg(): Promise<GetDefaultOrgResponse.AsObject> {
const req = new GetDefaultOrgRequest();
return this.grpcService.admin.getDefaultOrg(req, null).then((resp) => resp.toObject());
}
public setDefaultOrg(orgId: string): Promise<SetDefaultOrgResponse.AsObject> { public setDefaultOrg(orgId: string): Promise<SetDefaultOrgResponse.AsObject> {
const req = new SetDefaultOrgRequest(); const req = new SetDefaultOrgRequest();
req.setOrgId(orgId); req.setOrgId(orgId);

View File

@ -353,6 +353,7 @@ import {
RemoveOrgMetadataRequest, RemoveOrgMetadataRequest,
RemoveOrgMetadataResponse, RemoveOrgMetadataResponse,
RemoveOrgRequest, RemoveOrgRequest,
RemoveOrgResponse,
RemovePersonalAccessTokenRequest, RemovePersonalAccessTokenRequest,
RemovePersonalAccessTokenResponse, RemovePersonalAccessTokenResponse,
RemoveProjectGrantMemberRequest, RemoveProjectGrantMemberRequest,
@ -1749,7 +1750,7 @@ export class ManagementService {
return this.grpcService.mgmt.removeUser(req, null).then((resp) => resp.toObject()); return this.grpcService.mgmt.removeUser(req, null).then((resp) => resp.toObject());
} }
public removeOrg(): Promise<RemoveUserResponse.AsObject> { public removeOrg(): Promise<RemoveOrgResponse.AsObject> {
const req = new RemoveOrgRequest(); const req = new RemoveOrgRequest();
return this.grpcService.mgmt.removeOrg(req, null).then((resp) => resp.toObject()); return this.grpcService.mgmt.removeOrg(req, null).then((resp) => resp.toObject());
} }

View File

@ -1285,6 +1285,7 @@
"MEMBERCHANGED": "Сменен управител.", "MEMBERCHANGED": "Сменен управител.",
"SETPRIMARY": "Основен набор от домейни.", "SETPRIMARY": "Основен набор от домейни.",
"DELETED": "Организацията е изтрита успешно", "DELETED": "Организацията е изтрита успешно",
"DEFAULTORGNOTFOUND": "Организацията по подразбиране не беше намерена",
"ORG_WAS_DELETED": "Организацията е изтрита." "ORG_WAS_DELETED": "Организацията е изтрита."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1292,6 +1292,7 @@
"MEMBERCHANGED": "Manažer změněn.", "MEMBERCHANGED": "Manažer změněn.",
"SETPRIMARY": "Nastavena primární doména.", "SETPRIMARY": "Nastavena primární doména.",
"DELETED": "Organizace úspěšně smazána", "DELETED": "Organizace úspěšně smazána",
"DEFAULTORGNOTFOUND": "Výchozí organizace nebyla nalezena",
"ORG_WAS_DELETED": "Organizace byla smazána." "ORG_WAS_DELETED": "Organizace byla smazána."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1291,6 +1291,7 @@
"MEMBERCHANGED": "Manager geändert.", "MEMBERCHANGED": "Manager geändert.",
"SETPRIMARY": "Primäre Domain gesetzt.", "SETPRIMARY": "Primäre Domain gesetzt.",
"DELETED": "Organisation erfolgreich gelöscht", "DELETED": "Organisation erfolgreich gelöscht",
"DEFAULTORGNOTFOUND": "Die Standardorganisation wurde nicht gefunden",
"ORG_WAS_DELETED": "Organisation wurde gelöscht." "ORG_WAS_DELETED": "Organisation wurde gelöscht."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1291,8 +1291,9 @@
"MEMBERREMOVED": "Manager removed.", "MEMBERREMOVED": "Manager removed.",
"MEMBERCHANGED": "Manager changed.", "MEMBERCHANGED": "Manager changed.",
"SETPRIMARY": "Primary domain set.", "SETPRIMARY": "Primary domain set.",
"DELETED": "Organisation deleted successfully", "DELETED": "Organization deleted successfully",
"ORG_WAS_DELETED": "Organisation has been deleted." "DEFAULTORGNOTFOUND": "The default organization was not found",
"ORG_WAS_DELETED": "Organization has been deleted."
}, },
"DIALOG": { "DIALOG": {
"DEACTIVATE": { "DEACTIVATE": {

View File

@ -1293,6 +1293,7 @@
"MEMBERCHANGED": "Mánager modificado.", "MEMBERCHANGED": "Mánager modificado.",
"SETPRIMARY": "Dominio primario establecido.", "SETPRIMARY": "Dominio primario establecido.",
"DELETED": "Organización borrada con éxito", "DELETED": "Organización borrada con éxito",
"DEFAULTORGNOTFOUND": "No se encontró la organización por defecto",
"ORG_WAS_DELETED": "La organización ha sido borrada." "ORG_WAS_DELETED": "La organización ha sido borrada."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1291,6 +1291,7 @@
"MEMBERCHANGED": "Gestionnaire modifié.", "MEMBERCHANGED": "Gestionnaire modifié.",
"SETPRIMARY": "Domaine primaire défini.", "SETPRIMARY": "Domaine primaire défini.",
"DELETED": "Organisation supprimée avec succès", "DELETED": "Organisation supprimée avec succès",
"DEFAULTORGNOTFOUND": "L'organisation par défaut est introuvable",
"ORG_WAS_DELETED": "L'organisation a été supprimée" "ORG_WAS_DELETED": "L'organisation a été supprimée"
}, },
"DIALOG": { "DIALOG": {

View File

@ -1291,6 +1291,7 @@
"MEMBERCHANGED": "Manager cambiato con successo", "MEMBERCHANGED": "Manager cambiato con successo",
"SETPRIMARY": "Dominio primario cambiato con successo", "SETPRIMARY": "Dominio primario cambiato con successo",
"DELETED": "Organizzazione eliminata con successo", "DELETED": "Organizzazione eliminata con successo",
"DEFAULTORGNOTFOUND": "Impossibile trovare l'organizzazione predefinita",
"ORG_WAS_DELETED": "Organizzazione è stata eliminata" "ORG_WAS_DELETED": "Organizzazione è stata eliminata"
}, },
"DIALOG": { "DIALOG": {

View File

@ -1292,6 +1292,7 @@
"MEMBERCHANGED": "マネージャーが変更されました。", "MEMBERCHANGED": "マネージャーが変更されました。",
"SETPRIMARY": "プライマリドメインが設定されました。", "SETPRIMARY": "プライマリドメインが設定されました。",
"DELETED": "組織が正常に削除されました。", "DELETED": "組織が正常に削除されました。",
"DEFAULTORGNOTFOUND": "デフォルトの組織が見つかりませんでした",
"ORG_WAS_DELETED": "組織が削除されました。" "ORG_WAS_DELETED": "組織が削除されました。"
}, },
"DIALOG": { "DIALOG": {

View File

@ -1293,6 +1293,7 @@
"MEMBERCHANGED": "Променет менаџер.", "MEMBERCHANGED": "Променет менаџер.",
"SETPRIMARY": "Поставен основен домен.", "SETPRIMARY": "Поставен основен домен.",
"DELETED": "Организацијата успешно избришана", "DELETED": "Организацијата успешно избришана",
"DEFAULTORGNOTFOUND": "Стандардната организација не беше пронајдена",
"ORG_WAS_DELETED": "Организацијата е избришана." "ORG_WAS_DELETED": "Организацијата е избришана."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1292,6 +1292,7 @@
"MEMBERCHANGED": "Beheerder gewijzigd.", "MEMBERCHANGED": "Beheerder gewijzigd.",
"SETPRIMARY": "Primaire domein ingesteld.", "SETPRIMARY": "Primaire domein ingesteld.",
"DELETED": "Organisatie succesvol verwijderd", "DELETED": "Organisatie succesvol verwijderd",
"DEFAULTORGNOTFOUND": "De standaardorganisatie is niet gevonden",
"ORG_WAS_DELETED": "Organisatie is verwijderd." "ORG_WAS_DELETED": "Organisatie is verwijderd."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1291,6 +1291,7 @@
"MEMBERCHANGED": "Zmieniono managera.", "MEMBERCHANGED": "Zmieniono managera.",
"SETPRIMARY": "Ustawiono domenę podstawową.", "SETPRIMARY": "Ustawiono domenę podstawową.",
"DELETED": "Organizacja została usunięta pomyślnie", "DELETED": "Organizacja została usunięta pomyślnie",
"DEFAULTORGNOTFOUND": "Nie znaleziono organizacji domyślnej",
"ORG_WAS_DELETED": "Organizacja została usunięta." "ORG_WAS_DELETED": "Organizacja została usunięta."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1293,6 +1293,7 @@
"MEMBERCHANGED": "Gerente alterado.", "MEMBERCHANGED": "Gerente alterado.",
"SETPRIMARY": "Domínio principal definido.", "SETPRIMARY": "Domínio principal definido.",
"DELETED": "Organização excluída com sucesso", "DELETED": "Organização excluída com sucesso",
"DEFAULTORGNOTFOUND": "A organização padrão não foi encontrada",
"ORG_WAS_DELETED": "Organização foi excluída." "ORG_WAS_DELETED": "Organização foi excluída."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1335,6 +1335,7 @@
"MEMBERCHANGED": "Менеджер изменён.", "MEMBERCHANGED": "Менеджер изменён.",
"SETPRIMARY": "Установлен основной домен.", "SETPRIMARY": "Установлен основной домен.",
"DELETED": "Организация успешно удалена", "DELETED": "Организация успешно удалена",
"DEFAULTORGNOTFOUND": "Организация по умолчанию не найдена",
"ORG_WAS_DELETED": "Организация удалена." "ORG_WAS_DELETED": "Организация удалена."
}, },
"DIALOG": { "DIALOG": {

View File

@ -1291,6 +1291,7 @@
"MEMBERCHANGED": "管理者以改变。", "MEMBERCHANGED": "管理者以改变。",
"SETPRIMARY": "已设为主域名。", "SETPRIMARY": "已设为主域名。",
"DELETED": "成功删除的组织", "DELETED": "成功删除的组织",
"DEFAULTORGNOTFOUND": "未找到默认组织",
"ORG_WAS_DELETED": "组织被删除" "ORG_WAS_DELETED": "组织被删除"
}, },
"DIALOG": { "DIALOG": {