Различные роли пользователя отправляются на разные страницы профиля. Как я могу позволить им видеть друг друга - PullRequest
0 голосов
/ 02 мая 2018

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

В настоящее время навигация по страницам осуществляется через идентификатор в URL. например / acount / id

Это контроллер, который определяет, куда отправить пользователя.

public function index($id){

    $user = Auth::user();

    //Allows landlords to see their relationship with tenants, and vice versa.
    $landlordTenancies = Tenancy::all()->where('landlord_id', Auth::id());
    $tenantTenancies = Tenancy::all()->where('tenant_id', Auth::id());

    //Sends different use types to relevant view

    if($user->userType == "Landlord"){
      return view('/pages/account/landlord', compact('user', 'landlordTenancies'));
    }

    else{
      return view('/pages/account/tenant', compact('user', 'tenantTenancies'));
    }
  }

Это страница просмотра арендатора.

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-12">


                {{-- This blocks a tenant adding themselves --}}
                {{-- Shows add button, if tenancy model is empty. Also when no relationship established. --}}

            @if(Auth::user()->id != $user->id)
                @if($tenancy == null || $tenantTenancies->accepted == 0 && $tenantTenancies->request_sent === 0)
                    <a href="/account/tenancy/{{$user->id}}/create" class="btn btn-primary">Start Tenancy</a>
                @endif
            @endif

                {{-- Only shows following buttons, if the current signed in user, is the relevant user. --}}
                {{-- Shows accept/reject if the request has been sent, but not accepted yet. --}}

            @foreach($tenantTenancies as $tenancy)
            <span class="text-muted">You have a request from</span><br>
            <span class="text-muted"><strong>Landlord Name: </strong>{{$tenancy->landlord_name}}</span><br>
            <span class="text-muted"><strong>Property Address: </strong>{{$tenancy->property_address}}</span><br>

            @if(Auth::user()->id == $user->id)
                @if($tenancy != null && $tenancy->accepted == 0 && $tenancy->request_sent == 1)
                    <form method="POST" action="/account/tenancy/{{$user->id}}/accept">
                        {{ csrf_field() }}
                        <input type="submit" class="btn btn-primary" value="Accept Request">
                    </form>

                    <form method="POST" action="/account/tenancy/{{$user->id}}/reject">
                        {{ csrf_field() }}
                        <input type="submit" class="btn btn-warning" value="Reject Request">
                    </form>

                    {{-- Allows the tenancy to be ended. --}}

                @elseif($tenancy != null && $tenancy->accepted == 1 && $tenancy->request_sent == 0)
                    <form method="POST" action="/account/tenancy/{{$user->id}}/end">
                        {{ csrf_field() }}
                        <input type="submit" class="btn btn-primary" value="End Tenancy">
                    </form>
                @endif
            @endif
            @endforeach
        </div>
        </div>
      </div>
@endsection

Арендодатель View

@section('content')
    <div class="container">


        <div class="row text-center d-flex flex-wrap">
            <div class="col-lg-12">
            @foreach($landlordTenancies as $tenancy)
                <span class="lead"><strong>Tenant Name: </strong>{{$tenancy->tenant_name}}</span><br>
                <span class="lead"><strong>Property Address: </strong>{{$tenancy->property_address}}</span><br>
            @endforeach
                <h3>Your Active Adverts</h3>
                <div class="row py-2">

                @foreach ($properties as $property)
                    <div class="col-md-4 mb-4">
                        <a href="/property/{{$property->id}}">
                            <img class="list-image img-fluid" src="{{$property->photo}}">
                        </a>
                        <p class="mt-2">{{$property->address .', '. $property->town .', '. $property->county}}</p>
                    </div>
                @endforeach
            </div> <!-- ./col -->
        </div> <!-- ./row -->
    </div>  <!-- ./container -->
@endsection

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

1 Ответ

0 голосов
/ 02 мая 2018

можно использовать Полицию или Гейтс, это интересно laravel https://laravel.com/docs/5.6/authorization

...