Laravel шифрование и отображение - PullRequest
0 голосов
/ 20 мая 2019

У меня есть объект с именем Secret, в котором я хочу зашифровать два поля 'secret_title' и 'secret_text'.Когда пользователь входит в систему, я хочу отобразить список своих секретов в таблице.Я использую сеттеры и геттеры в классе Secret для шифрования и дешифрования информации, однако, когда я иду печатать secret_title и secret_text в представлении, оно все еще зашифровано.Вот мой объект:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Contracts\Encryption;

class Secret extends Model
{
    protected $fillable = [
        'user_id',
        'secret_title',
        'secret_text',
  ];

  public function getSecretTitleAttribute()
  {
    return Crypt::decrypt($this->attributes['secret_title']);
  }

  public function getSecretTextAttribute()
  {
    return Crypt::decrypt($this->attributes['secret_text']);
  }

  public function setSecretTitleAttribute($value)
  {
    $this->attributes['secret_title'] = Crypt::encrypt($value);
  }

  public function setSecretTextAttribute($value)
  {
    $this->attributes['secret_text'] = Crypt::encrypt($value);
  }

}

В контроллере я использую:

public function showUserSecrets()
    {
        $user_id = Auth::id();
        $secrets = DB::table('secrets')->where('user_id', $user_id)->get();
        return view('secret.show', compact('secrets'));
    }

И, на мой взгляд, у меня есть:

    @foreach ($secrets as $secret)
     <tr>
         <td>{{ $secret->id }}</td>
         <td>{{ $secret->secret_title }}</td>
         <td>{{ $secret->created_at }}</td>
         <td><a href="{{ route('secret.show', $secret->id) }}" class="button">View</a></td>
    </tr>
   @endforeach

1 Ответ

0 голосов
/ 20 мая 2019

Результаты не загружаются в модель Secret, поэтому атрибуты дешифрования никогда не используются.

Заменить:

$secrets = DB::table('secrets')->where('user_id', $user_id)->get();

На:

use App\Secret;

// ...

$secrets = Secret::where('user_id', $user_id)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...