From 2ba11aaaef23a75117eabff1a28a8ecc53c86460 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Tue, 21 Oct 2025 21:49:35 +0700 Subject: [PATCH 1/7] init ManagerUiService --- .../control-center/src/app/app.component.html | 22 +++++++++------- apps/control-center/src/app/app.component.ts | 4 ++- .../components/toolbar/toolbar.component.html | 18 +++++++------ .../components/toolbar/toolbar.component.ts | 5 +++- .../shared/services/app-auth-guard/index.ts | 1 + .../app-auth-guard/manager-ui.service.ts | 26 +++++++++++++++++++ 6 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 apps/control-center/src/app/shared/services/app-auth-guard/manager-ui.service.ts diff --git a/apps/control-center/src/app/app.component.html b/apps/control-center/src/app/app.component.html index 073c3364b..c49f79bbd 100644 --- a/apps/control-center/src/app/app.component.html +++ b/apps/control-center/src/app/app.component.html @@ -1,16 +1,18 @@ - - - + @if (managerUiService.isManagerUi() === false) { + + + + } diff --git a/apps/control-center/src/app/app.component.ts b/apps/control-center/src/app/app.component.ts index 8b7ebf2a7..4569910ca 100644 --- a/apps/control-center/src/app/app.component.ts +++ b/apps/control-center/src/app/app.component.ts @@ -20,7 +20,7 @@ import { ROUTING_CONFIG as TERMS_ROUTING_CONFIG } from './sections/terms/routing import { ROUTING_CONFIG as WALLETS_ROUTING_CONFIG } from './sections/wallets/routing-config'; import { ROUTING_CONFIG as WITHDRAWALS_ROUTING_CONFIG } from './sections/withdrawals/routing-config'; import { SidenavInfoService } from './shared/components/sidenav-info'; -import { AppAuthGuardService, Services } from './shared/services'; +import { AppAuthGuardService, ManagerUiService, Services } from './shared/services'; @Component({ selector: 'cc-root', @@ -32,6 +32,8 @@ export class AppComponent { private keycloakService = inject(KeycloakService); private appAuthGuardService = inject(AppAuthGuardService); public sidenavInfoService = inject(SidenavInfoService); + public managerUiService = inject(ManagerUiService); + links$: Observable = from(this.keycloakService.loadUserProfile()).pipe( startWith(null), map(() => this.getMenuItemsGroups()), diff --git a/apps/control-center/src/app/core/components/toolbar/toolbar.component.html b/apps/control-center/src/app/core/components/toolbar/toolbar.component.html index 2a0653e62..c1acd71c1 100644 --- a/apps/control-center/src/app/core/components/toolbar/toolbar.component.html +++ b/apps/control-center/src/app/core/components/toolbar/toolbar.component.html @@ -5,14 +5,16 @@
- + @if (isManagerUi() === false) { + + }
@if (partyIdControl.value) { + } + @if (partyIdControl.value && !(hasMenu$ | async)) { + + } +
} -
- @if (partyIdControl.value) { - - } - @if (partyIdControl.value && !(hasMenu$ | async)) { - - } -
{{ user()?.username }} diff --git a/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts b/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts index 8f517e74f..e4ef19ea5 100644 --- a/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts +++ b/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts @@ -1,11 +1,15 @@ -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router'; import { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular'; import { environment } from '../../../../environments/environment'; +import { ManagerUiService } from './manager-ui.service'; + @Injectable({ providedIn: 'root' }) export class AppAuthGuardService extends KeycloakAuthGuard { + private managerUiService = inject(ManagerUiService); + constructor( // eslint-disable-next-line @angular-eslint/prefer-inject protected override router: Router, @@ -17,8 +21,14 @@ export class AppAuthGuardService extends KeycloakAuthGuard { async isAccessAllowed( route: ActivatedRouteSnapshot, - _state: RouterStateSnapshot, + state: RouterStateSnapshot, ): Promise { + if (this.managerUiService.isManagerUi() === true) { + const partyId = this.managerUiService.partyId(); + if (partyId && !state.url.startsWith(`/party/${partyId}`)) { + return this.router.createUrlTree(['/party', partyId]); + } + } return ( this.userHasSomeServiceMethods(route.data['services']) || this.router.createUrlTree(['404']) diff --git a/apps/control-center/src/app/shared/services/app-auth-guard/manager-ui.service.ts b/apps/control-center/src/app/shared/services/app-auth-guard/manager-ui.service.ts index 06b18d0fd..21620e1ee 100644 --- a/apps/control-center/src/app/shared/services/app-auth-guard/manager-ui.service.ts +++ b/apps/control-center/src/app/shared/services/app-auth-guard/manager-ui.service.ts @@ -11,8 +11,8 @@ export class ManagerUiService { private keycloakUserService = inject(KeycloakUserService); private keycloakService = inject(KeycloakService); - isManagerUi = computed(() => (this.keycloakUserService.user.value() ? !!this.getRole() : null)); - partyId = computed(() => (this.keycloakUserService.user.value() ? this.getParty() : null)); + isManagerUi = computed(() => (this.keycloakUserService.user.value(), !!this.getRole())); + partyId = computed(() => (this.keycloakUserService.user.value(), this.getParty())); private getRole() { return this.keycloakService From dfda05ce54924aae9992ce5b44cfea0bac4d3158 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Tue, 21 Oct 2025 22:14:01 +0700 Subject: [PATCH 3/7] fix --- .../src/lib/components/input-field/input-field.component.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/matez/src/lib/components/input-field/input-field.component.scss b/libs/matez/src/lib/components/input-field/input-field.component.scss index 0537df3b9..d2016eafa 100644 --- a/libs/matez/src/lib/components/input-field/input-field.component.scss +++ b/libs/matez/src/lib/components/input-field/input-field.component.scss @@ -1,4 +1,6 @@ .v-input-field { + width: 100%; + .postfix { white-space: nowrap; } From 82e38f1faf50a728096af7c7aa0699f52c18e800 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Tue, 21 Oct 2025 22:17:29 +0700 Subject: [PATCH 4/7] add publish for epics --- .github/workflows/main.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index e63d74323..fd0ad5326 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -1,7 +1,7 @@ name: Main on: push: - branches: ['master', 'main'] + branches: ['master', 'main', 'epic/*'] jobs: deploy: name: Deploy @@ -46,6 +46,7 @@ jobs: name: Notify runs-on: ubuntu-latest needs: [deploy] + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - uses: valitydev/action-mattermost-notify@v0.1.4 From 348ca3e1a0551d1c6df494a53867cfd519ee0ea7 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Tue, 21 Oct 2025 22:30:50 +0700 Subject: [PATCH 5/7] hide del & edit --- .../domain-object-card.component.html | 10 ++++++---- .../domain-object-card/domain-object-card.component.ts | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/control-center/src/app/shared/components/thrift-api-crud/domain/domain-object-card/domain-object-card.component.html b/apps/control-center/src/app/shared/components/thrift-api-crud/domain/domain-object-card/domain-object-card.component.html index 5c429b4d7..24066ef40 100644 --- a/apps/control-center/src/app/shared/components/thrift-api-crud/domain/domain-object-card/domain-object-card.component.html +++ b/apps/control-center/src/app/shared/components/thrift-api-crud/domain/domain-object-card/domain-object-card.component.html @@ -6,8 +6,10 @@ type="DomainObject" (kindChange)="kind.set($event)" > - - - - + @if (!managerUiService.isManagerUi()) { + + + + + } diff --git a/apps/control-center/src/app/shared/components/thrift-api-crud/domain/domain-object-card/domain-object-card.component.ts b/apps/control-center/src/app/shared/components/thrift-api-crud/domain/domain-object-card/domain-object-card.component.ts index 88dfe7d0e..182db5f4f 100644 --- a/apps/control-center/src/app/shared/components/thrift-api-crud/domain/domain-object-card/domain-object-card.component.ts +++ b/apps/control-center/src/app/shared/components/thrift-api-crud/domain/domain-object-card/domain-object-card.component.ts @@ -15,6 +15,7 @@ import { ReplaySubject, combineLatest, switchMap } from 'rxjs'; import { first, map, shareReplay } from 'rxjs/operators'; import { DomainStoreService } from '../../../../../api/domain-config/stores/domain-store.service'; +import { ManagerUiService } from '../../../../services'; import { SidenavInfoModule } from '../../../sidenav-info'; import { CardComponent } from '../../../sidenav-info/components/card/card.component'; import { DomainThriftViewerComponent } from '../domain-thrift-viewer'; @@ -38,6 +39,8 @@ export class DomainObjectCardComponent implements OnChanges { private domainStoreService = inject(DomainStoreService); private destroyRef = inject(DestroyRef); private dialogService = inject(DialogService); + managerUiService = inject(ManagerUiService); + @Input() ref!: Reference; ref$ = new ReplaySubject(1); From 4a1e33c9b7302ddce0a9dfad1f07ffa788ba2426 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Tue, 21 Oct 2025 22:42:01 +0700 Subject: [PATCH 6/7] try log --- .../services/app-auth-guard/app-auth-guard.service.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts b/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts index e4ef19ea5..5f31bacc6 100644 --- a/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts +++ b/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts @@ -23,6 +23,12 @@ export class AppAuthGuardService extends KeycloakAuthGuard { route: ActivatedRouteSnapshot, state: RouterStateSnapshot, ): Promise { + console.log( + this.managerUiService.partyId(), + this.managerUiService.isManagerUi(), + route.data['services'], + this.userHasSomeServiceMethods(route.data['services']), + ); if (this.managerUiService.isManagerUi() === true) { const partyId = this.managerUiService.partyId(); if (partyId && !state.url.startsWith(`/party/${partyId}`)) { From 6413465d4f59b4e732e858f2b19e45f98a23ff8f Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Wed, 22 Oct 2025 15:06:18 +0700 Subject: [PATCH 7/7] clean --- .../services/app-auth-guard/app-auth-guard.service.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts b/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts index 5f31bacc6..e4ef19ea5 100644 --- a/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts +++ b/apps/control-center/src/app/shared/services/app-auth-guard/app-auth-guard.service.ts @@ -23,12 +23,6 @@ export class AppAuthGuardService extends KeycloakAuthGuard { route: ActivatedRouteSnapshot, state: RouterStateSnapshot, ): Promise { - console.log( - this.managerUiService.partyId(), - this.managerUiService.isManagerUi(), - route.data['services'], - this.userHasSomeServiceMethods(route.data['services']), - ); if (this.managerUiService.isManagerUi() === true) { const partyId = this.managerUiService.partyId(); if (partyId && !state.url.startsWith(`/party/${partyId}`)) {