Skip to content

Commit

Permalink
feat: #5293 added permission for Employee Availability
Browse files Browse the repository at this point in the history
  • Loading branch information
rahul-rocket committed Jan 26, 2025
1 parent 043f77f commit fdab334
Show file tree
Hide file tree
Showing 15 changed files with 101 additions and 28 deletions.
15 changes: 12 additions & 3 deletions packages/contracts/src/lib/role-permission.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,11 +224,15 @@ export enum PermissionsEnum {
DASHBOARD_READ = 'DASHBOARD_READ',
DASHBOARD_UPDATE = 'DASHBOARD_UPDATE',
DASHBOARD_DELETE = 'DASHBOARD_DELETE',

/** Tenant API Key */
TENANT_API_KEY_CREATE = 'TENANT_API_KEY_CREATE',
TENANT_API_KEY_VIEW = 'TENANT_API_KEY_VIEW',
TENANT_API_KEY_DELETE = 'TENANT_API_KEY_DELETE'
TENANT_API_KEY_DELETE = 'TENANT_API_KEY_DELETE',
/** Employee Availability CRUD Permissions Start */
EMPLOYEE_AVAILABILITY_CREATE = 'EMPLOYEE_AVAILABILITY_CREATE',
EMPLOYEE_AVAILABILITY_READ = 'EMPLOYEE_AVAILABILITY_READ',
EMPLOYEE_AVAILABILITY_UPDATE = 'EMPLOYEE_AVAILABILITY_UPDATE',
EMPLOYEE_AVAILABILITY_DELETE = 'EMPLOYEE_AVAILABILITY_DELETE'
}

export const PermissionGroups = {
Expand Down Expand Up @@ -401,7 +405,12 @@ export const PermissionGroups = {
PermissionsEnum.ALLOW_MANUAL_TIME,
PermissionsEnum.DELETE_SCREENSHOTS,
PermissionsEnum.ACCESS_DELETE_ACCOUNT,
PermissionsEnum.ORG_MEMBER_LAST_LOG_VIEW
PermissionsEnum.ORG_MEMBER_LAST_LOG_VIEW,
/** Employee Availability CRUD Permissions Start */
PermissionsEnum.EMPLOYEE_AVAILABILITY_CREATE,
PermissionsEnum.EMPLOYEE_AVAILABILITY_READ,
PermissionsEnum.EMPLOYEE_AVAILABILITY_UPDATE,
PermissionsEnum.EMPLOYEE_AVAILABILITY_DELETE
],

//Readonly permissions, are only enabled for Super Admin/Admin role
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,20 @@ import { UpdateResult } from 'typeorm';
import { Body, Controller, Get, HttpCode, HttpStatus, Param, Post, Put, Query, UseGuards } from '@nestjs/common';
import { CommandBus } from '@nestjs/cqrs';
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { ID, IEmployeeAvailability, IPagination } from '@gauzy/contracts';
import { ID, IEmployeeAvailability, IPagination, PermissionsEnum } from '@gauzy/contracts';
import { CrudController, PaginationParams } from '../core/crud';
import { Permissions } from '../shared/decorators';
import { PermissionGuard, TenantPermissionGuard } from '../shared/guards';
import { UseValidationPipe, UUIDValidationPipe } from '../shared/pipes';
import { EmployeeAvailabilityService } from './employee-availability.service';
import { EmployeeAvailability } from './employee-availability.entity';
import { EmployeeAvailabilityBulkCreateCommand, EmployeeAvailabilityCreateCommand } from './commands';
import { EmployeeAvailabilityBulkCreateCommand, EMPLOYEE_AVAILABILITY_CREATECommand } from './commands';
import { CreateEmployeeAvailabilityDTO } from './dto/create-employee-availability.dto';
import { UpdateEmployeeAvailabilityDTO } from './dto/update-employee-availability.dto';

@ApiTags('EmployeeAvailability')
@UseGuards(TenantPermissionGuard, PermissionGuard)
@Permissions(PermissionsEnum.EMPLOYEE_AVAILABILITY_UPDATE, PermissionsEnum.EMPLOYEE_AVAILABILITY_DELETE)
@Controller('/employee-availability')
export class EmployeeAvailabilityController extends CrudController<EmployeeAvailability> {
constructor(
Expand All @@ -40,7 +41,7 @@ export class EmployeeAvailabilityController extends CrudController<EmployeeAvail
description: 'Invalid input. The response body may contain clues as to what went wrong.'
})
@HttpCode(HttpStatus.CREATED)
@Permissions()
@Permissions(PermissionsEnum.EMPLOYEE_AVAILABILITY_CREATE)
@Post('/bulk')
@UseValidationPipe()
async createBulk(@Body() entities: CreateEmployeeAvailabilityDTO[]): Promise<IEmployeeAvailability[]> {
Expand All @@ -62,8 +63,8 @@ export class EmployeeAvailabilityController extends CrudController<EmployeeAvail
status: HttpStatus.NOT_FOUND,
description: 'No availability records found.'
})
@Permissions()
@Get()
@Permissions(PermissionsEnum.EmployeeAvailabilityRead)
@Get('/')
@UseValidationPipe()
async findAll(
@Query() filter: PaginationParams<EmployeeAvailability>
Expand All @@ -87,11 +88,11 @@ export class EmployeeAvailabilityController extends CrudController<EmployeeAvail
description: 'Invalid input. The response body may contain clues as to what went wrong.'
})
@HttpCode(HttpStatus.CREATED)
@Permissions()
@Post()
@Permissions(PermissionsEnum.EMPLOYEE_AVAILABILITY_CREATE)
@Post('/')
@UseValidationPipe()
async create(@Body() entity: CreateEmployeeAvailabilityDTO): Promise<IEmployeeAvailability> {
return this.commandBus.execute(new EmployeeAvailabilityCreateCommand(entity));
return this.commandBus.execute(new EMPLOYEE_AVAILABILITY_CREATECommand(entity));
}

