1. ホーム
  2. Web プログラミング
  3. PHP プログラミング
  4. phpの例

laravelのユーザーのパスワード変更とメールボックスの結合の詳細操作

2022-01-15 08:56:47

I. パスワードの変更

1.1 パスワード変更用コントローラの作成

コマンドを実行する php artisan make:controller Auth/PasswordController

パスワードの変更方法を書き込んでください。

/**
     * Change password
     */
    public function updatePassword(Request $request) {
        $request-> validate([
            'old_password' => 'required|min:6|max:16',
            'password' => 'required|min:6|max:16|confirmed',
        ], [
            'old_password.required' => 'old_password cannot be empty',
            'old_password.min' => 'Old password must be at least 6 characters',
            'old_password.max' => 'old password can be up to 16 characters',
        ]);

        // old password
        $old_password = $request-> input('old_password');
        // user instance
        $user = auth('api')->user();
        // Verify that the old password is correct
        if (!password_verify($old_password, $user->password)) {
            return $this->response->errorBadRequest('old password is incorrect');
        } 
        // Update the user password  
        $user->password = bcrypt($request->input('password'));
        $user->save();

        return $this->response->noContent();
    }

画像

1.2 パスワード変更経路の作成

 // Change password
            $api->post('password/update', [PasswordController::class, 'updatePassword']);

画像

1.3 テスト結果

II. バインドメール

 2.1 バインディングメールボックスコントローラ

コマンドを実行する php artisan make:controller Auth/BindController メールボックスをバインドするコントローラを作成する。

メール認証コードの送信とメール更新の処理関数を書き込む。

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\BaseController;
use App\Mail\SendEmailCode;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;

class BindController extends BaseController
{
    /**
     * Get the verification code of the email
     */
    public function emailCode(Request $request) {
        $request-> validate([
            'email' => 'required|email'
        ]);

        // Send the validation code to the email
        Mail::to($request->input('email'))->queue(new SendEmailCode($request->input('email')));
        return $this->response->noContent();
    }

    /**
     * Update mailbox
     */
    public function updateEmail(Request $request) {
        $request-> validate([
            'email' => 'required|email',
            'code' => 'required'
        ], [
            'code.required' => "Captcha cannot be empty",
        ]);

        // verify that the code is correct
        if (cache($request->input('email')) ! = $request->input('code')) {
            return $this->response->errorBadRequest('Captcha or email error!') ;
        }

        // Update the mailbox
        $user = auth('api')->user(); 
        $user->email = $request->input('email');
        $user->save();
        return $this->response->noContent();
    } 
}

キューが変更された場合、コマンドでキューを再起動します。 sudo supervisorctl restart all

2.2 対応する経路の作成

  // Send an email verification code
            $api->post('email/code', [BindController::class, 'emailCode']);

            // Update the mailbox
            $api->post('email/update', [BindController::class, 'updateEmail']);

画像

2.3 メール送信のためのクラスを作成する

コマンドを実行する php artisan make:mail SendEmailCode :

画像

手紙を書く

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Cache;

class SendEmailCode extends Mailable
{
    use Queueable, SerializesModels;

    protected $email;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($eamil)
    {
        $this->email = $eamil;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        // Generate code
        $code = rand(1000, 9999);

        // Get the mailbox

        // use the code corresponding to the cached mailbox
        Cache::put($this->email, $code, now()->addMinute(5)); // 5 minutes to expire

        return $this->view('emails.send-email-code', ['code' => $code]);
    }
}

画像

メール送信用のテンプレートを作成する場合。

テンプレートが書いています。

メール認証コードは {{$code}}


/{br

認証コードの有効期限は5分ですので、速やかにご利用ください。

2.4 テスト結果

受信したメール認証コードはこちら側で確認することができます。
更新された入力メールが正しくないか、認証コードが正しくないかをテストする。

正しいメールアドレスと認証コードを入力すると、修正されます。

これはlaravelユーザーの変更パスワードとバインドメールボックスに関するこの記事の終わりです、より関連するlaravel変更パスワードの内容は、BinaryDevelopの以前の記事を検索してくださいまたは、次の関連記事を閲覧し続けるあなたがよりBinaryDevelopをサポートすることを願っています!。