coloredcow / laravel-gsuite

一个用于设置 Google OAuth 和 GSuite Admin SDK 的 Laravel 扩展包

v1.0.0 2018-08-11 05:54 UTC

This package is auto-updated.

Last update: 2024-09-27 08:28:50 UTC


README

一个用于设置 Google OAuth 和 GSuite Admin SDK 的 Laravel 扩展包。

安装

您可以使用 composer 安装此包

composer require coloredcow/laravel-gsuite

发布配置

php artisan vendor:publish --provider="ColoredCow\LaravelGSuite\Providers\GSuiteServiceProvider" --tag="config"

设置 Google Oauth

更新您的 .env 文件,包含 Google OAuth 2.0 凭据

GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_CLIENT_CALLBACK=your_google_callback_url

注意:如果您希望限制用户访问您组织的域名,请将以下内容添加到您的 .env 文件中

GOOGLE_CLIENT_HD=your_domain

在您的 app/Http/Controllers/Auth/LoginController.php 文件中,使用此包的 trait GSuiteLogin

<?php

use ColoredCow\LaravelGSuite\Traits\GSuiteLogin;

class LoginController extends Controller
{

    use AuthenticatesUsers, GSuiteLogin;

    // ...

就是这样!前往 your_app_url/auth/google 并使用您的 Google 邮箱登录。

设置 GSuite Admin 服务

在您的 .env 文件中,添加以下凭据

GOOGLE_APPLICATION_CREDENTIALS=your_gsuite_service_account_crendentials
GOOGLE_SERVICE_ACCOUNT_IMPERSONATE=your_gsuite_admin_email

要了解更多关于服务帐户以及获取帐户的步骤,请访问 官方 Google 文档

注意:确保在创建项目的服务帐户时启用 域范围委托

现在,您可以使用此包提供的各种服务。例如,如果您想获取用户详情,您可以使用 GSuiteUserService 门面。

use ColoredCow\LaravelGSuite\Facades\GSuiteUserService;

// ...

$user = GSuiteUserService::fetch('jon@mycompany.com');

echo $user->getName(); // Jon Snow
echo $user->getJoinedOn(); // 2016-12-26 12:15:00
echo $user->getDesignation(); // Lord Commander

启用多租户

如果您的应用程序支持多租户,则需要执行一些额外的步骤。

在您的 config/gsuite.php 中将多租户设置为 true

'multitenancy' => true,

租户连接的默认值为 tenant。如果您使用不同的名称作为租户连接,请更新 config/gsuite.php

'connections' => [
    'tenant' => 'tenant_connection',
]

由于您将拥有多个租户,并且您可能需要为每个租户不同的 GSuite API 凭据,因此此包将在每个租户数据库中创建一个表。此表将存储所需的 GSuite 凭据。

使用以下命令发布特定于租户的迁移。这将迁移发布到 database/migrations/tenant 目录。

php artisan vendor:publish --provider="ColoredCow\LaravelGSuite\Providers\GSuiteServiceProvider" --tag="multitenancy"

现在,创建您的租户数据库。

注意:如果您已经存在租户,可能需要重新创建这些租户数据库。如果不小心操作,可能会丢失一些数据。

在每个租户数据库中,您需要定义应用程序凭据和服务帐户模拟用户。您可以在多租户实现中添加一个种子器,以便在创建新的租户数据库时运行。

您的 gsuite_configurations 表应如下所示

更多多租户配置

如果您希望为 gsuite_configurations 表使用不同的名称,请更新 config/gsuite.php

'tables' => [
    'tenant' => [
        'gsuite-configurations' => 'your_gsuite_table_name',
    ]
]

如果您希望覆盖包的 GSuiteConfiguration 模型,创建一个自定义模型,它必须实现 ColoredCow\LaravelGSuite\Contracts\Tenant\GSuiteConfiguration 协议。然后,更新您的 config/gsuite.php 并用新模型替换默认模型。

'models' => [
    'tenant' => [
        'gsuite-configuration' => App\YourModelName::class
    ]
]