Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
workflow_dispatch:
push:
branches:
- main
- 'release-*'

env:
REPO: ${{ github.repository }}
Expand Down
32 changes: 32 additions & 0 deletions .github/workflows/build-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: build
on:
workflow_dispatch:
push:
branches:
- dev

env:
REPO: ${{ github.repository }}

jobs:
build-app:
runs-on: ubuntu-latest
steps:
- name: downcase REPO
run: |
echo "REPO=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV}
- uses: actions/checkout@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build docker image
env:
TAG: ghcr.io/${{ env.REPO }}:dev
run: |
echo $TAG
docker build -f configurations/docker/Dockerfile . --tag $TAG --cache-from $TAG
docker push $TAG
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { MultidirectoryUiKitModule, StepperComponent } from 'multidirectory-ui-k
import { DialogService } from '../../../services/dialog.service';
import { MultidirectoryApiService } from '@services/multidirectory-api.service';
import { ToastrService } from 'ngx-toastr';
import { catchError, debounceTime, EMPTY, map, Subject, switchMap } from 'rxjs';
import { debounceTime, finalize, map, Subject, switchMap } from 'rxjs';
import { CreateUserDialogData, CreateUserDialogReturnData } from '../../../interfaces/user-create-dialog.interface';
import { UserCreateRequest } from '@models/api/user-create/user-create.request';
import { SchemaService } from '@services/schema/schema.service';
Expand All @@ -15,7 +15,7 @@ import { CreateEntryRequest } from '@models/api/entry/create-request';
import { LdapAttribute } from '@core/ldap/ldap-attributes/ldap-attribute';

