mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 17:57:33 +00:00
feat(console): Add organization ID filter to organization list (#9823)
<!-- Please inform yourself about the contribution guidelines on submitting a PR here: https://github.com/zitadel/zitadel/blob/main/CONTRIBUTING.md#submit-a-pull-request-pr. Take note of how PR/commit titles should be written and replace the template texts in the sections below. Don't remove any of the sections. It is important that the commit history clearly shows what is changed and why. Important: By submitting a contribution you agree to the terms from our Licensing Policy as described here: https://github.com/zitadel/zitadel/blob/main/LICENSING.md#community-contributions. --> # Which Problems Are Solved Replace this example text with a concise list of problems that this PR solves. - Organization list lacked the ability to filter by organization ID - No efficient method was provided for users to search organizations by ID # How the Problems Are Solved Replace this example text with a concise list of changes that this PR introduces. - Added organization ID filtering functionality to `filter-org.component.ts` - Added `ID` to the `SubQuery` enum - Added `ID` case handling to `changeCheckbox`, `setValue`, and `getSubFilter` methods - Added ID filter UI to `filter-org.component.html` - Added checkbox and text input field - Used translation key to display "Organization ID" label - Added new translation key to translation file (`en.json`) - Added `FILTER.ORGID` key with "Organization ID" value # Additional Changes Replace this example text with a concise list of additional changes that this PR introduces, that are not directly solving the initial problem but are related. - Maintained consistency with existing filtering functionality - Ensured intuitive user interface usability - Added new key while maintaining translation file structure # Additional Context Replace this example with links to related issues, discussions, discord threads, or other sources with more context. Use the Closing #issue syntax for issues that are resolved with this PR. - Closes #8792 - Discussion #xxx - Follow-up for PR #xxx - https://discord.com/channels/xxx/xxx --------- Co-authored-by: Marco A. <kwbmm1990@gmail.com>
This commit is contained in:
@@ -69,4 +69,19 @@
|
||||
</cnsl-form-field>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="id-query">
|
||||
<mat-checkbox id="id" class="cb" [checked]="getSubFilter(SubQuery.ID)" (change)="changeCheckbox(SubQuery.ID, $event)"
|
||||
>{{ 'FILTER.ORGID' | translate }}
|
||||
</mat-checkbox>
|
||||
<div class="subquery" *ngIf="getSubFilter(SubQuery.ID) as idq">
|
||||
<span class="nomethod cnsl-secondary-text">
|
||||
{{ 'FILTER.METHODS.1' | translate }}
|
||||
</span>
|
||||
|
||||
<cnsl-form-field class="filter-input-value">
|
||||
<input cnslInput name="value" [value]="idq.getId()" (change)="setValue(SubQuery.ID, idq, $event)" />
|
||||
</cnsl-form-field>
|
||||
</div>
|
||||
</div>
|
||||
</cnsl-filter>
|
||||
|
@@ -3,7 +3,14 @@ import { MatCheckboxChange } from '@angular/material/checkbox';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { take } from 'rxjs';
|
||||
import { TextQueryMethod } from 'src/app/proto/generated/zitadel/object_pb';
|
||||
import { OrgDomainQuery, OrgNameQuery, OrgQuery, OrgState, OrgStateQuery } from 'src/app/proto/generated/zitadel/org_pb';
|
||||
import {
|
||||
OrgDomainQuery,
|
||||
OrgNameQuery,
|
||||
OrgQuery,
|
||||
OrgState,
|
||||
OrgStateQuery,
|
||||
OrgIDQuery,
|
||||
} from 'src/app/proto/generated/zitadel/org_pb';
|
||||
import { UserNameQuery } from 'src/app/proto/generated/zitadel/user_pb';
|
||||
|
||||
import { FilterComponent } from '../filter/filter.component';
|
||||
@@ -12,6 +19,7 @@ enum SubQuery {
|
||||
NAME,
|
||||
STATE,
|
||||
DOMAIN,
|
||||
ID,
|
||||
}
|
||||
|
||||
@Component({
|
||||
@@ -61,6 +69,12 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
orgDomainQuery.setMethod(filter.domainQuery.method);
|
||||
orgQuery.setDomainQuery(orgDomainQuery);
|
||||
return orgQuery;
|
||||
} else if (filter.idQuery) {
|
||||
const orgQuery = new OrgQuery();
|
||||
const orgIdQuery = new OrgIDQuery();
|
||||
orgIdQuery.setId(filter.idQuery.id);
|
||||
orgQuery.setIdQuery(orgIdQuery);
|
||||
return orgQuery;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
@@ -100,6 +114,13 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
odq.setDomainQuery(dq);
|
||||
this.searchQueries.push(odq);
|
||||
break;
|
||||
case SubQuery.ID:
|
||||
const idq = new OrgIDQuery();
|
||||
idq.setId('');
|
||||
const oidq = new OrgQuery();
|
||||
oidq.setIdQuery(idq);
|
||||
this.searchQueries.push(oidq);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (subquery) {
|
||||
@@ -121,6 +142,12 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
this.searchQueries.splice(index_pdn, 1);
|
||||
}
|
||||
break;
|
||||
case SubQuery.ID:
|
||||
const index_id = this.searchQueries.findIndex((q) => (q as OrgQuery).toObject().idQuery !== undefined);
|
||||
if (index_id > -1) {
|
||||
this.searchQueries.splice(index_id, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,6 +167,10 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
(query as OrgDomainQuery).setDomain(value);
|
||||
this.filterChanged.emit(this.searchQueries ? this.searchQueries : []);
|
||||
break;
|
||||
case SubQuery.ID:
|
||||
(query as OrgIDQuery).setId(value);
|
||||
this.filterChanged.emit(this.searchQueries ? this.searchQueries : []);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,6 +197,13 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
case SubQuery.ID:
|
||||
const id = this.searchQueries.find((q) => (q as OrgQuery).toObject().idQuery !== undefined);
|
||||
if (id) {
|
||||
return (id as OrgQuery).getIdQuery();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -692,6 +692,7 @@
|
||||
"EMAIL": "електронна поща",
|
||||
"USERNAME": "Потребителско име",
|
||||
"ORGNAME": "Наименование на организацията",
|
||||
"ORGID": "Идентификатор на организацията",
|
||||
"PRIMARYDOMAIN": "Основен домейн",
|
||||
"PROJECTNAME": "Име на проекта",
|
||||
"RESOURCEOWNER": "Собственик на ресурс",
|
||||
@@ -2150,6 +2151,7 @@
|
||||
"ACTIVATE": "Активиране на проекта",
|
||||
"DELETE": "Изтриване на проекта",
|
||||
"ORGNAME": "Наименование на организацията",
|
||||
"ORGID": "Идентификатор на организацията",
|
||||
"ORGDOMAIN": "Домейн на организацията",
|
||||
"STATE": "Статус",
|
||||
"TYPE": "Тип",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "Email",
|
||||
"USERNAME": "Uživatelské jméno",
|
||||
"ORGNAME": "Název organizace",
|
||||
"ORGID": "ID organizace",
|
||||
"PRIMARYDOMAIN": "Primární doména",
|
||||
"PROJECTNAME": "Název projektu",
|
||||
"RESOURCEOWNER": "Vlastník zdroje",
|
||||
@@ -2151,6 +2152,7 @@
|
||||
"ACTIVATE": "Aktivovat projekt",
|
||||
"DELETE": "Smazat projekt",
|
||||
"ORGNAME": "Název organizace",
|
||||
"ORGID": "ID organizace",
|
||||
"ORGDOMAIN": "Doména organizace",
|
||||
"STATE": "Stav",
|
||||
"TYPE": "Typ",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "Email",
|
||||
"USERNAME": "Nutzername",
|
||||
"ORGNAME": "Organisationsname",
|
||||
"ORGID": "Organisations ID",
|
||||
"PRIMARYDOMAIN": "Primäre Domäne",
|
||||
"PROJECTNAME": "Projektname",
|
||||
"RESOURCEOWNER": "Ressourcenbesitzer",
|
||||
@@ -2150,6 +2151,7 @@
|
||||
"ACTIVATE": "Projekt aktivieren",
|
||||
"DELETE": "Projekt löschen",
|
||||
"ORGNAME": "Name der Organisation",
|
||||
"ORGID": "Organisations ID",
|
||||
"ORGDOMAIN": "Domain der Organisation",
|
||||
"STATE": "Status",
|
||||
"TYPE": "Typ",
|
||||
|
@@ -688,12 +688,13 @@
|
||||
},
|
||||
"FILTER": {
|
||||
"TITLE": "Filter",
|
||||
"STATE": "Status",
|
||||
"ORGNAME": "Organization Name",
|
||||
"ORGID": "Organization ID",
|
||||
"STATE": "State",
|
||||
"PRIMARYDOMAIN": "Primary Domain",
|
||||
"DISPLAYNAME": "User Display Name",
|
||||
"EMAIL": "Email",
|
||||
"USERNAME": "User Name",
|
||||
"ORGNAME": "Organization Name",
|
||||
"PRIMARYDOMAIN": "Primary Domain",
|
||||
"PROJECTNAME": "Project Name",
|
||||
"RESOURCEOWNER": "Resource Owner",
|
||||
"METHODS": {
|
||||
@@ -2153,6 +2154,7 @@
|
||||
"ACTIVATE": "Activate Project",
|
||||
"DELETE": "Delete Project",
|
||||
"ORGNAME": "Organization Name",
|
||||
"ORGID": "Organization ID",
|
||||
"ORGDOMAIN": "Organization Domain",
|
||||
"STATE": "Status",
|
||||
"TYPE": "Type",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "Email",
|
||||
"USERNAME": "Nombre de usuario",
|
||||
"ORGNAME": "Nombre de organización",
|
||||
"ORGID": "ID de organización",
|
||||
"PRIMARYDOMAIN": "Dominio primario",
|
||||
"PROJECTNAME": "Nombre de proyecto",
|
||||
"RESOURCEOWNER": "Propietario del recurso",
|
||||
@@ -2151,6 +2152,7 @@
|
||||
"ACTIVATE": "Activar proyecto",
|
||||
"DELETE": "Borrar proyecto",
|
||||
"ORGNAME": "Nombre de organización",
|
||||
"ORGID": "ID de organización",
|
||||
"ORGDOMAIN": "Dominio de organización",
|
||||
"STATE": "Estado",
|
||||
"TYPE": "Tipo",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "Courriel",
|
||||
"USERNAME": "Nom de l'utilisateur",
|
||||
"ORGNAME": "Nom de l'organisation",
|
||||
"ORGID": "ID de l'organisation",
|
||||
"PRIMARYDOMAIN": "Domaine principal",
|
||||
"PROJECTNAME": "Nom du projet",
|
||||
"RESOURCEOWNER": "Propriétaire des ressources",
|
||||
@@ -2150,6 +2151,7 @@
|
||||
"ACTIVATE": "Activer le projet",
|
||||
"DELETE": "Supprimer le projet",
|
||||
"ORGNAME": "Nom de l'organisation",
|
||||
"ORGID": "ID de l'organisation",
|
||||
"ORGDOMAIN": "Domaine de l'organisation",
|
||||
"STATE": "Statut",
|
||||
"TYPE": "Type",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "E-mail",
|
||||
"USERNAME": "Felhasználói Név",
|
||||
"ORGNAME": "Szervezet Neve",
|
||||
"ORGID": "Szervezet ID",
|
||||
"PRIMARYDOMAIN": "Elsődleges Domain",
|
||||
"PROJECTNAME": "Projekt Neve",
|
||||
"RESOURCEOWNER": "Erőforrás Tulajdonos",
|
||||
@@ -2148,6 +2149,7 @@
|
||||
"ACTIVATE": "Projekt aktiválása",
|
||||
"DELETE": "Projekt törlése",
|
||||
"ORGNAME": "Szervezet neve",
|
||||
"ORGID": "Szervezet ID",
|
||||
"ORGDOMAIN": "Szervezet domainje",
|
||||
"STATE": "Státusz",
|
||||
"TYPE": "Típus",
|
||||
|
@@ -652,6 +652,7 @@
|
||||
"EMAIL": "E-mail",
|
||||
"USERNAME": "Nama belakang",
|
||||
"ORGNAME": "Nama Organisasi",
|
||||
"ORGID": "ID Organisasi",
|
||||
"PRIMARYDOMAIN": "Domain Utama",
|
||||
"PROJECTNAME": "Nama Proyek",
|
||||
"RESOURCEOWNER": "Pemilik Sumber Daya",
|
||||
@@ -1980,6 +1981,7 @@
|
||||
"ACTIVATE": "Aktifkan Proyek",
|
||||
"DELETE": "Hapus Proyek",
|
||||
"ORGNAME": "Nama Organisasi",
|
||||
"ORGID": "ID Organisasi",
|
||||
"ORGDOMAIN": "Domain Organisasi",
|
||||
"STATE": "Status",
|
||||
"TYPE": "Jenis",
|
||||
|
@@ -692,6 +692,7 @@
|
||||
"EMAIL": "Email",
|
||||
"USERNAME": "User Name",
|
||||
"ORGNAME": "Nome organizzazione",
|
||||
"ORGID": "ID organizzazione",
|
||||
"PRIMARYDOMAIN": "Dominio primario",
|
||||
"PROJECTNAME": "Nome del progetto",
|
||||
"RESOURCEOWNER": "Resource Owner",
|
||||
@@ -2150,6 +2151,7 @@
|
||||
"ACTIVATE": "Attiva progetto",
|
||||
"DELETE": "Rimuovi progetto",
|
||||
"ORGNAME": "Nome dell'organizzazione",
|
||||
"ORGID": "ID organizzazione",
|
||||
"ORGDOMAIN": "Dominio",
|
||||
"STATE": "Stato",
|
||||
"TYPE": "Tipo",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "Eメール",
|
||||
"USERNAME": "ユーザー名",
|
||||
"ORGNAME": "組織名",
|
||||
"ORGID": "組織ID",
|
||||
"PRIMARYDOMAIN": "プライマリドメイン",
|
||||
"PROJECTNAME": "プロジェクト名",
|
||||
"RESOURCEOWNER": "リソース所有者",
|
||||
@@ -2150,6 +2151,7 @@
|
||||
"ACTIVATE": "プロジェクトのアクティブ化",
|
||||
"DELETE": "プロジェクトの削除",
|
||||
"ORGNAME": "組織名",
|
||||
"ORGID": "組織ID",
|
||||
"ORGDOMAIN": "組織ドメイン",
|
||||
"STATE": "ステータス",
|
||||
"TYPE": "タイプ",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "이메일",
|
||||
"USERNAME": "사용자 이름",
|
||||
"ORGNAME": "조직 이름",
|
||||
"ORGID": "조직 ID",
|
||||
"PRIMARYDOMAIN": "기본 도메인",
|
||||
"PROJECTNAME": "프로젝트 이름",
|
||||
"RESOURCEOWNER": "리소스 소유자",
|
||||
@@ -2150,6 +2151,7 @@
|
||||
"ACTIVATE": "프로젝트 활성화",
|
||||
"DELETE": "프로젝트 삭제",
|
||||
"ORGNAME": "조직 이름",
|
||||
"ORGID": "조직 ID",
|
||||
"ORGDOMAIN": "조직 도메인",
|
||||
"STATE": "상태",
|
||||
"TYPE": "유형",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "Е-пошта",
|
||||
"USERNAME": "Корисничко име",
|
||||
"ORGNAME": "Име на организацијата",
|
||||
"ORGID": "Идентификатор на организацијата",
|
||||
"PRIMARYDOMAIN": "Примарен домен",
|
||||
"PROJECTNAME": "Име на проектот",
|
||||
"RESOURCEOWNER": "Сопственик на ресурсот",
|
||||
@@ -2153,6 +2154,7 @@
|
||||
"ACTIVATE": "Активирај проект",
|
||||
"DELETE": "Избриши проект",
|
||||
"ORGNAME": "Име на организација",
|
||||
"ORGID": "Идентификатор на организација",
|
||||
"ORGDOMAIN": "Домен на организација",
|
||||
"STATE": "Статус",
|
||||
"TYPE": "Тип",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "E-mail",
|
||||
"USERNAME": "Gebruikersnaam",
|
||||
"ORGNAME": "Organisatienaam",
|
||||
"ORGID": "Organisatie ID",
|
||||
"PRIMARYDOMAIN": "Primair domein",
|
||||
"PROJECTNAME": "Projectnaam",
|
||||
"RESOURCEOWNER": "Eigenaar van de bron",
|
||||
@@ -2150,6 +2151,7 @@
|
||||
"ACTIVATE": "Activeer Project",
|
||||
"DELETE": "Verwijder Project",
|
||||
"ORGNAME": "Organisatienaam",
|
||||
"ORGID": "Organisatie ID",
|
||||
"ORGDOMAIN": "Organisatie Domein",
|
||||
"STATE": "Status",
|
||||
"TYPE": "Type",
|
||||
|
@@ -692,6 +692,7 @@
|
||||
"EMAIL": "Email",
|
||||
"USERNAME": "Nazwa Użytkownika",
|
||||
"ORGNAME": "Nazwa Organizacji",
|
||||
"ORGID": "ID Organizacji",
|
||||
"PRIMARYDOMAIN": "Domena podstawowa",
|
||||
"PROJECTNAME": "Nazwa Projektu",
|
||||
"RESOURCEOWNER": "Właściciel Zasobu",
|
||||
@@ -2149,6 +2150,7 @@
|
||||
"ACTIVATE": "Aktywuj projekt",
|
||||
"DELETE": "Usuń projekt",
|
||||
"ORGNAME": "Nazwa organizacji",
|
||||
"ORGID": "ID organizacji",
|
||||
"ORGDOMAIN": "Domena organizacji",
|
||||
"STATE": "Status",
|
||||
"TYPE": "Typ",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "E-mail",
|
||||
"USERNAME": "Nome de Usuário",
|
||||
"ORGNAME": "Nome da Organização",
|
||||
"ORGID": "ID da Organização",
|
||||
"PRIMARYDOMAIN": "Domínio primário",
|
||||
"PROJECTNAME": "Nome do Projeto",
|
||||
"RESOURCEOWNER": "Proprietário do Recurso",
|
||||
@@ -2152,6 +2153,7 @@
|
||||
"ACTIVATE": "Ativar Projeto",
|
||||
"DELETE": "Excluir Projeto",
|
||||
"ORGNAME": "Nome da Organização",
|
||||
"ORGID": "ID da Organização",
|
||||
"ORGDOMAIN": "Domínio da Organização",
|
||||
"STATE": "Status",
|
||||
"TYPE": "Tipo",
|
||||
|
@@ -691,6 +691,7 @@
|
||||
"EMAIL": "E-mail",
|
||||
"USERNAME": "Numele utilizatorului",
|
||||
"ORGNAME": "Numele organizației",
|
||||
"ORGID": "ID-ul organizației",
|
||||
"PRIMARYDOMAIN": "Domeniu principal",
|
||||
"PROJECTNAME": "Numele proiectului",
|
||||
"RESOURCEOWNER": "Proprietarul resursei",
|
||||
@@ -2148,6 +2149,7 @@
|
||||
"ACTIVATE": "Activați proiectul",
|
||||
"DELETE": "Ștergeți proiectul",
|
||||
"ORGNAME": "Nume organizație",
|
||||
"ORGID": "ID organizație",
|
||||
"ORGDOMAIN": "Domeniu organizație",
|
||||
"STATE": "Stare",
|
||||
"TYPE": "Tip",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "Электронная почта",
|
||||
"USERNAME": "Имя пользователя",
|
||||
"ORGNAME": "Название организации",
|
||||
"ORGID": "ID организации",
|
||||
"PRIMARYDOMAIN": "Основной домен",
|
||||
"PROJECTNAME": "Название проекта",
|
||||
"RESOURCEOWNER": "Владелец ресурса",
|
||||
@@ -2237,6 +2238,7 @@
|
||||
"ACTIVATE": "Активировать проект",
|
||||
"DELETE": "Удалить проект",
|
||||
"ORGNAME": "Название организации",
|
||||
"ORGID": "ID организации",
|
||||
"ORGDOMAIN": "Домен организации",
|
||||
"STATE": "Статус",
|
||||
"TYPE": "Тип",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "E-post",
|
||||
"USERNAME": "Användarnamn",
|
||||
"ORGNAME": "Organisationsnamn",
|
||||
"ORGID": "Organisations ID",
|
||||
"PRIMARYDOMAIN": "Primär domän",
|
||||
"PROJECTNAME": "Projektnamn",
|
||||
"RESOURCEOWNER": "Resursägare",
|
||||
@@ -2154,6 +2155,7 @@
|
||||
"ACTIVATE": "Aktivera projekt",
|
||||
"DELETE": "Ta bort projekt",
|
||||
"ORGNAME": "Organisationsnamn",
|
||||
"ORGID": "Organisations ID",
|
||||
"ORGDOMAIN": "Organisationsdomän",
|
||||
"STATE": "Status",
|
||||
"TYPE": "Typ",
|
||||
|
@@ -693,6 +693,7 @@
|
||||
"EMAIL": "邮箱",
|
||||
"USERNAME": "用户名",
|
||||
"ORGNAME": "组织名称",
|
||||
"ORGID": "组织ID",
|
||||
"PRIMARYDOMAIN": "主域",
|
||||
"PROJECTNAME": "项目名称",
|
||||
"RESOURCEOWNER": "资源所有者",
|
||||
@@ -2149,6 +2150,7 @@
|
||||
"ACTIVATE": "启用项目",
|
||||
"DELETE": "删除项目",
|
||||
"ORGNAME": "组织名称",
|
||||
"ORGID": "组织ID",
|
||||
"ORGDOMAIN": "组织域名",
|
||||
"STATE": "状态",
|
||||
"TYPE": "类型",
|
||||
|
Reference in New Issue
Block a user