Encrypt - Decrypt
[Finalizado Pelo Aluno]
Opa Professor, boa tarde!
Têm alguma aula sua sobre Encrypt e Decrypt?.
Preciso encryptar um field CPF, e fazer um decrypt.
A doc é bem resumida, e não encontrei muito na net.
Se tiver um jeito de fazer via model/request e depois decryptar no resource.
Meu controller:
Model:
Request:
Resource:
Grato.
Olá, Jean!
Tudo bem?
Você pode combinar 4 recursos.
1) Crypt para criptografar os dados:
// use Illuminate\Support\Facades\Crypt;
$encryptedValue = Crypt::encryptString($value);
2) O mesmo Crypt para descriptografar:
// use Illuminate\Contracts\Encryption\DecryptException;
try {
$decrypted = Crypt::decryptString($encryptedValue);
} catch (DecryptException $e) {
//
}
3) Você pode usar mutator para criprografar os dados antes de persistir no banco:
https://laravel.com/docs/9.x/eloquent-mutators#defining-a-mutator
4) E um Acessor para descriptografar quando recuperar do banco:
https://laravel.com/docs/9.x/eloquent-mutators#defining-an-accessor
Se tiver dúvidas em como usar qualquer um, me retorna que te ajudo amigo.
Olá professor, bom dia!
Obrigado pela dica.
Consegui fazer a inclusão corretamente no banco e fazer o decrypt também no PeopleList.vue, portanto ao tentar fazer no PeopleEdit.vue, eu tenho o seguinte erro:
the payload is invalid decrypt / Illuminate \ Encryption \ DecryptException Invalid data.
Pesquisando encontrei que poderia ser o tipo do meu campo, que é string (oracle)varchar2(1000), alterei para um longText que é um CLOB, no clob ao inserir já aparece o erro:
message: "Error Code : 932\r\nError Message : ORA-00932: inconsistent datatypes
Model:
Migrations:
Resource:
Notei que isso ocorre apenas no metodo show, passando apenas o id, pois o metodo index que retorna todos, passa normalmente.
Meu controller metodo Show:
Olá professor, consegui fazer funcionar.
O que estou preso é na situação da validação, como que eu vou validar no request?.
Boa amigo.
Como os dados estão criptografados no banco, você vai precisar criar uma validação personalizada, para pegar o value da request, criptografar e validar com o que já existe no banco.
https://academy.especializati.com.br/aula/criar-validacao-personalizada-no-laravel-tenant-unique
Olá professor, bom dia!
Estou com um problema na hora do update, por algum motivo ele não resolve a situação da crypt.
UpdateRequest
E qual o valor dessa variável $value?
Porque se já estiver retornando o valor criptografado, ao tentar criptografar novamente, é onde acontece a exception.
Debuga ae:
public function setCpfAttribute($value)
{
dd($value);
$this->attributes['cpf'] = Crypt::encrypt($value);
}
Obrigado Professor.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!