nihilsen/keypad

使用 Blade 组件和原生 Web Crypto API 为 Laravel 提供客户端加密框架。

v0.4.0 2023-04-07 04:21 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Keypad 是一个 Laravel 扩展包,旨在简化将客户端加密和解密功能添加到 Laravel 应用程序中。

Keypad 提供了一系列响应式的 Blade 组件,可以插入到现有的认证表单中。

底层,Keypad 使用浏览器原生的 Web Crypto API

安装

您可以通过 composer 安装此包

composer require nihilsen/keypad

您可以使用以下命令运行迁移

php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="keypad-config"

这是发布配置文件的内容

https://github.com/nihilsen/keypad/blob/14e862c555354edbf36fa851c09a167114930a98/config/keypad.php#L3-L23

组件和用法

登录: <x-keypad::login>

<form method="POST" action="/login/">
    {{ -- CSRF token -- }}
    @csrf
    
    {{ -- email field -- }}
    <input type="email" name="email_field" placeholder="email" />
    
    {{ -- password field -- }}
    <input type="password" name="password_field" placeholder="password" />
    
    {{ -- Keypad "login" component -- }}
    <x-keypad::login password="password_field" />
    
    {{ -- other form elements, submit button, etc ... -- }}
</form>

注册: <x-keypad::register>

<form method="POST" action="/register/">
    {{ -- CSRF token -- }}
    @csrf
    
    {{ -- email field -- }}
    <input type="email" name="email_field" placeholder="email" />
    
    {{ -- password field -- }}
    <input type="password" name="password_field" placeholder="password" />
    
    {{ -- confirm password field -- }}
    <input type="password" name="confirm_password_field" placeholder="confirm password" />
    
    {{ -- Keypad "register" component -- }}
    <x-keypad::register password="password_field" confirmation="confirm_password_field" />
    
    {{ -- other form elements, submit button, etc ... -- }}
</form>

加密: <x-keypad::encrypt>

<form method="POST" action="/send_message/">
    {{ -- CSRF token -- }}
    @csrf
    
    {{ -- plaintext message field -- }}
    <input type="text" name="secret_message" placeholder="Enter your message" />
    
    {{ -- get recipient keypad -- }}
    @php
        $recipient = User::find($__GET['recipient_id']);
        $keypad = $recipient->keypad;
    @endphp
    
    {{ -- Keypad "encrypt" component -- }}
    <x-keypad::encrypt target="secret_message" :$keypad />
    
    {{ -- other form elements, submit button, etc ... -- }}
</form>

解密: <x-keypad::decrypt>

<x-keypad::decrypt>{{ $message->secret_message }}</x-keypad::decrypt>

变更日志

请参阅 CHANGELOG 了解最近的更改信息。

路线图

  • <x-keypad::login />
  • <x-keypad::register />
  • <x-keypad::encrypt />
  • <x-keypad::decrypt />
  • <x-keypad::hash />
  • <x-keypad::change-password />
  • <x-keypad::recover />

贡献

  • 欢迎提交拉取请求、错误报告和功能请求。

鸣谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。