@Component({
selector: 'app-user-create-dialog',
selector: 'app-contact-create-dialog',
standalone: true,
imports: [DialogComponent, TranslocoPipe, MultidirectoryUiKitModule, ReactiveFormsModule],
templateUrl: './create-contact-dialog.component.html',
Expand Down Expand Up @@ -125,11 +125,8 @@ export class CreateContactDialogComponent implements OnInit {
}),
);
}),
catchError(() => {
this.dialogComponent?.hideSpinner();
this.toastr.error(translate('contact-create.unable-create-contact'));
this.dialogService.close(this.dialogRef);
return EMPTY;
finalize(() => {
this.dialogComponent.hideSpinner();
}),
)
.subscribe(() => {
Expand All @@ -150,7 +147,6 @@ export class CreateContactDialogComponent implements OnInit {
},
],
};
this.dialogComponent?.hideSpinner();
this.dialogService.close(this.dialogRef, newItem);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { MdFormComponent, MultidirectoryUiKitModule } from 'multidirectory-ui-ki
import { RequiredWithMessageDirective } from '@core/validators/required-with-message.directive';
import { translate, TranslocoDirective, TranslocoPipe } from '@jsverse/transloco';
import { FormsModule } from '@angular/forms';
import { catchError, EMPTY, map, Observable, Subject, switchMap, takeUntil } from 'rxjs';
import { finalize, map, Observable, Subject, switchMap, takeUntil } from 'rxjs';
import { DialogService } from '../../../services/dialog.service';
import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
import { CreateGroupDialogData, CreateGroupDialogReturnData } from '../../../interfaces/create-group-dialog.interface';
Expand Down Expand Up @@ -88,13 +88,11 @@ export class CreateGroupDialogComponent implements OnInit {
}),
);
}),
catchError(() => {
this.dialogService.close(this.dialogRef);
return EMPTY;
finalize(() => {
this.dialogComponent.hideSpinner();
}),
)
.subscribe((x) => {
this.dialogComponent?.hideSpinner();
this.setupRequest = new GroupCreateRequest();
this.dialogService.close(this.dialogRef, x);
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
import {
ChangeDetectionStrategy,
Component,
DestroyRef,
inject,
OnInit,
ViewChild,
} from '@angular/core';
import { ChangeDetectionStrategy, Component, DestroyRef, inject, OnInit, ViewChild } from '@angular/core';
import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
import { DialogComponent } from '../../core/dialog/dialog.component';
import { translate, TranslocoPipe } from '@jsverse/transloco';
Expand All @@ -14,11 +7,8 @@ import { DialogService } from '../../../services/dialog.service';
import { UserCreateService } from '@services/user-create.service';
import { MultidirectoryApiService } from '@services/multidirectory-api.service';
import { ToastrService } from 'ngx-toastr';
import { catchError, map, Subject, switchMap } from 'rxjs';
import {
CreateUserDialogData,
CreateUserDialogReturnData,
} from '../../../interfaces/user-create-dialog.interface';
import { finalize, map, Subject, switchMap } from 'rxjs';
import { CreateUserDialogData, CreateUserDialogReturnData } from '../../../interfaces/user-create-dialog.interface';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { UserCreateGeneralInfoComponent } from '@features/forms/user-create/general-info/general-info.component';
import { UserCreatePasswordSettingsComponent } from '@features/forms/user-create/password-settings/password-settings.component';
Expand Down Expand Up @@ -52,8 +42,7 @@ export class CreateUserDialogComponent implements OnInit {
unsubscribe = new Subject<void>();
formValid = false;

private dialogRef: DialogRef<CreateUserDialogReturnData, CreateUserDialogComponent> =
inject(DialogRef);
private dialogRef: DialogRef<CreateUserDialogReturnData, CreateUserDialogComponent> = inject(DialogRef);
private dialogService: DialogService = inject(DialogService);
private setup: UserCreateService = inject(UserCreateService);
private api: MultidirectoryApiService = inject(MultidirectoryApiService);
Expand All @@ -69,14 +58,7 @@ export class CreateUserDialogComponent implements OnInit {
});
}

objectClasses: string[] = [
'user',
'top',
'person',
'organizationalPerson',
'posixAccount',
'shadowAccount',
];
objectClasses: string[] = ['user', 'top', 'person', 'organizationalPerson', 'posixAccount', 'shadowAccount'];
getObjectClasses() {
return this.schema.getSchemaEntity('User').pipe(
map((result) => {
Expand Down Expand Up @@ -152,13 +134,11 @@ export class CreateUserDialogComponent implements OnInit {
}),
);
}),
catchError((err) => {
finalize(() => {
this.dialogComponent.hideSpinner();
throw err;
}),
)
.subscribe((x) => {
this.dialogComponent.hideSpinner();
this.close(x);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
@case (EntityTypes.Computer) {
<app-computer-properties class="block h-full" [accessor]="accessor" />
}
@case (EntityTypes.Contact) {
<app-contact-properties class="block h-full" #contactProps [accessor]="accessor"></app-contact-properties>
}
@default {
<div class="block flex h-full">
<app-entity-attributes [accessor]="accessor" class="w-full" />
Expand All @@ -22,11 +25,16 @@
</div>

<div class="app-modal-footer flex justify-end">
<md-button (click)="save(true)" class="pr-8">{{
'properties-modal.close' | transloco
}}</md-button>
<md-button (click)="save(false)" [disabled]="userProps && !userProps.generalPropertiesValid" [primary]="true"
>{{ 'properties-modal.approve' | transloco }}
</md-button>
<md-button (click)="save(true)" class="pr-8">{{ 'properties-modal.close' | transloco }}</md-button>
@if (userProps) {
<md-button (click)="save(false)" [disabled]="userProps && !userProps.generalPropertiesValid" [primary]="true"
>{{ 'properties-modal.approve' | transloco }}
</md-button>
}
@if (contactProps) {
<md-button (click)="save(false)" [disabled]="contactProps && !contactProps.generalPropertiesValid" [primary]="true"
>{{ 'properties-modal.approve' | transloco }}
</md-button>
}
</div>
</app-dialog>
Original file line number Diff line number Diff line change
@@ -1,35 +1,23 @@
import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
inject,
OnInit,
ViewChild,
} from '@angular/core';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, ViewChild } from '@angular/core';
import { ComputerPropertiesComponent } from '@features/ldap-properties/computer-properties/computer-properties.component';
import { DialogComponent } from '../../core/dialog/dialog.component';
import { EntityAttributesComponent } from '@features/entity-attributes/entity-attributes.component';
import { GroupPropertiesComponent } from '@features/ldap-properties/group-properties/group-properties.component';
import { MultidirectoryUiKitModule } from 'multidirectory-ui-kit';
import { translate, TranslocoPipe } from '@jsverse/transloco';
import { UserPropertiesComponent } from '@features/ldap-properties/user-properties/user-properties.component';
import { EMPTY, of, switchMap, take } from 'rxjs';
import { EMPTY, finalize, of, switchMap, take } from 'rxjs';
import { DialogService } from '../../../services/dialog.service';
import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
import {
EntityPropertiesDialogData,
EntityPropertiesDialogReturnData,
} from '../../../interfaces/entity-properties-dialog.interface';
import { EntityPropertiesDialogData, EntityPropertiesDialogReturnData } from '../../../interfaces/entity-properties-dialog.interface';
import { AttributeService } from '@services/attributes.service';
import { MultidirectoryApiService } from '@services/multidirectory-api.service';
import {
ConfirmDialogData,
ConfirmDialogReturnData,
} from '../../../interfaces/confirm-dialog.interface';
import { ConfirmDialogData, ConfirmDialogReturnData } from '../../../interfaces/confirm-dialog.interface';
import { ConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';
import { LdapAttributes } from '@core/ldap/ldap-attributes/ldap-attributes';
import { SearchQueries } from '@core/ldap/search';
import { LdapEntryType } from '@models/core/ldap/ldap-entry-type';
import { ContactPropertiesComponent } from '@features/ldap-properties/contact-properties/contact-properties.component';

@Component({
selector: 'app-entity-properties-dialog',
Expand All @@ -42,6 +30,7 @@ import { LdapEntryType } from '@models/core/ldap/ldap-entry-type';
MultidirectoryUiKitModule,
TranslocoPipe,
UserPropertiesComponent,
ContactPropertiesComponent,
],
templateUrl: './entity-properties-dialog.component.html',
styleUrl: './entity-properties-dialog.component.scss',
Expand All @@ -51,15 +40,15 @@ export class EntityPropertiesDialogComponent implements OnInit {
dialogData: EntityPropertiesDialogData = inject(DIALOG_DATA);

@ViewChild('userProps') userProps!: UserPropertiesComponent;
@ViewChild('contactProps') contactProps!: ContactPropertiesComponent;
@ViewChild(DialogComponent, { static: true }) dialogComponent!: DialogComponent;

EntityTypes = LdapEntryType;
entityType: LdapEntryType = this.dialogData.entity.type;
accessor: LdapAttributes = new LdapAttributes([]);

private dialogService: DialogService = inject(DialogService);
private dialogRef: DialogRef<EntityPropertiesDialogReturnData, EntityPropertiesDialogComponent> =
inject(DialogRef);
private dialogRef: DialogRef<EntityPropertiesDialogReturnData, EntityPropertiesDialogComponent> = inject(DialogRef);
private attributeService: AttributeService = inject(AttributeService);
private api: MultidirectoryApiService = inject(MultidirectoryApiService);
private cdr: ChangeDetectorRef = inject(ChangeDetectorRef);
Expand All @@ -71,10 +60,7 @@ export class EntityPropertiesDialogComponent implements OnInit {
.subscribe((props) => {
const attributes = props.search_result[0].partial_attributes;

this.accessor = this.attributeService.getTrackableAttributes(
this.dialogData.entity,
new LdapAttributes(attributes),
);
this.accessor = this.attributeService.getTrackableAttributes(this.dialogData.entity, new LdapAttributes(attributes));

this.cdr.detectChanges();
});
Expand All @@ -97,23 +83,21 @@ export class EntityPropertiesDialogComponent implements OnInit {

const confirmObservable$ = !needConfirmation
? of<ConfirmDialogReturnData>(true)
: this.dialogService.open<ConfirmDialogReturnData, ConfirmDialogData, ConfirmDialogComponent>(
{
component: ConfirmDialogComponent,
dialogConfig: {
minHeight: '160px',
data: {
promptHeader: translate('confirmation-dialog.prompt-header'),
promptText: translate('confirmation-dialog.prompt-text'),
primaryButtons: [{ id: true, text: translate('confirmation-dialog.yes') }],
secondaryButtons: [
{ id: false, text: translate('confirmation-dialog.no') },
{ id: 'cancel', text: translate('confirmation-dialog.cancel') },
],
},
: this.dialogService.open<ConfirmDialogReturnData, ConfirmDialogData, ConfirmDialogComponent>({
component: ConfirmDialogComponent,
dialogConfig: {
minHeight: '160px',
data: {
promptHeader: translate('confirmation-dialog.prompt-header'),
promptText: translate('confirmation-dialog.prompt-text'),
primaryButtons: [{ id: true, text: translate('confirmation-dialog.yes') }],
secondaryButtons: [
{ id: false, text: translate('confirmation-dialog.no') },
{ id: 'cancel', text: translate('confirmation-dialog.cancel') },
],
},
},
).closed;
}).closed;

confirmObservable$
.pipe(
Expand All @@ -130,17 +114,14 @@ export class EntityPropertiesDialogComponent implements OnInit {

return of('');
}),
finalize(() => {
this.dialogComponent.hideSpinner();
}),
)
.subscribe({
next: () => {
this.dialogComponent.hideSpinner();
this.close();
},
error: (err) => {
this.dialogComponent.hideSpinner();

throw err;
},
});
return false;
}
Expand Down
Loading
Loading