Фрази-паролі з'єднують кілька випадкових слів, наприклад sphere-quartz-bright-flame, щоб отримати облікові дані, які одночасно безпечні та легкі для читання й запам’ятовування. PHP Passphrase, створений Nico Bleiler, генерує такі фрази за рекомендованою EFF методикою, комбінуючи випадкові слова з EFF long word list. Пакет відтворює реалізацію Bitwarden на Rust і має вбудовану підтримку Laravel, а також можливість роботи як самостійна PHP-бібліотека.
Пакет корисний для додатків, які генерують тимчасові паролі або коди відновлення, або в будь-яких випадках, коли людсько-зрозуміла та безпечна послідовність слів краща за випадкову рядкову комбінацію символів.
PHP Passphrase пропонує кілька опцій для генерації фраз-паролів:
Встановіть пакет через Composer:
composer require nicobleiler/php-passphrase
Laravel автоматично знайде service provider. Додаткових налаштувань не потрібно, щоб почати генерувати фрази.
У Laravel використовуйте фасад Passphrase для генерації:
use NicoBleiler\Passphrase\Facades\Passphrase;
// Default: 3 words, hyphen separator, no capitalize, no number
Passphrase::generate();
// "unadvised-stubble-squid"
// Customize the output
Passphrase::generate(
numWords: 5,
wordSeparator: '~',
capitalize: true,
includeNumber: true,
);
// "Reggae~Blip~Prayer~Tabasco~Football5"
Пакет реєструє PassphraseGenerator як singleton у контейнері Laravel, тож його можна інжектити в класи:
use NicoBleiler\Passphrase\PassphraseGenerator;
class AuthController
{
public function __construct(
private PassphraseGenerator $passphrase,
) {}
public function temporaryPassword(): string
{
return $this->passphrase->generate(
numWords: 4,
capitalize: true,
includeNumber: true,
);
}
}
Пакет працює й без Laravel. Створіть екземпляр PassphraseGenerator напряму:
use NicoBleiler\Passphrase\PassphraseGenerator;
$generator = new PassphraseGenerator();
echo $generator->generate(); // "zone-statue-corporal"
Клас WordList підтримує завантаження слів з файлів або масивів:
use NicoBleiler\Passphrase\WordList;
use NicoBleiler\Passphrase\PassphraseGenerator;
// From a file (plain text or EFF diceware format)
$wordList = WordList::fromFile('/path/to/wordlist.txt');
// From an array
$wordList = WordList::fromArray([
'pizza',
'whisk',
'juice',
'beyond',
'quartz',
'flame',
'vortex',
'bright',
'sphere',
]);
$generator = new PassphraseGenerator($wordList);
echo $generator->generate(numWords: 4);
У Laravel ви можете вказати шлях до власного файлу списку слів через опублікований конфіг:
php artisan vendor:publish --tag=passphrase-config
Потім вкажіть шлях у config/passphrase.php:
'word_list_path' => resource_path('wordlists/my-custom-list.txt'),
Опублікований файл конфігурації дозволяє задати значення за замовчуванням для всіх опцій генерації:
return [
'num_words' => 3,
'word_separator' => '-',
'capitalize' => false,
'include_number' => false,
// null = bundled EFF long word list
// Or set an absolute path to a custom word list file
'word_list_path' => null,
];
Щоб дізнатися більше про PHP Passphrase та переглянути вихідний код, відвідайте репозиторій на GitHub.
Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення