我有這些2表與多對多關係連接使用聯結表。我的想法是,我可以獲取用戶數據,使用戶成爲日記數據中的作者,並且迄今爲止工作正常。創建身份驗證laravel 5
用戶表:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->integer('phone')->nullable();
$table->string('address')->nullable();
$table->string('password');
$table->rememberToken();
$table->enum('level', ['admin', 'author']);
$table->timestamps();
});
}
期刊表:
public function up()
{
Schema::create('journal', function (Blueprint $table) {
$table->increments('id');
$table->string('title', 255);
$table->text('abstract');
$table->text('file');
$table->integer('id_edition')->unsigned();
$table->timestamps();
});
}
結表:
public function up()
{
Schema::create('penulis', function (Blueprint $table) {
// Create tabel penulis
$table->integer('id_user')->unsigned()->index();
$table->integer('id_journal')->unsigned()->index();
$table->timestamps();
// Set PK
$table->primary(['id_user', 'id_journal']);
// Set FK penulis --- user
$table->foreign('id_user')
->references('id')
->on('users')
->onDelete('cascade')
->onUpdate('cascade');
// Set FK penulis --- journal
$table->foreign('id_journal')
->references('id')
->on('journal')
->onDelete('cascade')
->onUpdate('cascade');
});
}
現在我有這樣的觀點,即顯示日誌數據與按鈕一起編輯或刪除它。我想要做的是隻有那些有權作爲日記的作者纔有權訪問這些按鈕的用戶。我如何製作它?下面是查看代碼:
<tbody>
<?php foreach ($journal_list as $journal): ?>
<tr>
<td style=""><a href="{{ url('journal/' . $journal->id) }}">{{ $journal->title }}</a></td>
@if (Auth::check())
<td style="width: 130px; overflow: hidden;">
<div class="box-button">
{{ link_to('journal/' . $journal->id . '/edit?edition=' . $edition->id, 'Edit', ['class' => 'btn btn-warning btn-sm']) }}
</div>
<div class="box-button">
{!! Form::open(['method' => 'DELETE', 'action' => ['[email protected]', $journal->id]]) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-danger btn-sm']) !!}
{!! Form::close() !!}
</div>
</td>
@endif
</tr>
<?php endforeach ?>
</tbody>
對不起,我的英語不好,如果我的問題是愚蠢的。謝謝!
打我也是大聲笑 – rchatburn
通過使用這個,我必須創建一個新的中間件?如果是的話,我試過這個:public function handle($ request,Closure $ next,Journal $ journal){Gate :: allow('editjournal',$ journal)){ return $ next($ request); } else { abort(403,「您沒有更新此日誌的權限」); } }給出了這個錯誤:參數3傳遞給App \ Http \ Middleware \ CheckAuthor :: handle()必須是App \ Journal的一個實例,沒有給出, –
@AriandoMiller中間件是防止惡意用戶訪問資源(例如:刪除日誌),而沒有適當的訪問級別。您需要將'$ journal_id'從您的路由傳遞到中間件,而不是檢索相應的'Journal'。我編輯了答案 – Wistar