diff --git a/modules/commons/commons_groups/commons_groups.module b/modules/commons/commons_groups/commons_groups.module
index 460d216..a4fece9 100644
--- a/modules/commons/commons_groups/commons_groups.module
+++ b/modules/commons/commons_groups/commons_groups.module
@@ -1014,13 +1014,18 @@ function commons_groups_field_formatter_view($entity_type, $entity, $field, $ins
     return;
   }
   if (og_is_member($entity_type, $id, 'user', $account)) {
-    // The user has an active membership. She can leave the group.
-    // For groups where anyone can contribute without joining, don't display
-    // a "Leave" link since users never went through
-    // the separate step of joining.
-    if (og_is_member($entity_type, $id, 'user', $account, array(OG_STATE_ACTIVE)) && $entity->field_og_subscribe_settings[LANGUAGE_NONE][0]['value'] != 'anyone') {
-      $links['title'] = t('Leave group');
-      $links['href'] = "group/$entity_type/$id/unsubscribe";
+    // The user has an active membership. 
+    if (og_user_access($entity_type, $id, 'unsubscribe', $account)) {
+      // The user has the permission to unsubscribe himself, 
+      // otherwise don't display a "Leave" link since the user can't leave
+      // anyways.
+      // For groups where anyone can contribute without joining, don't display
+      // a "Leave" link since users never went through
+      // the separate step of joining.
+      if (og_is_member($entity_type, $id, 'user', $account, array(OG_STATE_ACTIVE)) && $entity->field_og_subscribe_settings[LANGUAGE_NONE][0]['value'] != 'anyone') {
+        $links['title'] = t('Leave group');
+        $links['href'] = "group/$entity_type/$id/unsubscribe";
+      }
     }
   }
   else {
