Browse Source

Refactoring

pull/2870/head
Thomas Kaul 2 years ago
parent
commit
25d54ef682
  1. 3
      apps/api/src/app/access/access.controller.ts
  2. 11
      apps/api/src/app/access/create-access.dto.ts
  3. 15
      apps/client/src/app/components/access-table/access-table.component.ts
  4. 13
      apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
  5. 18
      apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
  6. 1
      apps/client/src/app/components/user-account-access/user-account-access.component.ts
  7. 4
      libs/common/src/lib/interfaces/access.interface.ts

3
apps/api/src/app/access/access.controller.ts

@ -48,6 +48,7 @@ export class AccessController {
alias: access.alias,
grantee: access.GranteeUser?.id,
id: access.id,
permissions: access.permissions,
type: 'RESTRICTED_VIEW'
};
}
@ -56,6 +57,7 @@ export class AccessController {
alias: access.alias,
grantee: 'Public',
id: access.id,
permissions: access.permissions,
type: 'PUBLIC'
};
});
@ -83,6 +85,7 @@ export class AccessController {
GranteeUser: data.granteeUserId
? { connect: { id: data.granteeUserId } }
: undefined,
permissions: data.permissions,
User: { connect: { id: this.request.user.id } }
});
} catch {

11
apps/api/src/app/access/create-access.dto.ts

@ -1,4 +1,5 @@
import { IsOptional, IsString, IsUUID } from 'class-validator';
import { AccessPermission } from '@prisma/client';
import { IsEnum, IsOptional, IsString, IsUUID } from 'class-validator';
export class CreateAccessDto {
@IsOptional()
@ -9,11 +10,7 @@ export class CreateAccessDto {
@IsUUID()
granteeUserId?: string;
@IsEnum(AccessPermission, { each: true })
@IsOptional()
@IsString()
type?: 'PUBLIC';
@IsOptional()
@IsString()
permission?: string;
permissions?: AccessPermission[];
}

15
apps/client/src/app/components/access-table/access-table.component.ts

@ -49,15 +49,12 @@ export class AccessTableComponent implements OnChanges, OnInit {
return $localize`Public`;
}
if (access.type === 'PRIVATE') {
switch (access.permission) {
case 'READ':
return $localize`View`;
case 'READ_RESTRICTED':
return $localize`Restricted View`;
default:
return $localize`Unknown`;
}
if (access.permissions.includes('READ')) {
return $localize`View`;
} else if (access.permissions.includes('READ_RESTRICTED')) {
return $localize`Restricted View`;
} else {
return $localize`Unknown`;
}
}

13
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts

@ -37,24 +37,24 @@ export class CreateOrUpdateAccessDialog implements OnDestroy {
ngOnInit() {
this.accessForm = this.formBuilder.group({
alias: [this.data.access.alias],
permissions: [this.data.access.permissions[0], Validators.required],
type: [this.data.access.type, Validators.required],
userId: [this.data.access.grantee, Validators.required],
permission: [this.data.access.permission, Validators.required]
userId: [this.data.access.grantee, Validators.required]
});
this.accessForm.get('type').valueChanges.subscribe((value) => {
const permissionsControl = this.accessForm.get('permissions');
const userIdControl = this.accessForm.get('userId');
const permissionControl = this.accessForm.get('permission');
if (value === 'PRIVATE') {
permissionsControl.setValidators(Validators.required);
userIdControl.setValidators(Validators.required);
permissionControl.setValidators(Validators.required);
} else {
userIdControl.clearValidators();
}
permissionsControl.updateValueAndValidity();
userIdControl.updateValueAndValidity();
permissionControl.updateValueAndValidity();
this.changeDetectorRef.markForCheck();
});
@ -68,8 +68,7 @@ export class CreateOrUpdateAccessDialog implements OnDestroy {
const access: CreateAccessDto = {
alias: this.accessForm.controls['alias'].value,
granteeUserId: this.accessForm.controls['userId'].value,
type: this.accessForm.controls['type'].value,
permission: this.accessForm.controls['permission'].value
permissions: [this.accessForm.controls['permissions'].value]
};
this.dataService

18
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html

@ -28,6 +28,15 @@
</div>
@if (accessForm.controls['type'].value === 'PRIVATE') {
<div>
<mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Permission</mat-label>
<mat-select formControlName="permissions">
<mat-option i18n value="READ_RESTRICTED">Restricted view</mat-option>
<mat-option i18n value="READ">View</mat-option>
</mat-select>
</mat-form-field>
</div>
<div>
<mat-form-field appearance="outline" class="w-100">
<mat-label>
@ -41,15 +50,6 @@
/>
</mat-form-field>
</div>
<div>
<mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Permission</mat-label>
<mat-select formControlName="permission">
<mat-option i18n value="READ_RESTRICTED">Restricted view</mat-option>
<mat-option i18n value="READ">View</mat-option>
</mat-select>
</mat-form-field>
</div>
}
</div>
<div class="justify-content-end" mat-dialog-actions>

1
apps/client/src/app/components/user-account-access/user-account-access.component.ts

@ -105,6 +105,7 @@ export class UserAccountAccessComponent implements OnDestroy, OnInit {
data: {
access: {
alias: '',
permissions: ['READ_RESTRICTED'],
type: 'PRIVATE'
}
},

4
libs/common/src/lib/interfaces/access.interface.ts

@ -1,7 +1,9 @@
import { AccessPermission } from '@prisma/client';
export interface Access {
alias?: string;
grantee?: string;
id: string;
type: 'PRIVATE' | 'PUBLIC' | 'RESTRICTED_VIEW';
permission: 'READ' | 'READ_RESTRICTED';
permissions: AccessPermission[];
}

Loading…
Cancel
Save