Filament Socialite 项目教程
1. 项目目录结构及介绍
Filament Socialite 项目的目录结构如下:
filament-socialite/
├── app/
│ ├── Http/
│ │ └── Controllers/
│ │ └── SocialiteController.php
│ └── Providers/
│ └── Filament/
│ └── AdminPanelProvider.php
├── config/
│ └── services.php
├── database/
│ └── migrations/
│ └── XXXX_XX_XX_XXXXXX_add_google_id_column_to_users_table.php
├── resources/
│ └── views/
│ └── auth/
│ └── socialite/
│ └── google.blade.php
├── routes/
│ └── web.php
├── src/
│ ├── FilamentSocialitePlugin.php
│ └── ...
├── tests/
│ └── ...
├── .editorconfig
├── .gitattributes
├── .gitignore
├── composer.json
├── phpunit.xml
├── README.md
└── ...
目录结构介绍
- app/: 包含应用程序的核心代码,如控制器、服务提供者等。
- Http/Controllers/: 存放控制器文件,如
SocialiteController.php
。 - Providers/Filament/: 存放服务提供者文件,如
AdminPanelProvider.php
。
- Http/Controllers/: 存放控制器文件,如
- config/: 存放配置文件,如
services.php
。 - database/migrations/: 存放数据库迁移文件,如
add_google_id_column_to_users_table.php
。 - resources/views/: 存放视图文件,如
google.blade.php
。 - routes/: 存放路由文件,如
web.php
。 - src/: 存放项目的主要源代码,如插件类
FilamentSocialitePlugin.php
。 - tests/: 存放测试文件。
- .editorconfig: 编辑器配置文件。
- .gitattributes: Git 属性配置文件。
- .gitignore: Git 忽略文件配置。
- composer.json: Composer 依赖管理文件。
- phpunit.xml: PHPUnit 配置文件。
- README.md: 项目说明文件。
2. 项目的启动文件介绍
app/Http/Controllers/SocialiteController.php
该文件是处理 OAuth 登录流程的控制器。主要功能包括:
redirect()
: 重定向用户到 OAuth 提供者的登录页面。callback()
: 处理 OAuth 提供者的回调,验证用户并登录。
app/Providers/Filament/AdminPanelProvider.php
该文件是 Filament 面板的服务提供者,用于注册插件和配置面板。主要功能包括:
- 注册
FilamentSocialitePlugin
插件。 - 配置 OAuth 提供者的相关设置。
3. 项目的配置文件介绍
config/services.php
该文件用于配置 OAuth 提供者的相关信息,如客户端 ID、客户端密钥等。示例配置如下:
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => '/auth/google/callback',
]
.env
该文件用于存储环境变量,如 OAuth 提供者的客户端 ID 和客户端密钥。示例配置如下:
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
routes/web.php
该文件用于定义应用程序的路由。示例配置如下:
use App\Http\Controllers\SocialiteController;
Route::get('/auth/{provider}/redirect', [SocialiteController::class, 'redirect'])->name('socialite.redirect');
Route::get('/auth/{provider}/callback', [SocialiteController::class, 'callback'])->name('socialite.callback');
通过以上配置,项目可以实现 OAuth 登录功能,并将其集成到 Filament 面板中。