碎片/火授权

神话:Auth Firebase 扩展程序用于 CodeIgniter 4

v1.0.2 2020-06-01 18:06 UTC

README

神话:Auth Firebase 扩展程序用于 CodeIgniter 4

快速开始

  1. 使用 Composer 安装: > composer require tatter/fireauth
  2. 将凭据添加到您的环境配置文件 .env
  3. 设置神话:Auth 登录视图: 'login' => 'Tatter\Fireauth\Views\login'

描述

本模块扩展了 Myth:Auth,允许通过替换默认登录视图为针对您的 Firebase 应用配置的视图,从 Firebase Authentication 进行登录。

安装

通过 Composer 轻松安装,以利用 CodeIgniter 4 的自动加载功能,并始终保持最新状态

  • > composer require tatter/fireauth

或者,通过下载源文件并将其目录添加到 app/Config/Autoload.php 中来手动安装。

配置

可以通过扩展其配置文件来改变库的默认行为。将 examples/Fireauth.php 复制到 app/Config/ 中,并按照注释中的说明进行操作。如果在 app/Config 中找不到配置文件,库将使用其自身的。

凭据

登录视图使用您的 Firebase 应用的凭据连接到您的项目。您必须在项目根目录的 .env 文件中提供公共 API 密钥。将以下内容添加到文件底部

#--------------------------------------------------------------------
# FIREBASE
#--------------------------------------------------------------------

# firebase.apiKey = YOUR_API_KEY_HERE

在开始使用 UI 之前,您必须确保配置参数已加载且 Firebase 实例已初始化。例如,您的布局可能包括以下内容

	<!-- Firebase JS SDK -->
	<script src="https://www.gstatic.com/firebasejs/7.6.1/firebase-app.js"></script>

	<!-- Firebase SDK config -->
	<script src="<?= base_url('credentials/firebase.js') ?>"></script>

	<script>
		// Initialize Firebase
		firebase.initializeApp(firebaseConfig);
	</script>

有关获取配置文件的更多信息,请参阅 Firebase 项目支持

使用

此库通过 Myth:Auth 的 LocalAuthenticator 类工作,显示登录并提供检查已登录用户访问权限的服务。由于 Firebase 处理实际的认证,您首先需要在那里配置您的项目,然后使用此模块的配置文件来匹配所需的行为。

Myth:Auth 定义了一个名为 "login" 的路由,该路由将显示 Firebase 表单。一旦 Firebase 完成认证,它将完成用户信息发送到回调,以验证账户并登录用户。

有关认证的更多信息,请参阅 Myth:Auth 的 认证文档

示例登录

这是您从 Firebase 的 authResult 中期望的内容的示例,该内容由回调用于处理登录

{
	"user":  {
		"uid": "fnBQhvsaYT5k5tXbZIGMPZiyFac1",
		"displayName": "Joe User",
		"photoURL": null,
		"email": "joe@example.com",
		"emailVerified": false,
		"phoneNumber": null,
		"isAnonymous": false,
		"tenantId": null,
		"providerData": [
			{
				"uid": "joe@example.com",
				"displayName": "Joe User",
				"photoURL": null,
				"email": "joe@example.com",
				"phoneNumber": null,
				"providerId": "password"
			}
		],
		"apiKey": "SyzCz2w8CGAIUyIlzaqHAiFC5WxIJ92T62G7wck",
		"appName": "[DEFAULT]",
		"authDomain": "yourproject.firebaseapp.com",
		"stsTokenManager": {
			"apiKey": "SyzCz2w8CGAIUyIlzaqHAiFC5WxIJ92T62G7wck",
			"refreshToken": "L0uLRAEu4Isq-IbtDruFNntMKz--YAHU8E5hl9QMZ5BMAAw78rJq1WuqOiZF8e4TrwVA5KjeEJWLJMjEN5J6QDbQMHOjX3dANo_Ep0o1WYc43m3XjtJXOocuKAO91K_HyUZ74Knd_AimqeLm-yA-vEugjet2nQwFKzKwVTMPdalBbz_83ZrjQ8Uj8kuxkRMTz00yxMa6Yfw07hojUXiZ-3Xg2oUScjKNrmCSYp-ncLpc9ri7eGPNao8",
			"accessToken": "eyJhbGzUyYjY0OTM0MjUzNGE2YjRhMDUxMjVkNzhmYmIiLCJ0eXAiOciOiJSUzI1NiIsImtpZCI6IjA0NjUxMTM5ZDg4NiJKV1QifQ.eyJuYW1lIjoiTWF0dGhldyBHYXRuZXIiLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZGVzdCIsImF1ZCI6I3QiLCJhdXRoX3RpbWUiOjES5jb20vbW9vbGF0aG9m1vb2xhdGhvbnRlcud1NzU0OTA5MzAiJmbmFZR01QWml5VDVrNXRYYlpJRmFjsInVzZXJfaWQiOQlFodnMxIiwic3ViIjoiZm5hWUdNUFppeVQ1azV0WGJaSUZhY0JRaHZzMSIsImlhdCI6MTU3NTQ5MDkzMCwiZXhwIjoxNTc1NDk0NTMwLCJlbWFpbCI6Im1nYXRuZXJAaWNsb3VkLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJtZ2F0bmVyQGljbG91ZC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJwYXNzd29yZCJ9fQ.HisMXtXhC6U2O3lSheF7mswOiosbdTMAIwiFXeELoy1Ak4CuFBwvkHmFKlnl9P8YRPjqFVaQ4ah2uYzhbo3L22ql9CQGz4GF4XRHGBijlYPS8EaF1HT8soYdyRv4SB5gW_OAzJy4fPnxsZVFur7AYFPturSPFWZAUA0CXP7rn0H4lxfI-Z90lTX9fBYpB9FFJo7zIOpppNINzCOtKB1w2K6kNsiMIwVxJCO52drS3xZkMwP-UAEReiG6iyv46J-T2j0Q0hmc9HrHzhHMM5JSdbTXPtcX81jD1mrmKdkF-AmlMIsCRrVlMfdEUBCzDTYV4EldpcDfI_g9kbakA8Em6g",
			"expirationTime": 1575494530086
		},
		"redirectEventId": null,
		"lastLoginAt": "1575490930053",
		"createdAt": "1575409918661"
	},
	"credential": null,
	"operationType": "signIn",
	"additionalUserInfo":  {
		"providerId": "password",
		"isNewUser": false
	}
}

您可以通过定义一个事件(在 app/Config/Events.php 中)来处理 user 对象的附加处理,该事件接收 firebase_new_user 触发器

Events::on('firebase_new_user', function($user)
{
	log_message('debug', 'New FireAuth user: ' . $user->email);
}