Search code examples
laravelmodeleloquentbcryptobservers

How to send original users password to his mail (before bcryption)


In my system users can't register. Admin adding all users in the admin panel and telling them your password is "xxx". Right now i need to send mail to users. Which contains users email and users password. System is working great. But there is one exception. In the mail, passwords is bcrypted. How can i solve? I don't any clue. I am using observers. In the model:

    public static function boot()
{
    parent::boot();
    self::created(function () {
        $customer = Customer::latest()->get()->first();
        Mail::send('emails.user_login_informations', ['customer' => $customer], function($message) use($customer) {
            $message->to($customer->email, $customer->name, $customer->password)
                ->subject('Login Information');
        });
    });
}

ps: this is working. In my mail:

Your email: [email protected] 
Your Password: $2y$10$/GW5XNH9KGU.Nz05PZHFJuKb2ldhwYhS8oMX9e7HJIuFNJ

But this looks like:

Your email: [email protected] 
Your Password: 123

Solution

  • You can create a temporary password field and delete it upon user activation. I needed this for a real world example. For instance:

    Event::listen('rainlab.user.activate', function($user) {
        $user->temp_password = null;
        $user->save();
    });
    
    User::saving(function ($user) {
        $password = post('User.password');
        if ($password && ! $user->attributes['is_activated']) {
            $user->temp_password = $password;
        }
    });
    

    As mentioned above though, this includes a big security risk.