mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-30 02:52:16 +00:00
feat(console): allow filter org by primary domain on instance (#7283)
* feat: i18n translations * feat: add primary domain to filter-org component * fix: add listOrgs service to admin and use it for org-table component --------- Co-authored-by: Max Peintner <[email protected]>
This commit is contained in:
co-authored by
Max Peintner
parent
aa407c3c3e
commit
46bffd24ee
@@ -46,4 +46,27 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="domain-query">
|
||||
<mat-checkbox
|
||||
id="domain"
|
||||
class="cb"
|
||||
[checked]="getSubFilter(SubQuery.DOMAIN)"
|
||||
(change)="changeCheckbox(SubQuery.DOMAIN, $event)"
|
||||
>{{ 'FILTER.PRIMARYDOMAIN' | translate }}
|
||||
</mat-checkbox>
|
||||
<div class="subquery" *ngIf="getSubFilter(SubQuery.DOMAIN) as dq">
|
||||
<cnsl-form-field class="filter-select-method">
|
||||
<mat-select [value]="dq.getMethod()" (selectionChange)="setMethod(dq, $event)">
|
||||
<mat-option *ngFor="let method of methods" [value]="method">
|
||||
{{ 'FILTER.METHODS.' + method | translate }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</cnsl-form-field>
|
||||
|
||||
<cnsl-form-field class="filter-input-value">
|
||||
<input cnslInput name="value" [value]="dq.getDomain()" (change)="setValue(SubQuery.DOMAIN, dq, $event)" />
|
||||
</cnsl-form-field>
|
||||
</div>
|
||||
</div>
|
||||
</cnsl-filter>
|
||||
|
||||
@@ -3,7 +3,7 @@ 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 { OrgNameQuery, OrgQuery, OrgState, OrgStateQuery } from 'src/app/proto/generated/zitadel/org_pb';
|
||||
import { OrgDomainQuery, OrgNameQuery, OrgQuery, OrgState, OrgStateQuery } from 'src/app/proto/generated/zitadel/org_pb';
|
||||
import { UserNameQuery } from 'src/app/proto/generated/zitadel/user_pb';
|
||||
|
||||
import { FilterComponent } from '../filter/filter.component';
|
||||
@@ -11,6 +11,7 @@ import { FilterComponent } from '../filter/filter.component';
|
||||
enum SubQuery {
|
||||
NAME,
|
||||
STATE,
|
||||
DOMAIN,
|
||||
}
|
||||
|
||||
@Component({
|
||||
@@ -52,6 +53,13 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
orgStateQuery.setState(filter.stateQuery.state);
|
||||
orgQuery.setStateQuery(orgStateQuery);
|
||||
return orgQuery;
|
||||
} else if (filter.domainQuery) {
|
||||
const orgQuery = new OrgQuery();
|
||||
const orgDomainQuery = new OrgDomainQuery();
|
||||
orgDomainQuery.setDomain(filter.domainQuery.domain);
|
||||
orgDomainQuery.setMethod(filter.domainQuery.method);
|
||||
orgQuery.setDomainQuery(orgDomainQuery);
|
||||
return orgQuery;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
@@ -83,6 +91,14 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
osq.setStateQuery(sq);
|
||||
this.searchQueries.push(osq);
|
||||
break;
|
||||
case SubQuery.DOMAIN:
|
||||
const dq = new OrgDomainQuery();
|
||||
dq.setMethod(TextQueryMethod.TEXT_QUERY_METHOD_CONTAINS_IGNORE_CASE);
|
||||
dq.setDomain('');
|
||||
const odq = new OrgQuery();
|
||||
odq.setDomainQuery(dq);
|
||||
this.searchQueries.push(odq);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (subquery) {
|
||||
@@ -98,6 +114,12 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
this.searchQueries.splice(index_sn, 1);
|
||||
}
|
||||
break;
|
||||
case SubQuery.DOMAIN:
|
||||
const index_pdn = this.searchQueries.findIndex((q) => (q as OrgQuery).toObject().domainQuery !== undefined);
|
||||
if (index_pdn > -1) {
|
||||
this.searchQueries.splice(index_pdn, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -113,6 +135,10 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
(query as OrgStateQuery).setState(value);
|
||||
this.filterChanged.emit(this.searchQueries ? this.searchQueries : []);
|
||||
break;
|
||||
case SubQuery.DOMAIN:
|
||||
(query as OrgDomainQuery).setDomain(value);
|
||||
this.filterChanged.emit(this.searchQueries ? this.searchQueries : []);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,6 +158,13 @@ export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
case SubQuery.DOMAIN:
|
||||
const pdn = this.searchQueries.find((q) => (q as OrgQuery).toObject().domainQuery !== undefined);
|
||||
if (pdn) {
|
||||
return (pdn as OrgQuery).getDomainQuery();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ export class OrgTableComponent {
|
||||
}
|
||||
|
||||
return from(
|
||||
this.authService.listMyProjectOrgs(request.limit, request.offset, request.queries, sortingField, this.sort?.direction),
|
||||
this.adminService.listOrgs(request.limit, request.offset, request.queries, sortingField, this.sort?.direction),
|
||||
).pipe(
|
||||
map((resp) => {
|
||||
this.timestamp = resp.details?.viewTimestamp;
|
||||
|
||||
Reference in New Issue
Block a user