Dareks21
Dareks21

Reputation: 19

How add to database hash password in Laravel?

I make validation form registration using Laravel 9 and now I want to add correct data to database. This is my code in controller

public function store(RegistrationRequest $request)
{
    return redirect(
        route(
            'index.store',
            ['registration' => User::create($request->validated())]
        )
    );
}

But my problem is that I want to insert to database hash password. In model I have function which hash password but I don't know how to insert to database.

class User extends Model
{
use HasFactory;

protected $fillable = [
    'login', 'password', 'email'
];

public function opinions()
{
    return $this->hasMany(Opinion::class);
}

public function setPassword($value)
{
    $this->attributes['password'] = bcrypt($value);
}

}

I will gratefull if some help me how resolve this problem.

Upvotes: 1

Views: 246

Answers (1)

John Lobo
John Lobo

Reputation: 15319

Since you are using laravel 9 you have two option to store hashed password .Add this mutator in model

protected function password(): Attribute
{
   return Attribute::make(
        set: fn($value) => bcrypt($value),
    );
}

Ref :defining-a-mutator

or older way is

public function setPasswordAttribute($value)
{
     $this->attributes['password'] = bcrypt($value);
}

Ref: Defining A Mutator

Upvotes: 1

Related Questions