NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Teams for Laravel

Konfigurácia

Keď sú migrácie publikované a spustené, balík funguje bez akejkoľvek konfigurácie — každý kľúč má predvolenú hodnotu, väčšina z env. config/teams.php publikujte, len ak chcete niečo zmeniť. Celý publikovaný súbor:

use RoundlyConsulting\Teams\Models\Invite;
use RoundlyConsulting\Teams\Models\JoinRequest;
use RoundlyConsulting\Teams\Models\Member;
use RoundlyConsulting\Teams\Models\Team;
use RoundlyConsulting\Teams\Models\TeamRole;

return [

    'models' => [
        'team' => Team::class,
        'member' => Member::class,
        'invite' => Invite::class,
        'team_role' => TeamRole::class,
        'join_request' => JoinRequest::class,
    ],

    'key_type' => env('TEAMS_KEY_TYPE', 'bigint'),

    'roles' => [
        'provider' => env('TEAMS_ROLES_PROVIDER', 'array'),
        'owner' => 'owner',
        'admin' => 'admin',
        'default' => env('TEAMS_DEFAULT_ROLE', 'member'),
        'per_team' => env('TEAMS_PER_TEAM_ROLES', false),
        'cache' => [
            'enabled' => env('TEAMS_ROLES_CACHE', false),
            'store' => env('TEAMS_ROLES_CACHE_STORE'),
            'key' => env('TEAMS_ROLES_CACHE_KEY', 'teams.roles'),
            'ttl' => env('TEAMS_ROLES_CACHE_TTL', 3600),
        ],
    ],

    'invites' => [
        'expires_after' => env('TEAMS_INVITES_EXPIRES_AFTER', '7 days'),
        'code_length' => env('TEAMS_INVITES_CODE_LENGTH', 32),
    ],

    'members' => [
        'prune_after' => env('TEAMS_MEMBERS_PRUNE_AFTER', '30 days'),
        'expiring_within' => env('TEAMS_MEMBERS_EXPIRING_WITHIN', 7),
    ],

    'join_requests' => [
        'prune_after' => env('TEAMS_JOIN_REQUESTS_PRUNE_AFTER', '30 days'),
    ],

    'approvals' => [
        'enabled' => env('TEAMS_APPROVALS', false),
        'rule' => env('TEAMS_APPROVALS_RULE', 'unanimous'),
        'quorum' => env('TEAMS_APPROVALS_QUORUM'),
    ],

    'gate' => [
        'register' => env('TEAMS_REGISTER_GATE', true),
        'prefix' => env('TEAMS_GATE_PREFIX', 'teams'),
        'owner_ability' => env('TEAMS_GATE_OWNER_ABILITY', 'owner'),
    ],

    'notifications' => [
        'queue_connection' => env('TEAMS_NOTIFY_CONNECTION'),
    ],

];

Všetky kľúče