/**
Expand All @@ -111,8 +112,8 @@ export class EmployeeAvailabilityController extends CrudController<EmployeeAvail
description: 'Invalid input. The response body may contain clues as to what went wrong.'
})
@HttpCode(HttpStatus.ACCEPTED)
@Permissions()
@Put(':id')
@Permissions(PermissionsEnum.EMPLOYEE_AVAILABILITY_UPDATE)
@Put('/:id')
@UseValidationPipe()
async update(
@Param('id', UUIDValidationPipe) id: ID,
Expand Down
21 changes: 18 additions & 3 deletions packages/core/src/lib/role-permission/default-role-permissions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,12 @@ export const DEFAULT_ROLE_PERMISSIONS = [
/** Tenant API Key */
PermissionsEnum.TENANT_API_KEY_CREATE,
PermissionsEnum.TENANT_API_KEY_VIEW,
PermissionsEnum.TENANT_API_KEY_DELETE
PermissionsEnum.TENANT_API_KEY_DELETE,
/** Employee Availability */
PermissionsEnum.EMPLOYEE_AVAILABILITY_CREATE,
PermissionsEnum.EMPLOYEE_AVAILABILITY_READ,
PermissionsEnum.EMPLOYEE_AVAILABILITY_UPDATE,
PermissionsEnum.EMPLOYEE_AVAILABILITY_DELETE
]
},
{
Expand Down Expand Up @@ -399,7 +404,12 @@ export const DEFAULT_ROLE_PERMISSIONS = [
/** Tenant API Key */
PermissionsEnum.TENANT_API_KEY_CREATE,
PermissionsEnum.TENANT_API_KEY_VIEW,
PermissionsEnum.TENANT_API_KEY_DELETE
PermissionsEnum.TENANT_API_KEY_DELETE,
/** Employee Availability */
PermissionsEnum.EMPLOYEE_AVAILABILITY_CREATE,
PermissionsEnum.EMPLOYEE_AVAILABILITY_READ,
PermissionsEnum.EMPLOYEE_AVAILABILITY_UPDATE,
PermissionsEnum.EMPLOYEE_AVAILABILITY_DELETE
]
},
{
Expand Down Expand Up @@ -534,7 +544,12 @@ export const DEFAULT_ROLE_PERMISSIONS = [
PermissionsEnum.ALLOW_MODIFY_TIME,
PermissionsEnum.ALLOW_MANUAL_TIME,
PermissionsEnum.DELETE_SCREENSHOTS,
PermissionsEnum.ORG_MEMBER_LAST_LOG_VIEW
PermissionsEnum.ORG_MEMBER_LAST_LOG_VIEW,
/** Employee Availability */
PermissionsEnum.EMPLOYEE_AVAILABILITY_CREATE,
PermissionsEnum.EMPLOYEE_AVAILABILITY_READ,
PermissionsEnum.EMPLOYEE_AVAILABILITY_UPDATE,
PermissionsEnum.EMPLOYEE_AVAILABILITY_DELETE
]
},
{
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/bg.json
Original file line number Diff line number Diff line change
Expand Up @@ -2200,7 +2200,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Преглед на последния запис",
"TENANT_API_KEY_CREATE": "Create API Key",
"TENANT_API_KEY_VIEW": "View API Key",
"TENANT_API_KEY_DELETE": "Delete API Key"
"TENANT_API_KEY_DELETE": "Delete API Key",
"EMPLOYEE_AVAILABILITY_CREATE": "Създаване на наличност на служител",
"EMPLOYEE_AVAILABILITY_READ": "Преглед на наличността на служител",
"EMPLOYEE_AVAILABILITY_UPDATE": "Актуализиране на наличността на служител",
"EMPLOYEE_AVAILABILITY_DELETE": "Изтриване на наличността на служител"
},
"BILLING": "Billing",
"BUDGET": "Budget",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -2137,7 +2137,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Letztes Protokoll anzeigen",
"TENANT_API_KEY_CREATE": "API-Schlüssel erstellen",
"TENANT_API_KEY_VIEW": "API-Schlüssel anzeigen",
"TENANT_API_KEY_DELETE": "API-Schlüssel löschen"
"TENANT_API_KEY_DELETE": "API-Schlüssel löschen",
"EMPLOYEE_AVAILABILITY_CREATE": "Mitarbeiterverfügbarkeit erstellen",
"EMPLOYEE_AVAILABILITY_READ": "Mitarbeiterverfügbarkeit anzeigen",
"EMPLOYEE_AVAILABILITY_UPDATE": "Mitarbeiterverfügbarkeit aktualisieren",
"EMPLOYEE_AVAILABILITY_DELETE": "Mitarbeiterverfügbarkeit löschen"
},
"BILLING": "Rechnungsstellung",
"BUDGET": "Budget",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -2263,7 +2263,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "View Last Log",
"TENANT_API_KEY_CREATE": "Create API Key",
"TENANT_API_KEY_VIEW": "View API Key",
"TENANT_API_KEY_DELETE": "Delete API Key"
"TENANT_API_KEY_DELETE": "Delete API Key",
"EMPLOYEE_AVAILABILITY_CREATE": "Create Employee Availability",
"EMPLOYEE_AVAILABILITY_READ": "View Employee Availability",
"EMPLOYEE_AVAILABILITY_UPDATE": "Update Employee Availability",
"EMPLOYEE_AVAILABILITY_DELETE": "Delete Employee Availability"
},
"BILLING": "Billing",
"BUDGET": "Budget",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -2143,7 +2143,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Ver último registro",
"TENANT_API_KEY_CREATE": "Crear clave API",
"TENANT_API_KEY_VIEW": "Ver clave API",
"TENANT_API_KEY_DELETE": "Eliminar clave API"
"TENANT_API_KEY_DELETE": "Eliminar clave API",
"EMPLOYEE_AVAILABILITY_CREATE": "Crear disponibilidad del empleado",
"EMPLOYEE_AVAILABILITY_READ": "Ver disponibilidad del empleado",
"EMPLOYEE_AVAILABILITY_UPDATE": "Actualizar disponibilidad del empleado",
"EMPLOYEE_AVAILABILITY_DELETE": "Eliminar disponibilidad del empleado"
},
"BILLING": "Facturación",
"BUDGET": "Presupuesto",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -2142,7 +2142,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Voir le dernier journal",
"TENANT_API_KEY_CREATE": "Créer une clé API",
"TENANT_API_KEY_VIEW": "Afficher la clé API",
"TENANT_API_KEY_DELETE": "Supprimer la clé API"
"TENANT_API_KEY_DELETE": "Supprimer la clé API",
"EMPLOYEE_AVAILABILITY_CREATE": "Créer une disponibilité d'employé",
"EMPLOYEE_AVAILABILITY_READ": "Voir la disponibilité de l'employé",
"EMPLOYEE_AVAILABILITY_UPDATE": "Mettre à jour la disponibilité de l'employé",
"EMPLOYEE_AVAILABILITY_DELETE": "Supprimer la disponibilité de l'employé"
},
"BILLING": "Facturation",
"BUDGET": "Budget",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/he.json
Original file line number Diff line number Diff line change
Expand Up @@ -2166,7 +2166,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "צפה ביומן האחרון",
"TENANT_API_KEY_CREATE": "יצירת מפתח API",
"TENANT_API_KEY_VIEW": "הצגת מפתח API",
"TENANT_API_KEY_DELETE": "מחיקת מפתח API"
"TENANT_API_KEY_DELETE": "מחיקת מפתח API",
"EMPLOYEE_AVAILABILITY_CREATE": "יצירת זמינות לעובד",
"EMPLOYEE_AVAILABILITY_READ": "צפה בזמינות העובד",
"EMPLOYEE_AVAILABILITY_UPDATE": "עדכן זמינות לעובד",
"EMPLOYEE_AVAILABILITY_DELETE": "מחק זמינות לעובד"
},
"BILLING": "Billing",
"BUDGET": "Budget",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -2141,7 +2141,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Visualizza l'ultimo registro",
"TENANT_API_KEY_CREATE": "Crea chiave API",
"TENANT_API_KEY_VIEW": "Visualizza chiave API",
"TENANT_API_KEY_DELETE": "Elimina chiave API"
"TENANT_API_KEY_DELETE": "Elimina chiave API",
"EMPLOYEE_AVAILABILITY_CREATE": "Creare disponibilità del dipendente",
"EMPLOYEE_AVAILABILITY_READ": "Visualizza disponibilità del dipendente",
"EMPLOYEE_AVAILABILITY_UPDATE": "Aggiorna disponibilità del dipendente",
"EMPLOYEE_AVAILABILITY_DELETE": "Elimina disponibilità del dipendente"
},
"BILLING": "Fatturazione",
"BUDGET": "Bilancio",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -2141,7 +2141,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Bekijk laatste logboek",
"TENANT_API_KEY_CREATE": "API-sleutel maken",
"TENANT_API_KEY_VIEW": "API-sleutel bekijken",
"TENANT_API_KEY_DELETE": "API-sleutel verwijderen"
"TENANT_API_KEY_DELETE": "API-sleutel verwijderen",
"EMPLOYEE_AVAILABILITY_CREATE": "Werknemersbeschikbaarheid aanmaken",
"EMPLOYEE_AVAILABILITY_READ": "Bekijk werknemersbeschikbaarheid",
"EMPLOYEE_AVAILABILITY_UPDATE": "Werknemersbeschikbaarheid bijwerken",
"EMPLOYEE_AVAILABILITY_DELETE": "Werknemersbeschikbaarheid verwijderen"
},
"BILLING": "Facturatie",
"BUDGET": "Budget",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -2141,7 +2141,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Zobacz ostatni dziennik",
"TENANT_API_KEY_CREATE": "Utwórz klucz API",
"TENANT_API_KEY_VIEW": "Zobacz klucz API",
"TENANT_API_KEY_DELETE": "Usuń klucz API"
"TENANT_API_KEY_DELETE": "Usuń klucz API",
"EMPLOYEE_AVAILABILITY_CREATE": "Utwórz dostępność pracownika",
"EMPLOYEE_AVAILABILITY_READ": "Zobacz dostępność pracownika",
"EMPLOYEE_AVAILABILITY_UPDATE": "Zaktualizuj dostępność pracownika",
"EMPLOYEE_AVAILABILITY_DELETE": "Usuń dostępność pracownika"
},
"BILLING": "Rozliczenie / Faktury",
"BUDGET": "Budżet",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -2141,7 +2141,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Ver último registro",
"TENANT_API_KEY_CREATE": "Criar chave API",
"TENANT_API_KEY_VIEW": "Visualizar chave API",
"TENANT_API_KEY_DELETE": "Excluir chave API"
"TENANT_API_KEY_DELETE": "Excluir chave API",
"EMPLOYEE_AVAILABILITY_CREATE": "Criar disponibilidade do funcionário",
"EMPLOYEE_AVAILABILITY_READ": "Visualizar disponibilidade do funcionário",
"EMPLOYEE_AVAILABILITY_UPDATE": "Atualizar disponibilidade do funcionário",
"EMPLOYEE_AVAILABILITY_DELETE": "Excluir disponibilidade do funcionário"
},
"BILLING": "Faturamento",
"BUDGET": "Orçamento",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -2172,7 +2172,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "Посмотреть последний журнал",
"TENANT_API_KEY_CREATE": "Создать API-ключ",
"TENANT_API_KEY_VIEW": "Просмотр API-ключа",
"TENANT_API_KEY_DELETE": "Удалить API-ключ"
"TENANT_API_KEY_DELETE": "Удалить API-ключ",
"EMPLOYEE_AVAILABILITY_CREATE": "Создать доступность сотрудника",
"EMPLOYEE_AVAILABILITY_READ": "Просмотреть доступность сотрудника",
"EMPLOYEE_AVAILABILITY_UPDATE": "Обновить доступность сотрудника",
"EMPLOYEE_AVAILABILITY_DELETE": "Удалить доступность сотрудника"
},
"BILLING": "Биллинг",
"BUDGET": "Бюджет",
Expand Down
6 changes: 5 additions & 1 deletion packages/ui-core/i18n/assets/i18n/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -2141,7 +2141,11 @@
"ORG_MEMBER_LAST_LOG_VIEW": "查看最后日志",
"TENANT_API_KEY_CREATE": "创建 API 密钥",
"TENANT_API_KEY_VIEW": "查看 API 密钥",
"TENANT_API_KEY_DELETE": "删除 API 密钥"
"TENANT_API_KEY_DELETE": "删除 API 密钥",
"EMPLOYEE_AVAILABILITY_CREATE": "创建员工可用性",
"EMPLOYEE_AVAILABILITY_READ": "查看员工可用性",
"EMPLOYEE_AVAILABILITY_UPDATE": "更新员工可用性",
"EMPLOYEE_AVAILABILITY_DELETE": "删除员工可用性"
},
"BILLING": "计费",
"BUDGET": "预算",
Expand Down

0 comments on commit fdab334

Please sign in to comment.