krptonix/laravel-nostr-auth

使用 Nostr 浏览器扩展登录 Laravel 应用

v1.0 2024-06-20 07:19 UTC

This package is auto-updated.

Last update: 2024-09-20 07:55:42 UTC


README

GitHub contributors GitHub issues GitHub last commit (branch)

此包允许用户使用 Nostr 浏览器密钥管理扩展(例如 Alby)登录 Laravel 应用程序。它允许用户通过使用他们的私钥签名消息并发送签名和公钥以进行验证来进行身份验证。如果验证成功且用户未在 Laravel 应用程序中注册,则包将注册用户,将他们添加到用户表中,并使用相应的公钥。如果具有给定公钥的用户已注册,则将登录。

有关 Nostr 的更多信息:https://github.com/nostr-protocol/nostr

特性

  • 使用 Nostr 浏览器密钥管理扩展登录或注册
  • 自动使用公钥注册新用户
  • 默认邮箱设置为 '@nostr.io'
  • 默认名称设置为 'Nostr 用户'
  • 默认密码设置为随机整数的哈希值(非加密安全)
  • 您可以在 config/nostr-auth.php 中设置成功登录后用户要重定向的位置
  • 您可以在 NostrAuthController 中自定义用户注册详情
  • 如果需要,您可以禁用默认的通过电子邮件/密码进行身份验证

安装

要在 Laravel 项目中使用此包,建议安装身份验证入门套件,因为它们提供了许多其他功能。尽管此包可以在没有入门包的情况下与 Laravel 内置的身份验证服务一起使用,但您可能需要对其进行一些调整以适应您的需求。

使用 composer 安装包

$ composer require kriptonix/laravel-nostr-auth

如果您想自己测试/编写一些代码,请安装依赖项。

$ composer install

发布配置文件

$ php artisan vendor:publish --provider="Kriptonix\LaravelNostrAuth\LaravelNostrAuthServiceProvider" --tag="config"

发布迁移文件

$ php artisan vendor:publish --provider="Kriptonix\LaravelNostrAuth\LaravelNostrAuthServiceProvider" --tag="migrations"

运行迁移

$ php artisan migrate

将 'pubkey' 添加到 User 模型的 $fillable 属性

protected $fillable = [
        // ... other fields
        'pubkey'
    ];

@stack('scripts') 添加到您想要显示 "登录 Nostr" 按钮/链接的布局视图或静态 HTML 页面。

注意:为了使脚本工作,应使用 csrf_token。在静态 HTML 页面上实现登录按钮时,请将以下内容包含在相应的部分

<meta name="csrf-token" content="{{ csrf_token() }}">

添加登录按钮

<x-nostrauth::nostr-login-button />

当用户点击此按钮时,Nostr 浏览器扩展(例如 Alby)将弹出,以便用户可以确认并签署一个简单的消息事件。签署后,如果存在已签署消息的公钥用户,则包将进行身份验证并登录用户。如果用户不存在,则包将创建并登录用户。

自定义

如果您想更改登录按钮的 HTML,可以修改位于的视图组件

vendor/kriptonix/laravel-nostr-auth/resources/views/components/nostr-login-button.blade.php

用法

登录

用户可以通过点击 "使用 Nostr 登录" 按钮进行登录,这将使用他们的 Nostr 浏览器密钥管理扩展签署消息并发送签名和公钥以进行验证。

注册

如果用户尚未注册

  • 他们将以公钥进行注册
  • 电子邮件将设置为 @nostr.io
  • 名称将设置为 'Nostr 用户'
  • 密码将设置为随机整数的哈希值(非加密安全)
  • 您可以通过修改 NostrAuthController 处理密码安全和其他默认用户创建详情

禁用默认认证

如果您只想使用Nostr认证方法,您可以在Laravel应用程序中禁用默认的邮箱/密码认证。

贡献

欢迎贡献!请随时提交一个pull请求。

许可证

此软件包是开源软件,根据MIT许可证授权。

社区

如果您需要任何帮助,请通过Nostr npub1ap9fscjl92zclacmaa0nneurr5js85ymuem6ew0ftu8f6eztvpds8qchga与我联系。

资金支持

如果您想通过捐赠支持此项目,可以将一些lightning sats发送到plebeian@getalby.com

维护者

  • @kriptonix npub1ap9fscjl92zclacmaa0nneurr5js85ymuem6ew0ftu8f6eztvpds8qchga(原作者)