chatbox-inc/laravel-firebase 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

chatbox-inc/laravel-firebase

Composer 安装命令:

composer require chatbox-inc/laravel-firebase

包简介

README 文档

README

functions and scopes

構造 firebase-php をベースにLaravel 向けの Wrapper を付与しています。

https://firebase-php.readthedocs.io/en/stable/setup.html

kreait/laravel-firebase が json file ベースの認証をサポートしているのに対し、 こちらのライブラリでは、環境変数値での認証をサポートしています。

  • Firebase オブジェクトをコンテナに注入.
  • Firebase uid ベースの認証ドライバの実装.
  • unit test のための Auth Mock.

Injected Firebase Object

laravel-firebase では、 kreait/firebase-php を利用しています。

https://github.com/kreait/firebase-php

You can get Kreait\Firebase Object from DI Container.

You will put your firebase config on your config/services.php.

<?php
return [
    // ...
    'firebase' => [
        "type"=> "service_account",
        "project_id"=> env("FIREBASE_PROJECTID"),
        "private_key_id"=> env("FIREBASE_PRIVATEID"),
        "private_key"=> str_replace("\\n","\n",env("FIREBASE_PRIVATEKEY")),
        "client_email"=> env("FIREBASE_CLIENTEMAIL"),
        "client_id"=> env("FIREBASE_CLIENTID"),
        "auth_uri"=> "https://accounts.google.com/o/oauth2/auth",
        "token_uri"=> "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url"=> "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url"=> env("FIREBASE_X509CERTURL")
    ],
];

.env は以下のような構成になります。

FIREBASE_PROJECTID=
FIREBASE_PRIVATEID=
FIREBASE_PRIVATEKEY=
FIREBASE_CLIENTEMAIL=
FIREBASE_CLIENTID=
FIREBASE_X509CERTURL=

containered object also has alias name firebase. so you can recieve firebase object also like this.

/** @var \Kreait\Firebase $firebase */
$firebase = app("firebase");

FirebaseAuth

laravel-firebase provide Request Guard that is named firebase_idtoken.

With this guard, REST API will be written like below.

Route::group([
    "middleware" => [
        "auth:firebase_idtoken",
    ]
],function(){
    Route::post('/user', function(){
        $user = Auth::guard("firebase_idtoken")->user();
        //...
    });
});

In this guard, Auth::guard("firebase_idtoken") will return \Chatbox\Larabase\FirebaseUser that is subclass \Kreait\Firebase\Auth\UserRecord and implementation for Illuminate\Auth\Authenticatable.

FirebaseAuth Mock

TestFirebaseUser create mock firebase user.

With this, you can test your REST API without firebase setting.

<?php

namespace Tests\Feature;

use Chatbox\Larabase\Testing\TestFirebaseUser;
use Illuminate\Support\Str;
use Tests\TestCase;

class ProjectIdTest extends TestCase
{

    protected function setUp(): void
    {
        parent::setUp();
        if(!TestFirebaseUser::users()){
            $token = Str::random();
            $user = TestFirebaseUser::fake()->recordAs($token);
            // Store firebase user to database or ...
            $this->withHeader("Authorization", "Bearer $token");
        }else{
            TestFirebaseUser::remenber(function($token, $user){
                $this->withHeader("Authorization", "Bearer $token");
            });
        }
        config()->set("app.url","http://localhost/api/");
    }
}

TestFirebaseUser::fake() create firebase dummy user. Method recordAs will store the user with uid(you generate it!).

TestFirebaseUser::users() will return all stored users, and TestFirebaseUser::remenber will pop out each stored user to passed closure.

统计信息

  • 总下载量: 47
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2019-03-09

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固