# Deprecazione dell'uso di \`user.groups\` nel modello \`User\` in JavaScript

**URL:** https://meta.discourse.org/t/deprecating-the-user-of-user-groups-in-the-user-model-in-javascript/411124
**Category:** Development
**Tags:** dev-news
**Created:** [28 Agosto 2026, 4:03am UTC](https://meta.discourse.org/t/deprecating-the-user-of-user-groups-in-the-user-model-in-javascript/411124 "2026-08-28T04:03:59Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [28 Agosto 2026, 4:03am UTC](https://meta.discourse.org/t/deprecating-the-user-of-user-groups-in-the-user-model-in-javascript/411124/1 "2026-08-28T04:03:59Z")

</div>

Questo è correlato sia a [The road to stable, then permanent, for granular\_anonymous\_and\_logged\_in\_groups\_permissions](https://meta.discourse.org/t/the-road-to-stable-then-permanent-for-granular-anonymous-and-logged-in-groups-permissions/410178) che a [Granular group-based permissions for anonymous and logged in users](https://meta.discourse.org/t/granular-group-based-permissions-for-anonymous-and-logged-in-users/402273)

Nel core, nonché in molti temi e plugin, un pattern come questo è diventato piuttosto comune:

```javascript
const groupIds = this.currentUser.groups.map((g) => g.id);
const allowedGroupIds = this.siteSettings.some_group_setting.split("|").map((groupId) => parseInt(groupId, 10));

const hasPermission = allowedGroups.some((groupId) =>
  userGroupIds.includes(groupId)
);

if (!hasPermission) {
  return;
}

```

Tuttavia, questo non è un modo efficace per verificare i permessi dell’utente. **Un utente può essere membro di gruppi che non sono visibili a lui** , quindi non vengono serializzati sul client e non possono essere utilizzati in modo coerente o accurato per i controlli di sicurezza.

Per rendere questo aspetto più evidente, rinomineremo `currentUser.groups/user.groups` in `currentUser.visibleGroups/user.visibleGroups` nel modello `User` e deprecheremo la vecchia proprietà. La PR iniziale per farlo è [DEV: Deprecate calling user.groups on client directly - Pull Request #42711 - discourse/discourse - GitHub](https://github.com/discourse/discourse/pull/42711) .

Esistono diverse alternative se è necessario verificare il permesso di un utente in base a un elenco di ID di gruppo sul client in JavaScript:

### Per i plugin

Estendi il serializzatore `current_user` con un nuovo attributo e verifica i permessi dell’utente con `scope.in_any_groups?` lato server, che copre anche i gruppi pseudo come `logged_in_users` e `anonymous_users`:

```ruby
add_to_serializer(
  :current_user,
  :has_some_permission,
  include_condition: -> do
    SiteSetting.plugin_enabled
  end,
) { scope.in_any_groups?(SiteSetting.group_list_setting_map) }

```

Quindi puoi eseguire `this.currentUser.has_some_permission` sul client.

### Per temi e componenti

Per le impostazioni del tema di tipo `list` con `list_type: group`, puoi usare `resolve_group_membership: true`:

```yaml
copy_button_allowed_groups:
  default: "1|3"
  type: list
  list_type: group
  resolve_group_membership: true

```

Questo sostituirà `settings.copy_button_allowed_groups` sul client con `settings.user_in_copy_button_allowed_groups` (prefissando l’impostazione con `user_in_`), che è un valore booleano calcolato lato server in base alle appartenenze di gruppo dell’utente.

Questo funziona anche per le impostazioni di oggetto con `type: groups` . Aggiungi `resolve_group_membership: true` alla proprietà `groups`:

```yaml
menu_sections:
  type: objects
  default:
    - name: section 1
      groups:
        - 1
        - 3
  schema:
    name: menu section
    properties:
      name:
        type: string
      groups:
        type: groups
        resolve_group_membership: true

```

Quindi l’accesso sarà così:

```gjs
for (const section of settings.menu_sections) {
  if (section.user_in_groups) {
    // L'utente appartiene ad almeno un gruppo selezionato per questa sezione.
  }
}

```

---

_[View the full topic](https://meta.discourse.org/t/deprecating-the-user-of-user-groups-in-the-user-model-in-javascript/411124)._
