Пароль по умолчанию в Laravel - PullRequest
0 голосов
/ 25 октября 2019

Я хотел бы настроить пароль по умолчанию, потому что в проекте, над которым я работаю, именно администратор должен создавать учетные записи для пользователей.

Конечно, если в моей модели задано значение по умолчанию, Он не будет хэшировать пароль. Как еще я могу подойти к этому

  public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('POBox');
            $table->string('password');
            $table->rememberToken();
            $table->unsignedBigInteger('address_id')->index();
            $table->unsignedInteger('role_id');
            $table->timestamps();

            $table->foreign('address_id')->references('id')->on('addresses');
        });
    }

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Пусть администратор только создаст пользователя, а затем отправит по электронной почте новому пользователю сброс пароля.

Форма:

        <form method="POST" action="{{ route('admin.user.store') }}" class="bg-white shadow-md rounded px-8 pt-6 pb-8 mb-4">
            @csrf
            <div class="form-group">
                <div class="row">
                    <div class="col-md-6">
                        <label for="first_name" class="no-pad-left col-form-label white-txt muli w4">First Name</label>
                        <input id="first_name" type="text" class="form-control{{ $errors->has('first_name') ? ' is-invalid' : '' }}" name="first_name" placeholder="Enter First Name" value="{{ old('first_name') }}" required autofocus>
                        @if ($errors->has('first_name'))
                        <span class="invalid-feedback appearance-none block w-full bg-gray-200 text-gray-700 border border-red-500 rounded py-3 px-4 mb-3 leading-tight focus:outline-none focus:bg-white">
                            <strong>{{ $errors->first('first_name') }}</strong>
                        </span>
                        @endif
                    </div>
                    <div class="col-md-6">
                        <label for="last_name" class="no-pad-left col-form-label white-txt muli w4">Last Name</label>
                        <input id="last_name" type="text" class="form-control{{ $errors->has('last_name') ? ' is-invalid' : '' }}" name="last_name" placeholder="Enter Last Name" value="{{ old('last_name') }}" required autofocus>
                        @if ($errors->has('last_name'))
                        <span class="invalid-feedback appearance-none block w-full bg-gray-200 text-gray-700 border border-red-500 rounded py-3 px-4 mb-3 leading-tight focus:outline-none focus:bg-white">
                            <strong>{{ $errors->first('last_name') }}</strong>
                        </span>
                        @endif
                    </div>
                </div>
            </div>
            <div class="form-group">
                <div class="row">
                    <div class="col-md-12">
                        <label for="email" class="no-pad-left col-form-label white-txt muli w4">E-Mail Address</label>
                        <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" placeholder="Enter Email Address" value="{{ old('email') }}" required>
                        @if ($errors->has('email'))
                        <span class="invalid-feedback appearance-none block w-full bg-gray-200 text-gray-700 border border-red-500 rounded py-3 px-4 mb-3 leading-tight focus:outline-none focus:bg-white">
                            <strong>{{ $errors->first('email') }}</strong>
                        </span>
                        @endif
                    </div>
                </div>
            </div>
            <div class="flex">
                <button type="submit" class="bg-yellow-500 hover:bg-yellow-700 text-navy-500 md:w-1/4 sm:w-full w-full font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline shadow-lg" type="button">
                    Create User
                </button>
            </div>
        </form>

Контроллер

    public function adminUserStore(Request $request){
        $validatedData = $request->validate([
            'first_name'=> 'required|string|max:255',
            'last_name'=> 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
        ]);

        $quickpass = substr( str_shuffle( str_repeat( 'abcdefghijklmnopqrstuvwxyz0123456789', 10 ) ), 0, 10 );
        $adminName = Auth::user()->first_name.' '.Auth::user()->last_name; 
        $newuser = User::create([
            'first_name'=> $request->first_name,
            'last_name'=> $request->last_name,
            'email' => $request->email,
            'password' => Hash::make($quickpass),
            'role_id' => '0',
            'added_by' => $adminName,
        ]);
        Mail::to($newuser->email)
        ->send(new NewUserPassReset(
            $request->input('first_name'),
            $request->input('last_name'),
            $request->input('email')
          ));

        return back()->with('success','The user has been created and a password reset email has been sent to them.');     

    }

Вы должны быть в состоянии выяснить часть электронной почты. Затем в электронном письме, отправляемом новому пользователю, укажите ссылку на маршрут сброса пароля.

Вот как я это делаю.

0 голосов
/ 25 октября 2019

Вы можете использовать значения по умолчанию в модели.

User.php

public class User extends Model
{
    protected $attributes = [
        'password' => Hash::make(Str::random(40))
    ];
}

Str :: random даст вам случайную строку из 40 символов. Вы можете изменить это на что угодно. Hash :: make () хэширует строку, поэтому Laravel может проверить хэш, когда пользователь пытается войти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...