joey_stowe/ms-graph-api

Laravel MS Graph API

v1.0.2 2024-09-25 22:38 UTC

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)。请参阅 许可文件 了解更多信息。