Cargando…

Esto está tardando más de lo esperado.

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.

Volver