用web3钱包注册和登录flarum论坛,免去繁琐的注册和登录输入密码环节,且无需记住密码
  • PHP 58.5%
  • JavaScript 40.1%
  • Less 1.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-12 20:47:19 +08:00
js 版本回滚 2026-06-23 20:41:49 +08:00
migrations feat: 增加 users 表 wallet_address 迁移脚本并升级 Controller 查询逻辑 2026-06-22 18:41:51 +08:00
resources 管理面板提示语修改 2026-06-23 16:32:42 +08:00
src 自定义签名明文集成到设置面板 2026-06-23 18:17:26 +08:00
.gitignore feat: 初始骨架,LogInButtons挂载点验证版(按钮onclick仅打印日志,未连签名逻辑) 2026-06-22 16:00:16 +08:00
composer.json 增加扩展管理面板中文语言包内容 2026-06-23 13:33:57 +08:00
extend.php 挂载后端路由 2026-06-23 17:52:47 +08:00
LICENSE 添加新文件 2026-06-22 18:24:41 +08:00
package-lock.json Initial commit 2026-06-22 15:54:47 +08:00
README.md 编辑README.md 2026-09-12 20:47:19 +08:00

Wallet Login

Flarum Extension Status: Alpha License: MIT

一个为 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。
    • 后端实现严格的账号碰撞检测与安全拦截,防止同一钱包被恶意绑定多个账号。
  • 钱包用户换绑机制:允许纯 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

开源协议

Gitlab