diff --git a/Resources/roles.yml b/Resources/roles.yml index 95fe3baba8..ed097e0433 100644 --- a/Resources/roles.yml +++ b/Resources/roles.yml @@ -92,6 +92,16 @@ manager: - admin-module-stats # Can access to stats level: 50 +channelconsultant: + extends: checker # inherits permissions from role "user" + perms: + - edit-projects # Edit projects assigned as a consultant + - edit-published-projects # Edit any published project + - assign-checker # Assignate any other user for review projects + - admin-module-channel-resource # Can access to channel resource admin module + - full-html-edit # Affects if the user is allowed dangerous tags (iframe,...) in posts + level: 60 + consultant: extends: checker # inherits permissions from role "user" perms: diff --git a/src/Goteo/Library/Forms/Model/ProjectCampaignForm.php b/src/Goteo/Library/Forms/Model/ProjectCampaignForm.php index 94c3515c2c..2d0dfdd7c4 100644 --- a/src/Goteo/Library/Forms/Model/ProjectCampaignForm.php +++ b/src/Goteo/Library/Forms/Model/ProjectCampaignForm.php @@ -44,7 +44,10 @@ public function createForm(): ProjectCampaignForm $builder = $this->getBuilder(); $admin = Session::isAdmin(); - if ($admin) { + $user = Session::getUser(); + $canUserEdit = $user->hasPerm('edit-projects', $project->id); + + if ($admin || $canUserEdit) { $builder ->add('type', ChoiceType::class, [ 'label' => 'project-campaign-type-label', @@ -72,7 +75,7 @@ public function createForm(): ProjectCampaignForm ]); } - if ($admin || $project->type != Conf::TYPE_PERMANENT ) { + if ($admin || $canUserEdit || $project->type != Conf::TYPE_PERMANENT ) { $builder ->add('one_round', ChoiceType::class, [ 'disabled' => $this->getReadonly(), diff --git a/translations/ca/roles.yml b/translations/ca/roles.yml index b099ea618c..8e2183a5ab 100644 --- a/translations/ca/roles.yml +++ b/translations/ca/roles.yml @@ -8,6 +8,7 @@ role-name-stats: 'Accés a stats' role-name-manager: 'Gestor de contractes' role-name-helper: 'Ajudant' role-name-consultant: 'Assessor de projectes' +role-name-channelconsultat: 'Assessor de canals' role-name-admin: 'Administrador d''assessors' role-name-superadmin: 'Super-Administrador' role-perm-name-create-project: 'Pot crear projectes' diff --git a/translations/en/roles.yml b/translations/en/roles.yml index 1d20cecd9f..663f12a88b 100644 --- a/translations/en/roles.yml +++ b/translations/en/roles.yml @@ -9,6 +9,7 @@ role-name-manager: 'Contract manager' role-name-blogger: 'Blog editor' role-name-caller: 'Call owner' role-name-consultant: 'Project''s consultant' +role-name-channelconsultant: 'Channel''s consultant' role-name-admin: 'Consultant''s administrator' role-name-superadmin: 'Super-Administrator' role-name-owner: 'Project owner' @@ -61,4 +62,4 @@ role-perm-name-create-matcher: 'Create own matcher' role-perm-name-edit-matcher: 'Edit own matcher' role-perm-name-remove-matcher: 'Remove own matcher' role-perm-name-edit-any-matcher: 'Edit any matcher' -role-perm-name-remove-any-matcher: 'Remove any matcher' \ No newline at end of file +role-perm-name-remove-any-matcher: 'Remove any matcher' diff --git a/translations/es/roles.yml b/translations/es/roles.yml index b409e3b988..a791a7a00d 100644 --- a/translations/es/roles.yml +++ b/translations/es/roles.yml @@ -9,6 +9,7 @@ role-name-manager: 'Gestor de contratos' role-name-blogger: 'Editor del blog' role-name-caller: 'Convocador' role-name-consultant: 'Asesor de proyectos' +role-name-channelconsultat: 'Asesor de canales' role-name-admin: 'Administrador de asesores' role-name-superadmin: 'Super Administrador' role-name-owner: 'Impulsor'