Group Package

Cmash Brand (Groups) — Feature Overview

Keep every brand, team or client in its own space. Groups scope content and users, so people see only what is theirs.

Package name: enobis/cmash-group. In the admin panel this is the Groups menu (Configuration → Groups).


What Is CMAsh Brand?

A group represents a brand, business unit, client or team. Content is assigned to a group, and users can be restricted to one or more groups, so multi-brand and multi-tenant setups stay tidy and safe. Restricted users see only their groups' content plus anything left ungrouped (shared).


Key Features

Manage Groups

  • Identity — name, URL identifier (slug), description and logo; the logo appears in the list and in the group switcher.
  • Languages per group — choose which languages a group supports (from the platform's available languages). Leave empty for "all languages". Optionally set a default language, which must be one of the selected ones.
  • Active switch — deactivate a group without deleting it; inactive groups disappear from the switcher.
  • Change history — for name, slug, description, logo, active state and languages.
  • Creator and origin tracking — shows who created a group and whether from the admin panel ("Internal") or the API ("External").
  • Scoped group list — restricted users only see their own groups.

Group Switcher

  • Focus on one group — a selector in the admin header (next to global search) lists the active groups the user may access, remembers the choice for the session and refreshes the current page.
  • Opt-in — it only appears when enabled in the platform's General Settings (show_group_selector).
  • Safe — users can never select a group they have no access to.

Access Control

  • Restricted users — always limited to their assigned groups (many-to-many user ↔ group), regardless of the switcher.
  • Unrestricted users — see everything, or one group if they pick it in the switcher.
  • Ungrouped items — items without a group are visible to everyone.
  • Same rules in the API — user restrictions are enforced; the switcher is a UI convenience only.
  • Broad coverage — group assignment is available on datasources, documents, forms, projects, templates, assets, workspaces and brandkits.

Integrations & API

Token-secured (Laravel Sanctum):

Method Endpoint Description
GET /api/groups List groups (filters: active, search; paginated, default 15).
POST /api/groups Create a group.
GET /api/groups/{group} Retrieve a group.
PUT /api/groups/{group} Update a group.
DELETE /api/groups/{group} Delete a group.

Used by Brandkit (enobis/cmash-brandkit) and by content modules that offer group assignment.


Permissions & Dependencies

  • Requires CMAsh core (enobis/cmash ≥ 1.1.1), Filament 5, Laravel Sanctum, PHP 8.3+.
  • Relies on the core user model to determine which groups a user may access.
  • Access is governed by the platform's standard resource permissions; the package defines no roles of its own.

Configuration

No config file and no environment variables. Related settings live elsewhere:

Setting Where Meaning
show_group_selector Core General Settings (enobis/cmash) Shows or hides the group switcher in the header
available_locales Core General Settings Languages offered in a group's Languages fields
Config keys / env vars none in this package –
Navigation Configuration → Groups (sort 10) –
Database tables cmash_groups, group_user; adds group_id to content tables –

Use Cases

  • Multi-brand organisations — separate content for each brand under one installation.
  • Agencies — keep each client's templates, assets and projects apart.
  • Departments and regional teams — restrict users to their own business unit, with shared ungrouped content for everyone.
  • Per-brand language sets — offer only the languages a brand actually uses.

Cmash Group: the right content in front of the right people.