taylornetwork/username-suggester

A package to suggest usernames based on taylornetwork/laravel-username-generator

0.1.1 2022-06-07 21:27 UTC

This package is auto-updated.

Last update: 2024-11-08 03:24:20 UTC


README

A package to suggest usernames from taylornetwork/laravel-username-generator

This would be useful if you want to show your users a list of suggested usernames based on their entry if their selection is unavailable.

Install

Via composer

$ composer require taylornetwork/username-suggester

Publish Config

This will publish to config/username_suggester.php

$ php artisan vendor:publish --provider="TaylorNetwork\UsernameSuggester\UsernameSuggesterProvider"

Set Up

You will need to follow the quickstart guide for taylornetwork/laravel-username-generator.

At minimum your User model needs to use the TaylorNetwork\UsernameGenerator\FindSimilarUsernames (see set up)

Defaults

The suggester will generate 3 unique usernames based on the given name. It will use the increment driver which will use the TaylorNetwork\UsernameGenerator\Generator class to convert the name to a username and then add incrementing numbers on the end to make them unique.

If no name is entered it will generate random usernames, same as TaylorNetwork\UsernameGenerator\Generator

Usage

Available Methods

suggest

The suggest() method accepts an optional parameter of the name to suggest usernames for.

$suggester = new \TaylorNetwork\UsernameSuggester\Suggester();

$suggester->suggest(); // Returns a collection of random unique usernames

$suggester->suggest('test user'); // Returns a collection of unique usernames based on the name 'test user'

setDriver

This will allow you to set a different driver than the default.

$suggester->setDriver('random');

This method returns an instance of the Suggester class, so you're able to chain methods.

setAmount

This will allow you to set a different amount of suggestions than the default.

$suggester->setAmount(10);

This method returns an instance of the Suggester class, so you're able to chain methods.

setGeneratorConfig

This will allow you to override the TaylorNetwork\UsernameGenerator\Generator config.

$suggester->setGeneratorConfig([
    'separator' => '*',
]);

Same as setAmount and setDriver this method also returns the Suggester instance.

Example

Basic with Random Usernames

$suggester->suggest();

Basic with Entered Name

$suggester->suggest('test user');

Different Driver and Amount

$suggester->setDriver('random')->setAmount(5)->suggest('test user');

This will use the Random driver to append random numbers after the username and generate 5 usernames.

Using the Facade

A UsernameSuggester facade is included so all the methods can be accessed that way.

UsernameSuggester::suggest();

Custom Drivers

You can create any custom drivers by extending the TaylorNetwork\UsernameSuggester\Drivers\BaseDriver class.

namespace App\SuggesterDrivers;

use TaylorNetwork\UsernameSuggester\Drivers\BaseDriver;

class CustomDriver extends BaseDriver
{
    public function makeUnique(string $username): string
    {
        return $username;
    }
}

The only requirement is that you implement the makeUnique method to make the username unique in some way.

You'll also need to register the driver in app/username_suggester.php

'drivers' => [
    'custom' => CustomDriver::class,
    // ...
],

You can access it using the key you set.

UsernameSuggester::setDriver('custom')->suggest();