singingfox / o365auth
此包的最新版本(0.1.1)没有可用的许可证信息。
0.1.1
2018-09-14 22:35 UTC
Requires
- league/oauth2-client: ^2.3
- microsoft/microsoft-graph: ^1.3
This package is auto-updated.
Last update: 2024-09-16 03:18:08 UTC
README
此包将Office 365身份验证添加到Laravel应用程序中。
该包主要基于来自microsoftgraph/php-connect-sample的程序逻辑,但旨在更容易与Laravel 5集成,并利用更多的Laravel原生功能。
预期行为
- 失败的Office 365账户认证将不被允许访问 -- 500错误
- 成功的Office 365账户认证,但不属于指定的域,将不被允许访问 -- 404错误
- 在指定的域上的Office 365账户成功认证后,用户将被重定向到前一个页面或网站根URL。
- 如果成功认证的用户不在系统中,用户将被添加
- 新用户或现有用户,如果成功认证,将能够绕过电子邮件验证(验证标志将手动设置)
安装和基本配置
使用Composer安装包
(注意:packagist尚未更新,以下可能无法工作)
首先,在Laravel应用程序根目录下运行composer require singingfox/o365auth。
将以下内容添加到composer.json
Singingfox\\O365Auth\\": "vendor/singingfox/o365auth/src
将以下内容添加到config/app.php
Singingfox\O365Auth\O365AuthServiceProvider::class,
运行
composer dump-autoload
或者,将以下内容添加到composer.json,然后运行composer update
"required": [
...
"singingfox/o365auth": "*"
],
依赖项
安装此包时,以下包及其依赖项也将被拉入。
"league/oauth2-client": "^2.3.*",
"microsoft/microsoft-graph": "^1.3.*"
配置
在Laravel .env中需要的Office 365参数
将以下内容添加到.env文件
O365_DOMAIN=ALLOWED-EMAIL-DOMAIN-NAME
O365_CLIENT_ID=YOUR-APPLICATION-ID-OR-CLIENT-ID-IN-CREATED-MICROSOFT-APPLICATION
O365_CLIENT_SECRET=YOUR-CLIENT-SECRETE-OR-CLIENT-PASSWORD-IN-CREATED-MICROSOFT-APPLICATION
# This needs to be the full URL (https)
O365_REDIRECT_URL=YOUR-REDIRECT-URL-IN-CREATED-MICROSOFT-APPLICATION
如果没有指定,成功认证将尝试将应用程序重定向到认证之前的URL,或者回退到网站根"/"。
显示特定错误
添加一个新的视图resources/views/errors/500.blade.php。内容可以是这样的
<h1>{{ $exception->getMessage() }}</h1>
这是可选的,但如果完成,则可以从此包显示特定的错误消息。否则,将显示以下通用错误消息
哎呀,好像出错了。
认证后要做什么
此时,内置的程序逻辑尝试
以下是在成功认证后可以执行的一些示例
- 检索存储在会话中的
access_token - 初始化一个
Graph对象,并将其分配给它 - 现在我们应该能够调用各种Graph API端点并执行我们需要的任何操作
- 可选的,可以在Laravel应用程序根目录下的.env中指定
O365_AFTER_AUTH_URL,然后成功认证过程将随后执行一些即时操作,例如本地设置认证用户等。以下示例路由并不真正执行此操作。它只说明了如何获取一些用户信息--电子邮件。
Route::get("/o365-user/email", function () { if (session_status() == PHP_SESSION_NONE) session_start(); $graph = new \Microsoft\Graph\Graph(); $graph->setAccessToken($_SESSION['access_token']); $me = $graph->createRequest("get", "/me") ->setReturnType(\Microsoft\Graph\Model\User::class) ->execute(); return $me->getMail(); });
此认证过程还可以用于注册允许访问的新用户。