joey_stowe / ms-graph-api
Laravel MS Graph API
v1.0.2
2024-09-25 22:38 UTC
Requires
- php: ^8.1
- laravel/socialite: ^5.11
- socialiteproviders/microsoft-azure: ^5.1
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-25 22:39:09 UTC
README
此插件添加了调用 MS Graph API 的辅助方法,并安装了中间件/路由以实现 MS 认证
安装
您可以通过 composer 安装此包
composer require joeystowe/ms-graph-api:^1.0
使用
SSO 认证
插件安装了一个中间件('ms-auth')和 2 个路由(/auth/callback 和 /logout)。要使用认证保护路由,您必须将中间件应用于所需的路由并设置您的环境变量
应用中间件示例
Route::get('/', function () { return view('welcome'); })->middleware('ms-auth');
或使用中间件组
Route::middleware('ms-auth')->group(function () { Route::get('/admin/dashboard', 'AdminController@dashboard'); });
注意
您不能将中间件全局添加或添加到 web 组,因为 auth 回调方法需要公开访问
设置您的 .env 变量
// services.php ... 'azure' => [ 'client_id' => env('AZURE_CLIENT_ID'), 'client_secret' => env('AZURE_CLIENT_SECRET'), 'tenant' => env('AZURE_TENANT_ID'), 'redirect' => env('AZURE_REDIRECT_URI'), ], ...
// .env ... AZURE_CLIENT_ID=<YOUR CLIENT ID> AZURE_CLIENT_SECRET=<YOUR CLIENT SECRET> AZURE_REDIRECT_URI=https://:8080/auth/callback AZURE_TENANT_ID=<YOUR TENANT ID> ...
访问用户
ms-auth 中间件设置了以下 作用域 会话值
session()->put('ms:user', (object)$user); session()->put('ms:username', $user['bannerUsername']); session()->put('ms:email', $user['email']); session()->put('ms:principalName', $user['principalName']); session()->put('ms:id', $user['id']); session()->put('ms:session-token', $user['token']);
您可以直接引用这些值,也可以使用 LoggedInUser 辅助类
// Returns an object with the following properties set Joeystowe\MsGraphApi\LoggedInUser::user(); { "id" => "1111-2222-33333-44444" //ms user id "name" => "John Doe" //Full Name "email" => "john.doe@eng.ua.edu" "principalName" => "jdoe@ua.edu" "bannerUsername" => "jdoe" "token" => "1111-2222-3333-4444" //ms session token } //Fetch users properties as an array Joeystowe\MsGraphApi\LoggedInUser::userArray(); //Fetch users properties as a pre-filled User model Joeystowe\MsGraphApi\LoggedInUser::userModel(); //Fetch a single user attribute (throws exception is property is not found) Joeystowe\MsGraphApi\LoggedInUser::userAttribute('principalName') //returns "jdoe@ua.edu"
注销
简单点击 '/logout' 路由即可注销用户。从 MS 注销后,用户将被重定向到 '/postLogout' 页面。请确保正确设置 APP_URL,以便 "重新登录" url 正确工作。
您还需要发布 postLogout 页面的资产,以便其完全功能
php artisan vendor:publish --tag=assets --ansi --force
调用 Graph API
此插件还提供了调用 MS graph API 的辅助方法
已登录用户方法
组
$user = Joeystowe\MsGraphApi\LoggedInUser::user(); //resolve instance of current user API $graphApi = app(Joeystowe\MsGraphApi\MsGraphCurrentUserApi::class, ['token' => $user->token]); //Get all user's groups, returns array of groups $graphApi->groups() //Check if a user is in a specific group, returns boolean $graphApi->inGroup(groupId: $groupIdToCheck)
变更日志
请参阅 变更日志 了解最近更改的信息。
鸣谢
许可
MIT 许可证(MIT)。请参阅 许可文件 了解更多信息。