RED-5265: use new permissions for home's new dossier button
This commit is contained in:
parent
798bd688c2
commit
5abc5f944d
@ -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: {
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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 {}
|
||||
|
||||
@ -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 {
|
||||
|
||||
104
apps/red-ui/src/app/users/roles.ts
Normal file
104
apps/red-ui/src/app/users/roles.ts
Normal 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
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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": ".",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user