Konfigurácia
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 |
|---|---|---|---|
model | Contact::class | — | Eloquent model pre kontakty. Musí byť Contact z balíka alebo ho rozširovať — čokoľvek iné vyhodí InvalidConfigurationException. |
table | contacts | — | 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_type | bigint | CONTACTS_KEY_TYPE | Typ kľúča owner_id: bigint, uuid alebo ulid. Iná hodnota vyhodí InvalidConfigurationException. Zafixuje sa pri spustení migrácie. |
auto_primary | true | — | 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_primary | false | — | Primárne môžu byť len kontakty s vlastníkom; inak sa vyhodí PrimaryContactConflict. |
default_country_code | null | CONTACTS_DEFAULT_COUNTRY_CODE | Orientač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.ttl | 60 | CONTACTS_VERIFICATION_TTL | Počet minút platnosti overovacieho tokenu, 1 – 525600 (rok). |
verification.style | code | CONTACTS_VERIFICATION_STYLE | code 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_length | 6 | CONTACTS_VERIFICATION_CODE_LENGTH | Počet číslic pri štýle code, 1 – 72. |
verification.token_length | 32 | CONTACTS_VERIFICATION_TOKEN_LENGTH | Poč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_attempts | 5 | CONTACTS_VERIFICATION_MAX_ATTEMPTS | Poč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=5Vlastný 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| Riadok | Zobrazuje |
|---|---|
| Model | Krátky názov triedy použitého modelu kontaktu. |
| Table | Nastavený názov tabuľky. |
| Auto primary | ON / OFF. |
| Require owner for primary | ON / OFF. |
| Default country code | SET / NONE — nikdy samotná predvoľba. |
| Verification | Štýl, TTL a limit pokusov, napr. code, 60m, 5 attempts. |
| Custom types | Počet, napr. 2 registered — nikdy názvy druhov. |
| Relationship kinds | FREE-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 kryptomienOdoslaní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.