KľúčPredvolenéEnvÚčel
models.teamTeam::class—Model tímu. Musí rozširovať Team z balíka.
models.memberMember::class—Model členstva.
models.inviteInvite::class—Model pozvánky.
models.team_roleTeamRole::class—Model rolí upravených pre konkrétny tím.
models.join_requestJoinRequest::class—Model žiadosti o pripojenie.
key_typebigintTEAMS_KEY_TYPETyp kľúča polymorfných stĺpcov — bigint, uuid alebo ulid. Číta ho migrácia; iná hodnota vyhodí InvalidConfigurationException.
roles.providerarrayTEAMS_ROLES_PROVIDERÚložisko rolí: array (v kóde) alebo database (tabuľka team_roles); iná hodnota vyhodí výnimku.
roles.ownerowner—Rola, ktorú dostane zakladateľ tímu a nový vlastník.
roles.adminadmin—Rola, na ktorú sa pri prevode zníži pôvodný vlastník.
roles.defaultmemberTEAMS_DEFAULT_ROLERola, ak žiadna nie je zadaná — napr. pri schválení žiadosti o pripojenie.
roles.per_teamfalseTEAMS_PER_TEAM_ROLESZapne roly upravené pre konkrétny tím. Vypnuté = globálne roly, žiadne dopyty navyše.
roles.cache.enabledfalseTEAMS_ROLES_CACHECache pre mapu rolí z databázy; vyprázdni sa pri každej zmene roly.
roles.cache.storenullTEAMS_ROLES_CACHE_STORECache úložisko; null = predvolené. Ak ho úložisko podporuje, použijú sa tagy.
roles.cache.keyteams.rolesTEAMS_ROLES_CACHE_KEYCache kľúč pre mapu rolí.
roles.cache.ttl3600TEAMS_ROLES_CACHE_TTLPlatnosť cache v sekundách, 1 – 31536000.
invites.expires_after7 daysTEAMS_INVITES_EXPIRES_AFTERPredvolená platnosť pozvánky, ak nie je zadaná; použije sa aj pri opätovnom odoslaní — kladný interval ako 7 days alebo P7D.
invites.code_length32TEAMS_INVITES_CODE_LENGTHDĺžka náhodného kódu pozvánky, 8 – 128 (alfanumerické znaky bezpečné pre URL).
members.prune_after30 daysTEAMS_MEMBERS_PRUNE_AFTERNulový alebo kladný interval od expirácie členstva, po ktorom ho teams:members:prune alebo model:prune odstráni.
members.expiring_within7TEAMS_MEMBERS_EXPIRING_WITHINPredvolené okno v dňoch (1 – 3660) pre teams:members:expiring a MembershipExpiringSoon.
join_requests.prune_after30 daysTEAMS_JOIN_REQUESTS_PRUNE_AFTERNulový alebo kladný interval od poslednej zmeny vybavenej žiadosti, po ktorom ju model:prune odstráni.
approvals.enabledfalseTEAMS_APPROVALSŽiadosti o pripojenie idú cez approvals-for-laravel na schválenie viacerými adminmi.
approvals.ruleunanimousTEAMS_APPROVALS_RULEPredvolené ApprovalRule, ak ho handle nenastaví: unanimous, quorum, any alebo weighted. Iná hodnota vyhodí InvalidConfigurationException.
approvals.quorumnullTEAMS_APPROVALS_QUORUMPredvolené kvórum (kladné celé číslo), ak ho handle žiadostí nenastaví.
gate.registertrueTEAMS_REGISTER_GATEZaregistruje Gate hook a Blade direktívy.
gate.prefixteamsTEAMS_GATE_PREFIXPrefix ability, napr. teams.manage-billing.
gate.owner_abilityownerTEAMS_GATE_OWNER_ABILITYSkrátená ability pre vlastníctvo: teams.owner.
notifications.queue_connectionnullTEAMS_NOTIFY_CONNECTIONQueue connection pre publikovateľný event subscriber.

Prostredie (env)

Bežné prepínače sa riadia cez env, takže publikovaný súbor zväčša vôbec nepotrebujete:

TEAMS_KEY_TYPE=uuid                  # set before you migrate
TEAMS_ROLES_PROVIDER=database
TEAMS_ROLES_CACHE=true
TEAMS_DEFAULT_ROLE=member
TEAMS_PER_TEAM_ROLES=true
TEAMS_INVITES_EXPIRES_AFTER="14 days"
TEAMS_MEMBERS_EXPIRING_WITHIN=14
TEAMS_APPROVALS=true
TEAMS_REGISTER_GATE=true

Prísne hodnoty

Konfiguračný súbor odovzdáva hodnoty z env bez úprav a balík ich číta prísne. Kľúče typu bool prijmú reťazce z env tak, ako prídu: true/1/on/yes prepínač zapnú a false/0/off/no ho vypnú; kľúče typu int prijmú celočíselné reťazce ako „3600“. Nenastavený kľúč — chýbajúci, null alebo prázdny ('' či len medzery, ako pri samotnom riadku TEAMS_APPROVALS=) — dostane predvolenú hodnotu. Čokoľvek iné vyhodí InvalidConfigurationException s názvom kľúča namiesto toho, aby sa potichu použila predvolená hodnota:

  • preklep v prepínači (TEAMS_APPROVALS=disabled), v drivere rolí (databse) alebo v pravidle schvaľovania;
  • celé číslo, ktoré ním nie je (abc, 7.5), alebo je mimo rozsahu — napríklad kód pozvánky kratší ako 8 alebo dlhší ako 128 znakov;
  • interval, ktorý Carbon nevie spracovať (seven days), alebo záporný interval — invites.expires_after musí byť navyše väčší ako nula;
  • nereťazcový kľúč roly, cache úložisko či kľúč, prefix Gate alebo owner ability.

php artisan about takú hodnotu zobrazí ako INVALID namiesto zlyhania.

Typ morph kľúča

key_type číta migrácia, preto ho nastavte pred spustením migrácií. Určuje typ polymorfných stĺpcov owner, member, invited_by, requester a responded_by — ak modely za nimi používajú UUID alebo ULID primárne kľúče, zvoľte uuid alebo ulid. Všetky morph ciele musia zdieľať jeden typ kľúča; iná hodnota vyhodí pri spustení migrácií InvalidConfigurationException.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.