|
@@ -0,0 +1,93 @@
|
|
|
|
+diff --git a/flag_lists.module b/flag_lists.module
|
|
|
|
+index cd81104..3decec0 100644
|
|
|
|
+--- a/flag_lists.module
|
|
|
|
++++ b/flag_lists.module
|
|
|
|
+@@ -237,47 +237,49 @@ function flag_lists_flag_action_access($action, FlagInterface $flag, AccountInte
|
|
|
|
+ // Allow both users flag and the corresponding template.
|
|
|
|
+ // Currently only the users flag lists are accepted.
|
|
|
|
+ // This needs to corrected to allow also global lists.
|
|
|
|
+- $flagListsService = Drupal::service('flaglists');
|
|
|
|
+- $flagLists = $flagListsService->getAllFlaggingCollections();
|
|
|
|
+- foreach ($flagLists as $flagList) {
|
|
|
|
+- if ($flag->id() == $flagList->getRelatedFlag()->id()) {
|
|
|
|
+- if ($flagList->getBaseFlag()->isGlobal()) {
|
|
|
|
+- // The flag list is global.
|
|
|
|
+- return AccessResult::allowedIfHasPermission($account,
|
|
|
|
+- 'access global flag lists');
|
|
|
|
+- }
|
|
|
|
+- elseif ($flagList->getOwnerId() == $account->id()) {
|
|
|
|
+- // The flag list is owned by current user.
|
|
|
|
+- return AccessResult::allowedIfHasPermission($account,
|
|
|
|
+- 'view own flag lists');
|
|
|
|
+- }
|
|
|
|
+- else {
|
|
|
|
+- // The user is allowed to see all flag lists.
|
|
|
|
+- return AccessResult::allowedIfHasPermission($account,
|
|
|
|
+- 'view flag lists');
|
|
|
|
++ if ($flag){
|
|
|
|
++ $flagListsService = Drupal::service('flaglists');
|
|
|
|
++ $flagLists = $flagListsService->getAllFlaggingCollections();
|
|
|
|
++ foreach ($flagLists as $flagList) {
|
|
|
|
++ if ($flag->id() == $flagList->getRelatedFlag()->id()) {
|
|
|
|
++ if ($flagList->getBaseFlag()->isGlobal()) {
|
|
|
|
++ // The flag list is global.
|
|
|
|
++ return AccessResult::allowedIfHasPermission($account,
|
|
|
|
++ 'access global flag lists');
|
|
|
|
++ }
|
|
|
|
++ elseif ($flagList->getOwnerId() == $account->id()) {
|
|
|
|
++ // The flag list is owned by current user.
|
|
|
|
++ return AccessResult::allowedIfHasPermission($account,
|
|
|
|
++ 'view own flag lists');
|
|
|
|
++ }
|
|
|
|
++ else {
|
|
|
|
++ // The user is allowed to see all flag lists.
|
|
|
|
++ return AccessResult::allowedIfHasPermission($account,
|
|
|
|
++ 'view flag lists');
|
|
|
|
++ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+- }
|
|
|
|
+-
|
|
|
|
+- // Check for access for the used template as well.
|
|
|
|
+- $flagTemplates = $flagListsService->getAllFlagForList();
|
|
|
|
+- foreach ($flagTemplates as $flagTemplate) {
|
|
|
|
+- if ($flag->id() == $flagTemplate->id()) {
|
|
|
|
+- // This is one of the template flags.
|
|
|
|
+- // But is it global?
|
|
|
|
+- $baseFlag = Drupal::service('flag')->getFlagById($flagTemplate->getBaseFlag());
|
|
|
|
+- if ($baseFlag->isGlobal()) {
|
|
|
|
+- return AccessResult::allowedIfHasPermission($account,
|
|
|
|
+- 'access global flag lists');
|
|
|
|
+- }
|
|
|
|
+- else {
|
|
|
|
+- return AccessResult::allowedIfHasPermissions($account, [
|
|
|
|
+- 'administer flag lists',
|
|
|
|
+- 'view own flag lists',
|
|
|
|
+- 'view flag lists',
|
|
|
|
+- ],
|
|
|
|
+- 'OR'
|
|
|
|
+- );
|
|
|
|
++
|
|
|
|
++ // Check for access for the used template as well.
|
|
|
|
++ $flagTemplates = $flagListsService->getAllFlagForList();
|
|
|
|
++ foreach ($flagTemplates as $flagTemplate) {
|
|
|
|
++ if ($flag->id() == $flagTemplate->id()) {
|
|
|
|
++ // This is one of the template flags.
|
|
|
|
++ // But is it global?
|
|
|
|
++ $baseFlag = Drupal::service('flag')->getFlagById($flagTemplate->getBaseFlag());
|
|
|
|
++ if ($baseFlag->isGlobal()) {
|
|
|
|
++ return AccessResult::allowedIfHasPermission($account,
|
|
|
|
++ 'access global flag lists');
|
|
|
|
++ }
|
|
|
|
++ else {
|
|
|
|
++ return AccessResult::allowedIfHasPermissions($account, [
|
|
|
|
++ 'administer flag lists',
|
|
|
|
++ 'view own flag lists',
|
|
|
|
++ 'view flag lists',
|
|
|
|
++ ],
|
|
|
|
++ 'OR'
|
|
|
|
++ );
|
|
|
|
++ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|