Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Enhancement] Introduce SELECT_EMPLOYEE Permission & Allow Employee to Assign Managers/Members in Project Creation #8836

Open
wants to merge 12 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
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
2 changes: 2 additions & 0 deletions packages/contracts/src/lib/role-permission.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ export enum PermissionsEnum {
REQUEST_APPROVAL_EDIT = 'REQUEST_APPROVAL_EDIT',
APPROVAL_POLICY_VIEW = 'APPROVALS_POLICY_VIEW',
APPROVAL_POLICY_EDIT = 'APPROVALS_POLICY_EDIT',
SELECT_EMPLOYEE = 'SELECT_EMPLOYEE',
CHANGE_SELECTED_EMPLOYEE = 'CHANGE_SELECTED_EMPLOYEE',
CHANGE_SELECTED_CANDIDATE = 'CHANGE_SELECTED_CANDIDATE',
CHANGE_SELECTED_ORGANIZATION = 'CHANGE_SELECTED_ORGANIZATION',
Expand Down Expand Up @@ -244,6 +245,7 @@ export const PermissionGroups = {
PermissionsEnum.TIME_TRACKING_DASHBOARD,
PermissionsEnum.ACCOUNTING_DASHBOARD,
PermissionsEnum.HUMAN_RESOURCE_DASHBOARD,
PermissionsEnum.SELECT_EMPLOYEE,
PermissionsEnum.CHANGE_SELECTED_EMPLOYEE,
PermissionsEnum.CHANGE_SELECTED_CANDIDATE,
PermissionsEnum.CHANGE_SELECTED_ORGANIZATION,
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/lib/employee/employee.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export class EmployeeController extends CrudController<Employee> {
status: HttpStatus.NOT_FOUND,
description: 'No working employees found'
})
@Permissions(PermissionsEnum.CHANGE_SELECTED_EMPLOYEE)
@Permissions(PermissionsEnum.SELECT_EMPLOYEE)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@samuelmbabhazi So make sure we use both permisisons here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rahul-rocket
We could say that CHANGE_SELECTED_EMPLOYEE includes SELECT_EMPLOYEE, meaning it's not possible to have the first without also having the second. Since our permission guard does not support an "OR" condition, using only SELECT_EMPLOYEE ensures that both cases are handled correctly without requiring changes to the guard logic.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@samuelmbabhazi What if someone have CHANGE_SELECTED_EMPLOYEE but not SELECT_EMPLOYEE??

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rahul-rocket SELECT_EMPLOYEE is really a low level permission compared to CHANGE_SELECTED_EMPLOYEE if we can say so,
so I can't find a case where a user could have CHANGE_SELECTED_EMPLOYEE without having SELECT_EMPLOYEE

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@samuelmbabhazi I think you don't understand what i mean. We have to add both permissions in there.

@permissions(PermissionsEnum.CHANGE_SELECTED_EMPLOYEE, PermissionsEnum.SELECT_EMPLOYEE)

@Get('/working')
async findAllWorkingEmployees(@Query('data', ParseJsonPipe) data: any): Promise<IPagination<IEmployee>> {
const { findInput } = data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export const DEFAULT_ROLE_PERMISSIONS = [
PermissionsEnum.ORG_TASK_VIEW,
PermissionsEnum.ORG_TASK_EDIT,
PermissionsEnum.ORG_TASK_DELETE,
PermissionsEnum.SELECT_EMPLOYEE,
/** Organization Task Setting Permissions Start */
PermissionsEnum.ORG_TASK_SETTING,
/** Organization Task Setting Permissions End */
Expand Down Expand Up @@ -229,6 +230,7 @@ export const DEFAULT_ROLE_PERMISSIONS = [
PermissionsEnum.ORG_TASK_VIEW,
PermissionsEnum.ORG_TASK_EDIT,
PermissionsEnum.ORG_TASK_DELETE,
PermissionsEnum.SELECT_EMPLOYEE,
/** Organization Task Setting */
PermissionsEnum.ORG_TASK_SETTING,
/** Employee CRUD Permissions Start */
Expand Down Expand Up @@ -445,7 +447,8 @@ export const DEFAULT_ROLE_PERMISSIONS = [
PermissionsEnum.ORG_CANDIDATES_INTERVIEWERS_VIEW,
PermissionsEnum.ORG_INVENTORY_PRODUCT_EDIT,
PermissionsEnum.ORG_HELP_CENTER_EDIT,
PermissionsEnum.PROFILE_EDIT
PermissionsEnum.PROFILE_EDIT,
PermissionsEnum.SELECT_EMPLOYEE,
]
},
{
Expand All @@ -459,6 +462,7 @@ export const DEFAULT_ROLE_PERMISSIONS = [
PermissionsEnum.ORG_PROPOSALS_EDIT,
PermissionsEnum.ORG_PROPOSAL_TEMPLATES_VIEW,
PermissionsEnum.ORG_PROPOSAL_TEMPLATES_EDIT,
PermissionsEnum.SELECT_EMPLOYEE,
/** Time Off Permissions Start */
PermissionsEnum.TIME_OFF_VIEW,
/** Time Off Permissions End */
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/ach.json
Original file line number Diff line number Diff line change
Expand Up @@ -1869,6 +1869,7 @@
"ORG_CANDIDATES_FEEDBACK_EDIT": "crwdns4082:0crwdne4082:0",
"ALL_ORG_VIEW": "crwdns2675:0crwdne2675:0",
"ALL_ORG_EDIT": "crwdns2677:0crwdne2677:0",
"SELECT_EMPLOYEE": "Yer Employee",
"CHANGE_SELECTED_EMPLOYEE": "crwdns2739:0crwdne2739:0",
"CHANGE_SELECTED_CANDIDATE": "crwdns3384:0crwdne3384:0",
"CHANGE_SELECTED_ORGANIZATION": "crwdns2741:0crwdne2741:0",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -2036,6 +2036,7 @@
"TIME_OFF_POLICY_VIEW": "View Time Off Policy",
"TIME_OFF_POLICY_EDIT": "Edit Time Off Policy",
"TIME_OFF_POLICY_DELETE": "Delete Time Off Policy",
"SELECT_EMPLOYEE": "تحديد الموظف",
"CHANGE_SELECTED_EMPLOYEE": "تغيير الموظف المحدد",
"CHANGE_SELECTED_CANDIDATE": "تغيير المرشح المحدد",
"CHANGE_SELECTED_ORGANIZATION": "تغيير المنظمة المحددة",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/bg.json
Original file line number Diff line number Diff line change
Expand Up @@ -2106,6 +2106,7 @@
"TIME_OFF_POLICY_VIEW": "Преглед на Политика за Отпуск",
"TIME_OFF_POLICY_EDIT": "Редактиране на Политика за Отпуск",
"TIME_OFF_POLICY_DELETE": "Изтриване на Политика за Отпуск",
"SELECT_EMPLOYEE": "Избор на служител",
"CHANGE_SELECTED_EMPLOYEE": "Промени избрания служител",
"CHANGE_SELECTED_CANDIDATE": "Change Selected Candidate",
"CHANGE_SELECTED_ORGANIZATION": "Промени избраната организация",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -2038,6 +2038,7 @@
"TIME_OFF_POLICY_VIEW": "Urlaubsrichtlinie Anzeigen",
"TIME_OFF_POLICY_EDIT": "Urlaubsrichtlinie Bearbeiten",
"TIME_OFF_POLICY_DELETE": "Urlaubsrichtlinie Löschen",
"SELECT_EMPLOYEE": "Mitarbeiter auswählen",
"CHANGE_SELECTED_EMPLOYEE": "Ausgewählten Mitarbeiter ändern",
"CHANGE_SELECTED_CANDIDATE": "Ändern Sie ausgewählten Kandidaten",
"CHANGE_SELECTED_ORGANIZATION": "Ändere die ausgewählte Organisation.",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -2151,6 +2151,7 @@
"TIME_OFF_POLICY_VIEW": "View Time Off Policy",
"TIME_OFF_POLICY_EDIT": "Edit Time Off Policy",
"TIME_OFF_POLICY_DELETE": "Delete Time Off Policy",
"SELECT_EMPLOYEE": "Select Employee",
"CHANGE_SELECTED_EMPLOYEE": "Change Selected Employee",
"CHANGE_SELECTED_CANDIDATE": "Change Selected Candidate",
"CHANGE_SELECTED_ORGANIZATION": "Change Selected Organization",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -2044,6 +2044,7 @@
"TIME_OFF_POLICY_VIEW": "Ver Política de Vacaciones",
"TIME_OFF_POLICY_EDIT": "Editar Política de Vacaciones",
"TIME_OFF_POLICY_DELETE": "Eliminar Política de Vacaciones",
"SELECT_EMPLOYEE": "Seleccionar empleado",
"CHANGE_SELECTED_EMPLOYEE": "Cambiar Empleado Seleccionado",
"CHANGE_SELECTED_CANDIDATE": "Cambiar Candidato Seleccionado",
"CHANGE_SELECTED_ORGANIZATION": "Cambiar Organización Seleccionada",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -2039,6 +2039,7 @@
"TIME_OFF_POLICY_VIEW": "Voir la Politique de Congé",
"TIME_OFF_POLICY_EDIT": "Modifier la Politique de Congé",
"TIME_OFF_POLICY_DELETE": "Supprimer la Politique de Congé",
"SELECT_EMPLOYEE": "Sélectionner un employé",
"CHANGE_SELECTED_EMPLOYEE": "Changer l'employé sélectionné",
"CHANGE_SELECTED_CANDIDATE": "Changer le candidat sélectionné",
"CHANGE_SELECTED_ORGANIZATION": "Changer l'organisation sélectionnée",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/he.json
Original file line number Diff line number Diff line change
Expand Up @@ -2072,6 +2072,7 @@
"TIME_OFF_POLICY_VIEW": "צפה במדיניות חופשה",
"TIME_OFF_POLICY_EDIT": "ערוך מדיניות חופשה",
"TIME_OFF_POLICY_DELETE": "מחק מדיניות חופשה",
"SELECT_EMPLOYEE": "בחר עובד",
"CHANGE_SELECTED_EMPLOYEE": "Change Selected Employee",
"CHANGE_SELECTED_CANDIDATE": "Change Selected Candidate",
"CHANGE_SELECTED_ORGANIZATION": "Change Selected Organization",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -2042,6 +2042,7 @@
"TIME_OFF_POLICY_VIEW": "Visualizza Politica di Ferie",
"TIME_OFF_POLICY_EDIT": "Modifica Politica di Ferie",
"TIME_OFF_POLICY_DELETE": "Elimina Politica di Ferie",
"SELECT_EMPLOYEE": "Seleziona dipendente",
"CHANGE_SELECTED_EMPLOYEE": "Cambia Dipendente Selezionato",
"CHANGE_SELECTED_CANDIDATE": "Cambia candidato selezionato",
"CHANGE_SELECTED_ORGANIZATION": "Cambia Organizzazione Selezionata",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -2042,6 +2042,7 @@
"TIME_OFF_POLICY_VIEW": "Bekijk Verlofbeleid",
"TIME_OFF_POLICY_EDIT": "Bewerk Verlofbeleid",
"TIME_OFF_POLICY_DELETE": "Verwijder Verlofbeleid",
"SELECT_EMPLOYEE": "Selecteer werknemer",
"CHANGE_SELECTED_EMPLOYEE": "Wijzig geselecteerde werknemer",
"CHANGE_SELECTED_CANDIDATE": "Geselecteerde kandidaat wijzigen",
"CHANGE_SELECTED_ORGANIZATION": "Verander Geselecteerde Organisatie",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -2042,6 +2042,7 @@
"TIME_OFF_POLICY_VIEW": "Zobacz Politykę Urlopową",
"TIME_OFF_POLICY_EDIT": "Edytuj Politykę Urlopową",
"TIME_OFF_POLICY_DELETE": "Usuń Politykę Urlopową",
"SELECT_EMPLOYEE": "Wybierz pracownika",
"CHANGE_SELECTED_EMPLOYEE": "Zmień wybranego pracownika",
"CHANGE_SELECTED_CANDIDATE": "Zmień wybranego kandydata",
"CHANGE_SELECTED_ORGANIZATION": "Zmień wybraną organizację",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -2042,6 +2042,7 @@
"TIME_OFF_POLICY_VIEW": "Ver Política de Folga",
"TIME_OFF_POLICY_EDIT": "Editar Política de Folga",
"TIME_OFF_POLICY_DELETE": "Excluir Política de Folga",
"SELECT_EMPLOYEE": "Selecionar funcionário",
"CHANGE_SELECTED_EMPLOYEE": "Alterar Funcionário Selecionado",
"CHANGE_SELECTED_CANDIDATE": "Mudança de Candidato Selecionado",
"CHANGE_SELECTED_ORGANIZATION": "Alterar Organização Selecionada",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -2079,6 +2079,7 @@
"TIME_OFF_POLICY_VIEW": "Просмотреть политику отпуска",
"TIME_OFF_POLICY_EDIT": "Редактировать политику отпуска",
"TIME_OFF_POLICY_DELETE": "Удалить политику отпуска",
"SELECT_EMPLOYEE": "Выбрать сотрудника",
"CHANGE_SELECTED_EMPLOYEE": "Изменить выбранного сотрудника",
"CHANGE_SELECTED_CANDIDATE": "Изменить выбранный Кандидат",
"CHANGE_SELECTED_ORGANIZATION": "Изменить выбранную организацию",
Expand Down
1 change: 1 addition & 0 deletions packages/ui-core/i18n/assets/i18n/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -2042,6 +2042,7 @@
"TIME_OFF_POLICY_VIEW": "查看休假政策",
"TIME_OFF_POLICY_EDIT": "编辑休假政策",
"TIME_OFF_POLICY_DELETE": "删除休假政策",
"SELECT_EMPLOYEE": "选择员工",
"CHANGE_SELECTED_EMPLOYEE": "更改选定的员工",
"CHANGE_SELECTED_CANDIDATE": "改变选定的候选人",
"CHANGE_SELECTED_ORGANIZATION": "更改所选组织",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,10 @@ export class EmployeeSelectComponent implements OnInit, OnDestroy {
* Get working employees of the selected month
*/
private async getWorkingEmployees(): Promise<void> {
if (!this.store.hasAnyPermission(PermissionsEnum.CHANGE_SELECTED_EMPLOYEE)) {
if (
!this.store.hasAnyPermission(PermissionsEnum.CHANGE_SELECTED_EMPLOYEE) &&
!this.store.hasAnyPermission(PermissionsEnum.SELECT_EMPLOYEE)
) {
return;
}
const { tenantId } = this.store.user;
Expand Down
Loading