mirror of
https://gitlab.com/guomengyao/flarum-wallet-login.git
synced 2026-10-12 23:21:40 +08:00
用web3钱包注册和登录flarum论坛,免去繁琐的注册和登录输入密码环节,且无需记住密码
- PHP 58.5%
- JavaScript 40.1%
- Less 1.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| js | ||
| migrations | ||
| resources | ||
| src | ||
| .gitignore | ||
| composer.json | ||
| extend.php | ||
| LICENSE | ||
| package-lock.json | ||
| README.md | ||
Wallet Login
一个为 Flarum 论坛提供 Web3 钱包去中心化身份(DID)登录支持的独立扩展。
目前处于开发初期(Alpha 阶段),正在构建Lens社交协议用户资料。
核心特性与架构设计
本扩展完全独立运行,不与 fof/oauth冲突,能在前端 UI(LogInButtons 挂载点和 SettingsPage 设置页)上与其完美共存、视觉统一。
设计上支持多链架构,计划支持以下身份验证方式:
- **EVM 兼容链 **:基于 ECDSA secp256k1 和 EIP-191 / EIP-4361 消息签名机制,支持 MetaMask 等以太坊生态钱包。支持
wallet_requestPermissions唤醒多账户丝滑切换。 - Lens Protocol:在 EVM 签名基础上,额外查询 Lens Profile 填充论坛用户社交资料。
功能与原理
- 前端 UI 挂载:登录模态框扩展,将"钱包登录"按钮无缝注入 Flarum 核心组件。
- 后端环境与依赖配置:采用现代且符合标准的 Web3 加密库 (
simplito/elliptic-php与kornrunner/keccak)。 - 前端多账户签名交互:强制唤醒
window.ethereum账户选择器,彻底解决 MetaMask 账户切换痛点,安全发起personal_sign。 - 后端密码学验签:接收签名与原文,通过 ECDSA 椭圆曲线反向恢复公钥地址进行高强度比对验证。
- 纯 Web3 用户注册/登录系统:自动查验钱包地址,静默生成占位邮箱与安全密码,利用 Flarum 核心逻辑下发 Session 完成无缝登录。
- Web2/Web3 混合账户绑定系统:
- 编写 Migration 安全拓展数据库
users表,新增wallet_address字段。 - 通过
UserSerializer建立前后端数据桥梁。 - Flarum 设置页无缝注入"绑定 Web3 钱包"与状态显示 UI。
- 后端实现严格的账号碰撞检测与安全拦截,防止同一钱包被恶意绑定多个账号。
- 编写 Migration 安全拓展数据库
- 钱包用户换绑机制:允许纯 Web3 注册用户无密码换绑真实邮箱,基于 ECDSA 签名授权绕过传统密码验证,全面激活论坛原生邮件与通知生态。
安装与测试 (仅限开发者)
由于本项目尚未发布到 Packagist,目前需要通过 Composer 配置自定义 VCS 仓库进行安装:
1. 配置 Composer 仓库源
在 Flarum 根目录下执行:
composer config repositories.flarum-wallet-login vcs https://gitlab.com/guomengyao/flarum-wallet-login.git
2. 安装扩展
由于项目主分支为 main,需要拉取对应的开发分支代码:
composer require flarum/wallet-login:dev-main
3. 清理缓存并生效
php flarum migrate
php flarum cache:clear