Configura los equipos
Las claves de configuración y las variables de entorno que agrega la capa de equipos, con lo que cambia cada una.
La capa de equipos se configura con un puñado de claves encima de las de la base. Todo lo de abajo tiene un valor predeterminado que funciona: cambia una clave sólo cuando tu producto necesite el otro comportamiento. Las claves propias de la base están documentadas en su sitio, en El archivo de entorno y Configura tu proyecto.
Variables de entorno
| Variable | Predeterminado | Qué hace |
|---|---|---|
APP_ENABLE_MULTI_TEAMS |
true |
Si una persona puede crear y pertenecer a varios equipos. Con false el selector se omite y la persona va a su único equipo. |
TEAM_INVITATION_MODE |
approval_required |
Qué pasa cuando se agrega un miembro que no tiene cuenta: approval_required lo invita a registrarse, auto_provision crea la cuenta. Ve Miembros e invitaciones. |
TEAM_DATA_IMPORT_TIMEOUT |
21600 |
Cuántos segundos puede dedicar el servidor a comprobar o importar un paquete de datos del equipo antes de rendirse. Mantén el retry_after de tu cola por encima. Ve Mueve los datos de un equipo entre entornos. |
TEAM_DATA_EXPORT_DISK |
local |
Dónde se arman y luego esperan a descargarse los paquetes exportados del equipo. El predeterminado funciona cuando el servidor web y todos los workers de la cola comparten disco; si no, nombra un disco en un bucket privado, nunca uno que cualquiera pueda leer sin un enlace firmado. Ve Mueve los datos de un equipo entre entornos. |
BILLING_TEAM_ENABLED |
true |
Registra el adaptador de cobros por equipo, para que los planes y los complementos se asocien al equipo. |
BILLING_USER_ENABLED |
false |
Registra el adaptador de cobros por usuario de la base junto al del equipo, para un producto que le vende a personas y a equipos. Ve Planes y cobros del equipo. |
Los FEATURE_PLANS_ENABLED y FEATURE_ADDONS_ENABLED de la base siguen decidiendo si los planes y los complementos existen siquiera.
config/app.php
'home_route' => '/app',
'enable_multi_teams' => env('APP_ENABLE_MULTI_TEAMS', true),
'permissions' => [
'dashboard admin' => 'web',
'dashboard user' => 'web',
// * Media permissions
'retrieve media' => 'web',
'create media' => 'web',
'update media' => 'web',
'delete media' => 'web',
'retrieve media_folder' => 'web',
'create media_folder' => 'web',
'update media_folder' => 'web',
'delete media_folder' => 'web',
'browse media_folder' => 'web',
// * Team permissions
'retrieve members' => 'team',
'create members' => 'team',
'update members' => 'team',
'delete members' => 'team',
'edit settings' => 'team',
'manage plans' => 'team',
'manage media' => 'team',
// * Ticket permissions
'answer ticket' => 'web',
'view_team ticket' => 'team',
'use assistant' => 'web',
],
'team_restricted_permissions' => [ // Team permissions the owner must NOT receive on signup
],
'team_owner_role' => 'administrator',
'team_default_role' => 'user',
'team_roles' => [
'user' => [
'retrieve members',
],
],
| Clave | Qué hace |
|---|---|
home_route |
A dónde llega una persona con sesión iniciada: la lista de equipos, que abre de inmediato el equipo recordado. La base lo apunta a su propio tablero. |
enable_multi_teams |
Se lee de APP_ENABLE_MULTI_TEAMS, arriba. |
permissions |
Cada permiso, con su guard. Los ocho del guard team son los que revisan las pantallas de equipo incluidas; los de web pertenecen al panel de administración y a la cuenta. Agrega los tuyos aquí con 'team' como guard y siembra; el seeder crea el permiso pero no se lo da a ningún rol, así que los equipos que ya existen necesitan una migración, como explica Roles y permisos del equipo. |
team_restricted_permissions |
Permisos de equipo que el rol de propietario de un equipo nuevo no recibe. Vacío como viene, así que el rol de propietario recibe todos los permisos de equipo. |
team_owner_role |
El nombre del rol que se crea en cada equipo con todos los permisos de equipo salvo los restringidos, asignado a quien lo creó. |
team_default_role |
El rol que recibe cada miembro agregado después. Debe ser una de las claves de team_roles. |
team_roles |
Los roles que se crean dentro de cada equipo nuevo, cada uno con los permisos con los que empieza. |
Ve Roles y permisos del equipo para saber cómo juegan juntas las claves de roles.
config/teams.php
'invitation_mode' => env('TEAM_INVITATION_MODE', 'approval_required'),
'data_import' => [
'timeout' => (int) env('TEAM_DATA_IMPORT_TIMEOUT', 21600),
'watch_seconds' => 15,
'max_parts' => 10000,
],
'data_export' => [
'budget_seconds' => 3,
'chunk_rows' => 500,
'tries' => 3,
'stalled_after' => 3600,
'keep_days' => 7,
'disk' => env('TEAM_DATA_EXPORT_DISK', 'local'),
],
| Clave | Qué hace |
|---|---|
invitation_mode |
Se lee de TEAM_INVITATION_MODE, arriba. |
data_import.timeout |
Se lee de TEAM_DATA_IMPORT_TIMEOUT, arriba. |
data_import.watch_seconds |
Cuando una importación termina y su ventana pidió novedades dentro de estos segundos, el resultado se muestra ahí; si no, quien la inició recibe una notificación dentro del producto. |
data_import.max_parts |
El máximo de partes que S3 une en un solo archivo. Multiplicado por el tamaño de parte de la subida, es el paquete más grande que acepta un bucket. |
data_export.budget_seconds |
Cuántos segundos de trabajo hace cada paso de una exportación antes de dejar el resto al siguiente. Una exportación se arma en muchos pasos cortos, así que tu cola no necesita ningún ajuste especial para ella. |
data_export.chunk_rows |
Cuántos registros lee como máximo cada paso de una exportación. |
data_export.tries |
Cuántas veces se vuelve a intentar un paso de una exportación que falla antes de que la exportación falle. |
data_export.stalled_after |
Cuántos segundos puede pasar una exportación sin avanzar antes de darla por interrumpida, para que el equipo pueda exportar de nuevo. |
data_export.keep_days |
Cuántos días se puede descargar un paquete exportado antes de que se borre. |
data_export.disk |
Se lee de TEAM_DATA_EXPORT_DISK, arriba. |
config/permission.php
'teams' => true,
'column_names' => [
'team_foreign_key' => 'team_id',
],
El modo de equipos de Spatie Permission, ya encendido. team_id es la columna que las migraciones del kit agregan a roles, model_has_roles y model_has_permissions, y el valor 0 en ella significa el contexto global del panel de administración. Deja ambas como están a menos que renombres la columna, en cuyo caso renómbrala también en las migraciones.
packages/billing-team/config/billing-team.php
'enabled' => env('BILLING_TEAM_ENABLED', true),
'model' => App\Models\Team::class,
'owner_resolver' => null,
'plan_limits' => App\Classes\TeamPlanLimits::class,
'plan_features' => App\Classes\TeamPlanFeatures::class,
'user_billing_enabled' => env('BILLING_USER_ENABLED', false),
| Clave | Qué hace |
|---|---|
enabled |
Se lee de BILLING_TEAM_ENABLED. |
model |
El modelo dueño de una cuenta de cobros: el equipo. |
owner_resolver |
Una clase que responde a qué equipo se le cobra en la petición actual. null usa el helper team(), que es lo correcto para cada pantalla bajo /team. |
plan_limits |
La clase cuyos métodos públicos cuentan cada límite para un equipo. |
plan_features |
La clase cuyos métodos públicos declaran las capacidades que un equipo puede comprar. |
user_billing_enabled |
Se lee de BILLING_USER_ENABLED. |
Qué se queda como en la base
Las identidades de inicio de sesión, la verificación, el correo, los SMS, el almacenamiento, el proveedor de IA, el seguimiento, los referidos y el sitio público conservan las claves y el significado de la base. Nada de un equipo cambia cómo una persona inicia sesión ni en qué idioma lee.