RED-5265: use new permissions for home's new dossier button

This commit is contained in:
Dan Percic 2022-10-17 14:35:43 +03:00
parent 798bd688c2
commit 5abc5f944d
9 changed files with 132 additions and 27 deletions

View File

@ -12,6 +12,7 @@ import {
CommonUiModule,
IqserHelpModeModule,
IqserLoadingModule,
IqserPermissionsModule,
IqserTranslateModule,
IqserUsersModule,
LanguageService,
@ -93,6 +94,7 @@ export const appModuleFactory = (config: AppConfig) => {
}),
IqserTranslateModule.forRoot(),
IqserLoadingModule.forRoot(),
IqserPermissionsModule.forRoot(),
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
LoggerModule.forRoot(undefined, {
ruleProvider: {

View File

@ -1,9 +1,9 @@
<a
*ngIf="stats as dossierTemplate"
[class.empty]="dossierTemplate.isEmpty"
[iqserHelpMode]="!dossierTemplate.isEmpty ? 'dossier_overview' : null"
[routerLink]="dossierTemplate.isEmpty ? null : ['..', dossierTemplate.dossierTemplateId]"
class="dialog"
[iqserHelpMode]="!dossierTemplate.isEmpty ? 'dossier_overview' : null"
>
<ng-container *ngIf="!dossierTemplate.isEmpty; else empty">
<div class="flex-2">
@ -69,13 +69,15 @@
</div>
</div>
<iqser-icon-button
(action)="newDossier()"
*ngIf="permissionsService.canCreateDossier(dossierTemplate)"
[label]="'dashboard.empty-template.new-dossier' | translate"
[type]="iconButtonTypes.primary"
[iqserHelpMode]="'new_dossier_button'"
icon="iqser:plus"
></iqser-icon-button>
<ng-container *allow="roles.dossiers.write">
<iqser-icon-button
(action)="newDossier()"
*ngIf="dossierTemplate.isEmpty"
[iqserHelpMode]="'new_dossier_button'"
[label]="'dashboard.empty-template.new-dossier' | translate"
[type]="iconButtonTypes.primary"
icon="iqser:plus"
></iqser-icon-button>
</ng-container>
</ng-template>
</a>

View File

@ -5,6 +5,7 @@ import { TranslateService } from '@ngx-translate/core';
import { TranslateChartService } from '@services/translate-chart.service';
import { PermissionsService } from '@services/permissions.service';
import { SharedDialogService } from '@shared/services/dialog.service';
import { ROLES } from '@users/roles';
@Component({
selector: 'redaction-template-stats [stats]',
@ -14,6 +15,7 @@ import { SharedDialogService } from '@shared/services/dialog.service';
})
export class TemplateStatsComponent {
readonly iconButtonTypes = IconButtonTypes;
readonly roles = ROLES;
@Input() stats: DashboardStats;

View File

@ -7,8 +7,7 @@ import { TemplateStatsComponent } from './components/template-stats/template-sta
import { BreadcrumbTypes } from '@red/domain';
import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
import { TranslateModule } from '@ngx-translate/core';
import { IqserButtonsModule } from '@iqser/common-ui';
import { IqserHelpModeModule } from '@iqser/common-ui';
import { IqserButtonsModule, IqserHelpModeModule, IqserPermissionsModule } from '@iqser/common-ui';
const routes = [
{
@ -30,6 +29,7 @@ const routes = [
TranslateModule,
IqserButtonsModule,
IqserHelpModeModule,
IqserPermissionsModule,
],
})
export class DashboardModule {}

View File

@ -1,15 +1,6 @@
import { Injectable } from '@angular/core';
import { UserService } from '@users/user.service';
import {
Dictionary,
Dossier,
DOSSIERS_ARCHIVE,
DossierTemplateStatus,
DossierTemplateStatuses,
File,
IComment,
IDossier,
} from '@red/domain';
import { DashboardStats, Dictionary, Dossier, DOSSIERS_ARCHIVE, DossierTemplate, File, IComment, IDossier } from '@red/domain';
import { FilesMapService } from '@services/files/files-map.service';
import { FeaturesService } from '@services/features.service';
@ -205,8 +196,8 @@ export class PermissionsService {
return this.isOwner(dossier) || (this.isManager() && this.isDossierMember(dossier));
}
canCreateDossier(dossierTemplate: { dossierTemplateStatus: DossierTemplateStatus }): boolean {
return dossierTemplate.dossierTemplateStatus === DossierTemplateStatuses.ACTIVE && this.isManager();
canCreateDossier(dossierTemplate: DossierTemplate | DashboardStats): boolean {
return dossierTemplate.isActive && this.isManager();
}
canArchiveDossier(dossier: Dossier): boolean {

View File

@ -0,0 +1,104 @@
export const ROLES = {
RED_ADD_COMMENT: 'red-add-comment',
RED_ADD_DICTIONARY_ENTRY: 'red-add-dictionary-entry',
RED_ADD_DOSSIER_DICTIONARY_ENTRY: 'red-add-dossier-dictionary-entry',
RED_ADD_REDACTION: 'red-add-redaction',
RED_ADD_UPDATE_DICTIONARY_TYPE: 'red-add-update-dictionary-type',
RED_ADD_UPDATE_DOSSIER_DICTIONARY_TYPE: 'red-add-update-dossier-dictionary-type',
RED_CONVERT_HIGHLIGHTS: 'red-convert-highlights',
RED_CREATE_TENANT: 'red-create-tenant',
RED_DELETE_COMMENT: 'red-delete-comment',
RED_DELETE_DICTIONARY_ENTRY: 'red-delete-dictionary-entry',
RED_DELETE_DICTIONARY_TYPE: 'red-delete-dictionary-type',
RED_DELETE_DOSSIER_DICTIONARY_ENTRY: 'red-delete-dossier-dictionary-entry',
RED_DELETE_DOSSIER_DICTIONARY_TYPE: 'red-delete-dossier-dictionary-type',
RED_DELETE_FILE: 'red-delete-file',
RED_DELETE_HIGHLIGHTS: 'red-delete-highlights',
RED_DELETE_IMPORTED_REDACTIONS: 'red-delete-imported-redactions',
RED_DELETE_MANUAL_REDACTION: 'red-delete-manual-redaction',
RED_DELETE_REPORT_TEMPLATE: 'red-delete-report-template',
RED_DEPLOYMENT_INFO: 'red-deployment-info',
RED_DOWNLOAD_ANNOTATED_FILE: 'red-download-annotated-file',
RED_DOWNLOAD_ORIGINAL_FILE: 'red-download-original-file',
RED_DOWNLOAD_REDACTED_FILE: 'red-download-redacted-file',
RED_DOWNLOAD_REDACTION_PREVIEW_FILE: 'red-download-redaction-preview-file',
RED_DOWNLOAD_REPORT_TEMPLATE: 'red-download-report-template',
RED_EXCLUDE_INCLUDE_FILE: 'red-exclude-include-file',
RED_EXCLUDE_INCLUDE_PAGES: 'red-exclude-include-pages',
RED_GET_HIGHLIGHTS: 'red-get-highlights',
RED_GET_REPORT_TEMPLATES: 'red-get-report-templates',
RED_GET_RSS: 'red-get-rss',
RED_GET_TENANTS: 'red-get-tenants',
RED_MANAGE_ACL_PERMISSIONS: 'red-manage-acl-permissions',
RED_MANAGE_USER_PREFERENCES: 'red-manage-user-preferences',
RED_MANAGE_VIEWED_PAGES: 'red-manage-viewed-pages',
RED_PROCESS_DOWNLOAD: 'red-process-download',
RED_PROCESS_MANUAL_REDACTION_REQUEST: 'red-process-manual-redaction-request',
RED_PROCESS_TEXTHIGHLIGHTS: 'red-process-texthighlights',
RED_READ_APP_CONFIGURATION: 'red-read-app-configuration',
RED_READ_COLORS: 'red-read-colors',
RED_READ_DICTIONARY_TYPES: 'red-read-dictionary-types',
RED_READ_DIGITAL_SIGNATURE: 'red-read-digital-signature',
RED_READ_DOSSIER_ATTRIBUTES: 'red-read-dossier-attributes',
RED_READ_DOSSIER_ATTRIBUTES_CONFIG: 'red-read-dossier-attributes-config',
RED_READ_DOSSIER_TEMPLATES: 'red-read-dossier-templates',
RED_READ_DOWNLOAD_STATUS: 'red-read-download-status',
RED_READ_FILE_ATTRIBUTES_CONFIG: 'red-read-file-attributes-config',
RED_READ_FILE_STATUS: 'red-read-file-status',
RED_READ_GENERAL_CONFIGURATION: 'red-read-general-configuration',
RED_READ_LEGAL_BASIS: 'red-read-legal-basis',
RED_READ_LICENSE: 'red-read-license',
RED_READ_LICENSE_REPORT: 'red-read-license-report',
RED_READ_MANUAL_REDACTIONS: 'red-read-manual-redactions',
RED_READ_NOTIFICATION: 'red-read-notification',
RED_READ_REDACTION_LOG: 'red-read-redaction-log',
RED_READ_RULES: 'red-read-rules',
RED_READ_SMTP_CONFIGURATION: 'red-read-smtp-configuration',
RED_READ_VERSIONS: 'red-read-versions',
RED_REANALYZE_FILE: 'red-reanalyze-file',
RED_REINDEX: 'red-reindex',
RED_REQUEST_REDACTION: 'red-request-redaction',
RED_ROTATE_PAGE: 'red-rotate-page',
RED_SEARCH: 'red-search',
RED_SEARCH_AUDIT_LOG: 'red-search-audit-log',
RED_SET_REVIEWER: 'red-set-reviewer',
RED_SET_STATUS_APPROVED: 'red-set-status-approved',
RED_SET_STATUS_UNDER_APPROVAL: 'red-set-status-under-approval',
RED_UPDATE_MY_PROFILE: 'red-update-my-profile',
RED_UPDATE_NOTIFICATION: 'red-update-notification',
RED_UPLOAD_FILE: 'red-upload-file',
RED_UPLOAD_REPORT_TEMPLATE: 'red-upload-report-template',
RED_WRITE_APP_CONFIGURATION: 'red-write-app-configuration',
RED_WRITE_COLORS: 'red-write-colors',
RED_WRITE_DIGITAL_SIGNATURE: 'red-write-digital-signature',
RED_WRITE_DOSSIER_ATTRIBUTES: 'red-write-dossier-attributes',
RED_WRITE_DOSSIER_ATTRIBUTES_CONFIG: 'red-write-dossier-attributes-config',
RED_WRITE_DOSSIER_TEMPLATES: 'red-write-dossier-templates',
RED_WRITE_FILE_ATTRIBUTES: 'red-write-file-attributes',
RED_WRITE_FILE_ATTRIBUTES_CONFIG: 'red-write-file-attributes-config',
RED_WRITE_GENERAL_CONFIGURATION: 'red-write-general-configuration',
RED_WRITE_LEGAL_BASIS: 'red-write-legal-basis',
RED_WRITE_RULES: 'red-write-rules',
RED_WRITE_SMTP_CONFIGURATION: 'red-write-smtp-configuration',
watermarks: {
write: 'red-write-watermark',
read: 'red-read-watermark',
},
users: {
write: 'red-write-users',
read: 'red-read-users',
readAll: 'red-read-all-users',
},
dossiers: {
read: 'red-read-dossier',
write: 'red-add-update-dossier',
edit: 'red-add-update-dossier',
delete: 'red-delete-dossier',
archived: 'red-archived-dossier',
reanalyze: 'red-reanalyze-dossier',
},
states: {
read: 'red-read-dossier-status',
write: 'red-write-dossier-status',
},
} as const;

@ -1 +1 @@
Subproject commit 7d4e0a851ad697b2ea9df04b943e382debfa2a93
Subproject commit 843415d9fd98c75fd16e75e401fefa58402a057d

View File

@ -1,7 +1,7 @@
import { IListable, List } from '@iqser/common-ui';
import { CountByStatus, CountPerProcessingStatus, CountPerWorkflowStatus, IDashboardStats } from './dashboard-stats';
import { DonutChartConfig, StatusSorter } from '../shared';
import { DossierTemplateStatus } from './constants';
import { DossierTemplateStatus, DossierTemplateStatuses } from './constants';
export class DashboardStats implements IListable, IDashboardStats {
readonly dossierCountByStatus: List<CountByStatus>;
@ -47,6 +47,10 @@ export class DashboardStats implements IListable, IDashboardStats {
return this.numberOfActiveDossiers === 0 && this.numberOfArchivedDossiers === 0;
}
get isActive(): boolean {
return this.dossierTemplateStatus === DossierTemplateStatuses.ACTIVE;
}
get id(): string {
return this.dossierTemplateId;
}

View File

@ -9,10 +9,10 @@
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es2020",
"target": "es2021",
"module": "es2020",
"typeRoots": ["node_modules/@types"],
"lib": ["es2020", "dom"],
"lib": ["es2021", "dom"],
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"baseUrl": ".",