Nuwira / bandrek by matriphe

Bandrek is password recovery token generation using number as code for Laravel 5.4.x based.
Package Data
Maintainer Username: matriphe
Maintainer Contact: (Muhammad Zamroni)
Package Create Date: 2017-07-29
Package Last Update: 2018-03-06
Language: PHP
License: MIT
Last Refreshed: 2024-04-19 15:13:07
Package Statistics
Total Downloads: 851
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 3
Total Watchers: 8
Total Forks: 1
Total Open Issues: 0


Build Status Total Download Latest Stable Version

Bandrek is local word in Javanese that means a lock pick. We use lock pick to open a padlock if the key is lost.

Bandrek replaces Laravel's password recovery manager to provide code and token when requesting password recovery. This code can be used as token replacement if you are using REST-API to reset password without visiting web interface.

Bandrek generate 6 random numeric character as code. Bandrek is also creating 64 characters token that can be used in normal web page interface.

The scenario is when user request password recovery via REST-API, the user can send the credentials (e-mail and password) and the easy readable code to reset the password.


Bandrek only supports Laravel 5.4 and above. To install using Composer, just run this command below.

composer require nuwira/bandrek


Config File

After installed, open config/app.php and find this line.


Comment or remove it and add that line to override Laravel's password reset handling.


Add Facade

This is optional. To add Facade, add config/app.php in the aliases section.

'Bandrek' => Nuwira\Bandrek\BandrekFacade::class,

If Facade is loaded, you can call these functions

Bandrek::getRandomCode($length = 6, $toString = true);
Bandrek::getCodeFromToken($token, $toString = true);

Model File

To be able to send reset password instruction e-mail, open app/User.php (the user model file) and find this line.

use Illuminate\Foundation\Auth\User as Authenticatable;

Replace that line with this.

use Nuwira\Bandrek\Auth\User as Authenticatable;

Using Custom Notification

Bandrek by default is using e-mail for notification. You can add or replace using your preferred method by extending abstract class Nuwira\Bandrek\Notification\BandrekNotification. The token and code are available in $this->code and $this->token in the notification class.

For example, if you want to send the code using Gammu SMS notification, just install and configure it.

To use SMS and e-mail for code sending, add function in your model that extends Nuwira\Bandrek\Auth\User and inject the notification.

Notification File: App\Notifications\ResetPassword.php

namespace App\Notifications;

use Nuwira\Bandrek\Notification\BandrekNotification;
use Illuminate\Notifications\Messages\MailMessage;
use NotificationChannels\Gammu\GammuChannel;
use NotificationChannels\Gammu\GammuMessage;

class ResetPassword extends BandrekNotification
    public function via($notifiable)
        return ['mail', GammuChannel::class];
    public function toMail($notifiable)
        return (new MailMessage)
            ->line('You are receiving this email because we received a password reset request for your account.')
            ->action('Reset Password', url(config('app.url').route('password.reset', $this->token, false)))
            ->line('If you did not request a password reset, no further action is required.');
    public function toGammu($notifiable)
        return (new GammuMessage())
            ->content('To reset password, use this code: '.$this->code);

Model File: App\User.php

namespace App;

use Nuwira\Bandrek\Auth\User as BaseUser;
use App\Notifications\ResetPassword as ResetPasswordNotification;

class User extends BaseUser
    public function sendPasswordResetNotification($token)
        $this->notify(new ResetPasswordNotification($token));


The MIT License (MIT). Please see License File for more information.