LoginSignup
0
0

More than 1 year has passed since last update.

Laravel8 マイページを見られるユーザーを限定する(アクセス制限)

Posted at

やりたいこと

  • マイページを自分(特定のユーザー)以外がアクセスできないようにしたい。
  • 未ログイン状態からのアクセスがあればログイン画面にリダイレクトしたい。
  • ログイン済みであっても他人のマイページは閲覧できないようにしたい。

環境

PHP7
Laravel8

前提

  1. マイページそのものは作成しておく
  2. マイページのURLにパラメータとしてユーザーIDが表示される状態になっている

コントローラー

コントローラーでは、if文を使ってパラメーターに入るユーザーIDとアクセスしようとしているユーザーのユーザーIDが一致しないと閲覧できないようにした。

app/Http/Controllers/RecordUsersController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Record;
use App\Models\User;
use Illuminate\Support\Facades\DB;

class RecordUsersController extends Controller
{
    //
   public function show_by_user($id)
    {
        $user = Auth::user();
        $id = Auth::id();

        $user = User::find($id); 
        $records = Record::where('user_id',$user->id)->sortable()->get(); 


        if($user->id == $id){

        return view('record.showbyuser', [
            'user_name' => $user->name, 
            'records' => $records, 
        ]);
        }else{
            return redirect('/login');
        }

    }
}

ルーティング

ルーティングでは->middleware('auth')を追記して、未ログイン状態からアクセスするとログインを要求するように変更。

routes/web.php
use App\Http\Controllers\RecordUsersController;
// ユーザー投稿の一覧表示画面
Route::get('/record/user/{user_id}', [RecordUsersController::class, 'show_by_user'])->name('show_by_user_record')->middleware('auth');

できたこと

  • マイページを自分(特定のユーザー)以外がアクセスできないようになった。
  • 未ログイン状態からのアクセスがあればログイン画面にリダイレクトするようになった。
  • ログイン済みであっても他人のマイページは閲覧できないようになった。

うまくいっていないこと

URLパラメーターに入るユーザーIDがアクセスしようとするユーザーIDと一致しないときにエラー文を表示したり、別ページにリダイレクトさせようとしたができなかった。if~else..の記述に問題があると思われるが、現状原因不明のまま。今後改善したい。

0
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
0
0