LoginSignup
1
0

More than 3 years have passed since last update.

3分で実装できる Laravelでユーザ編集、退会機能(忙しい人向け)

Last updated at Posted at 2021-01-08

前書き

useredit/laraveluiのレポジトリ
当ライブラリはMITライセンスです
laravel6系にて動作確認しております。
機能を追加したい場合はご自身でソースコード読んでください

laravel6 パッケージ開発ハンズオン(パッケージを作ったことない人向け)で同様の機能パッケージ開発ハンズオンあるので時間があれば是非

前提条件

laravel/uiをインストール
php artisan ui vue --authでUIを実装

インストール方法

プロジェクト直下で以下コマンドを実行

composer require useredit/laravelui

インストール完了後下記コマンドで各種controllerやRequestを実装

php artisan useredit

http://ドメイン名(localhost等)/userにアクセスし以下画面が出力できれば完成です

スクリーンショット 2021-01-08 10.39.24.png

 メール認証機能を実装する場合

https://readouble.com/laravel/6.x/ja/verification.html
上記の記事に沿えば簡単に実装できると思います

プロジェクト名/vendor/useredit/laravelui/UserEdit_Operation_DB.php

<?php

use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;


class UserEdit_Operation_DB
{
    public function EmailUpdate($request){
        //メール情報更新
        return DB::transaction(function () use($request){
            User::where('id',$request->UserId)
            ->lockForUpdate()
            //専有ロック
            ->update(['email'=> $request->Email,]);

            User::where('id',$request->UserId)
            ->update(['email_verified_at' =>NULL]);
            //再度メール認証
            return redirect('user')->with('status', __('メールアドレスの変更に成功しました'));
        });
    }
    public function PasswordChange($request,$user){
        //パスワード変更
        return DB::transaction(function () use($request,$user){
            User::where('id',$request->UserId)
            ->lockForUpdate();
            $user->password = bcrypt($request->newPassword);
            $user->save();
            return redirect('/email/verify')->with('status', __('パスワードの変更に成功しました'));#リダイレクト先を変更
        });
    }
    public function Withdrawal($request,$id){
        //退会
        return DB::transaction(function () use($request,$id){
            User::where('id',$id)
            ->lockForUpdate()
            ->delete();
            Auth::logout();
            return redirect('/')->with('status', __('退会できました。ご利用ありがとうございます'));
        });
    }

}

プロジェクト名/resources/views/auth/verify.blade.php
@extends('layouts.app')

@section('content')

    @if (session('status'))
    {{ session('status') }} 
    @endif
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">{{ __('Verify Your Email Address') }}</div>

                <div class="card-body">
                    @if (session('resent'))
                        <div class="alert alert-success" role="alert">
                            {{ __('A fresh verification link has been sent to your email address.') }}
                        </div>
                    @endif

                    {{ __('Before proceeding, please check your email for a verification link.') }}
                    {{ __('If you did not receive the email') }},
                    <form class="d-inline" method="POST" action="{{ route('verification.resend') }}">
                        @csrf
                        <button type="submit" class="btn btn-link p-0 m-0 align-baseline">{{ __('click here to request another') }}</button>.
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

といった風に変更するとメール認証に対応できます

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0