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

Publikovaný config/contacts.php:

return [
    'model' => RoundlyConsulting\Contacts\Models\Contact::class,
    'table' => 'contacts',
    'key_type' => env('CONTACTS_KEY_TYPE', 'bigint'),

    'auto_primary' => true,
    'require_owner_for_primary' => false,
    'default_country_code' => env('CONTACTS_DEFAULT_COUNTRY_CODE'),

    'verification' => [
        'ttl' => env('CONTACTS_VERIFICATION_TTL', 60),
        'style' => env('CONTACTS_VERIFICATION_STYLE', 'code'),
        'code_length' => env('CONTACTS_VERIFICATION_CODE_LENGTH', 6),
        'token_length' => env('CONTACTS_VERIFICATION_TOKEN_LENGTH', 32),
        'max_attempts' => env('CONTACTS_VERIFICATION_MAX_ATTEMPTS', 5),
    ],

    'types' => [
        // 'whatsapp' => ['label' => 'WhatsApp', 'icon' => 'chat', 'rules' => ['required', 'string']],
    ],

    'relationship_kinds' => [
        // 'works_at' => 'Works at', 'spouse_of' => 'Spouse of',
    ],
];

Všetky kľúče

KľúčPredvolenéEnvÚčel
modelContact::class—Eloquent model pre kontakty. Musí byť Contact z balíka alebo ho rozširovať — čokoľvek iné vyhodí InvalidConfigurationException.
tablecontacts—Tabuľka kontaktov; číta ju migrácia aj Contact::getTable(). Prázdna hodnota = nenastavená (contacts); akákoľvek iná hodnota musí byť reťazec.
key_typebigintCONTACTS_KEY_TYPETyp kľúča owner_id: bigint, uuid alebo ulid. Iná hodnota vyhodí InvalidConfigurationException. Zafixuje sa pri spustení migrácie.
auto_primarytrue—Prvý kontakt daného druhu pridaný vlastníkovi sa stane primárnym; keď primárny druh opustí (zmazanie, synchronizácia, presun), nahradí ho ďalší podľa poradia.
require_owner_for_primaryfalse—Primárne môžu byť len kontakty s vlastníkom; inak sa vyhodí PrimaryContactConflict.
default_country_codenullCONTACTS_DEFAULT_COUNTRY_CODEOrientačná predvoľba pre telefónne čísla zadané vo vnútroštátnom formáte — nahradí úvodnú 0 (pozrite Druhy kontaktov). Zapisuje sa 421, +421 alebo 1-264 (1 – 4 číslice, bez úvodnej nuly); nenastavená hodnota (null alebo prázdna) znamená žiadnu.
verification.ttl60CONTACTS_VERIFICATION_TTLPočet minút platnosti overovacieho tokenu, 1 – 525600 (rok).
verification.stylecodeCONTACTS_VERIFICATION_STYLEcode pre číselný jednorazový kód, token pre náhodný hex reťazec. Presne a malými písmenami: čokoľvek iné vyhodí výnimku, takže preklep nikdy nezmení token na 6-miestny kód.
verification.code_length6CONTACTS_VERIFICATION_CODE_LENGTHPočet číslic pri štýle code, 1 – 72.
verification.token_length32CONTACTS_VERIFICATION_TOKEN_LENGTHPočet náhodných bajtov pri štýle token, 1 – 36 — v hex kódovaní, takže reťazec je dvakrát dlhší; bcrypt číta len prvých 72 znakov.
verification.max_attempts5CONTACTS_VERIFICATION_MAX_ATTEMPTSPočet nesprávnych pokusov, ktoré token prežije, 1 – 1000. Pokus, ktorý minie posledný, token zneplatní.
types[]—Registrácia vlastných druhov a prepis popisu, ikony či pravidiel vstavaných druhov. Mapa druh => definícia; label a icon sú reťazce (prázdna hodnota = nenastavená, teda vlastná hodnota druhu) a rules zoznam reťazcov s pravidlami.
relationship_kinds[]—Povolené druhy pre relateTo() / relationsOfKind(). Prázdne alebo nenastavené (null či prázdna hodnota) = ľubovoľné; zoznam alebo mapa druh => popis ich obmedzí. Akákoľvek iná hodnota, ktorá nie je pole, vyhodí výnimku.

Oba prepínače akceptujú reťazce v štýle env ('true'/'false', '1'/'0', 'on'/'off', 'yes'/'no') a číselné kľúče akceptujú celé čísla v reťazci ('30'). Nenastavený kľúč (chýbajúci, null alebo prázdny: '' či len medzery, čo dá samotný riadok CONTACTS_VERIFICATION_TTL=) má predvolenú hodnotu. Čokoľvek iné — preklep v prepínači či štýle, TTL, dĺžka alebo počet pokusov, ktoré nie sú celým číslom ('five', '5.5') alebo sú mimo rozsahu, nereťazcová tabuľka, predvoľba, ktorá ňou nie je, chybná položka types alebo relationship_kinds — vyhodí InvalidConfigurationException z balíka package-toolkit s názvom kľúča, namiesto toho, aby sa použila predvolená hodnota alebo sa hodnota potichu orezala.

Prostredie (env)

Kľúče citlivé na nasadenie sa čítajú z env, takže súbor publikujete len zriedka:

CONTACTS_KEY_TYPE=bigint
CONTACTS_DEFAULT_COUNTRY_CODE=421
CONTACTS_VERIFICATION_TTL=60
CONTACTS_VERIFICATION_STYLE=code
CONTACTS_VERIFICATION_CODE_LENGTH=6
CONTACTS_VERIFICATION_TOKEN_LENGTH=32
CONTACTS_VERIFICATION_MAX_ATTEMPTS=5

Vlastný model kontaktu

Model Contact zámerne nie je final. Rozšírte ho a nasmerujte naň contacts.model — trait, akcie, vCard exportér, smerovanie notifikácií aj testové matchery si ho odtiaľ načítajú:

namespace App\Models;

use RoundlyConsulting\Contacts\Models\Contact as BaseContact;

class Contact extends BaseContact
{
    // your own relations, accessors and scopes
}

// config/contacts.php
'model' => App\Models\Contact::class,

Nastavená trieda musí byť Contact z balíka alebo jeho podtrieda; čokoľvek iné — cudzí model, neexistujúca trieda — vyhodí InvalidConfigurationException s názvom contacts.model a nikdy sa potichu nenahradí. Tabuľku meňte cez contacts.table, nie cez vlastnosť $table — metóda getTable() modelu rešpektuje hodnotu z konfigurácie.

Kontrola konfigurácie

Balík hlási svoju konfiguráciu do príkazu about v Laraveli:

php artisan about --only=contacts
RiadokZobrazuje
ModelKrátky názov triedy použitého modelu kontaktu.
TableNastavený názov tabuľky.
Auto primaryON / OFF.
Require owner for primaryON / OFF.
Default country codeSET / NONE — nikdy samotná predvoľba.
VerificationŠtýl, TTL a limit pokusov, napr. code, 60m, 5 attempts.
Custom typesPočet, napr. 2 registered — nikdy názvy druhov.
Relationship kindsFREE-FORM alebo počet, napr. 3 allowed.

Registrované druhy a druhy vzťahov sú slovníkom vašej domény, preto sa hlásia len ako počty — nikdy menom. Predvoľba sa hlási len prítomnosťou, nikdy hodnotou. Chybná hodnota tabuľky, predvoľby, nastavenia overovania, types alebo relationship_kinds sa zobrazí ako INVALID a príkaz nezlyhá.

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.