glance-project / authorization-service
CERN 授权服务 API 的抽象层
Requires
- php: ^8.2
- glance-project/cern-authentication: 1.0.0
- guzzlehttp/guzzle: ^6.0 || ^7.0
- nyholm/psr7: ^1.3
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- php-http/mock-client: ^1.4
- phpunit/phpunit: ^8.5
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.1
This package is auto-updated.
Last update: 2024-09-01 08:38:15 UTC
README
这是一个用于使用 CERN 授权服务 API 的 SDK。
安装
使用 Composer 安装
composer require glance-project/authorization-service
入门
要使用此库,您可能需要在 应用程序门户 上注册应用程序。如果您不知道这意味着什么,请参阅 CERN 授权服务文档
在您的应用程序注册后,您将使用 客户端 ID 和 客户端密钥。
用法
此库旨在通过多个提供者使用。
所有提供者都可以使用应用程序凭据或访问令牌创建。
// Example of $inProduction. Adapt for your needs!
$inProduction = getenv("ENVIRONMENT") === "PRODUCTION";
$groupProvider = GroupProvider::createWithAppCredentials($clientId, $clientSecret, $inProduction);
$identityProvider = IdentityProvider::createWithAccessToken("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUziJ9...", $inProduction);
GroupProvider
GroupProvider::findGroupByIdentifier()
通过标识符查找组。
如果组不存在,将抛出 GroupNotFoundException。
$group = $groupProvider->findGroupByIdentifier("fence-developers");
$group->identifier(); // "fence-developers"
$group->id()->toString(); // "08d771b2-78da-2fc0-fbd3-3816f92282c8"
GroupProvider::createStaticGroup()
创建静态组。只需标识符、显示名称和描述即可。
$group = $groupProvider->createStaticGroup(
"test-group", // Identifier (required)
"A test group", // Display name (required)
"This is a test group description", // Description (required)
GroupId::fromString("08d779a9-1e2c-72ad-52ff-45ff27e620c1"), // Administrators group (optional)
Category::test(), // Category (optional)
new DateTimeImmutable("2021-12-31"), // Expiration date (optional)
SelfSubscriptionPolicy::closed(), // Self subscription (optional)
PrivacyPolicy::groupAdministrators(), // Privacy policy (optional)
true // Approval required (optional)
);
GroupProvider::deleteGroup()
通过标识符删除组。
$groupProvider->deleteGroup("fence-developers");
GroupProvider::synchronizeMembers()
使用 身份 ID 定义组的组成。
不在给定 身份 ID 数组中的成员将被删除。
最后,只有通知的成员将是组的一部分。
$identityIds = $identityProvider->getIdsFromPersonIds([837034, 123456]);
$groupProvider->synchronizeMembers("fence-developers", $identityIds);
$members = $groupProvider->findMemberIdentities("fence-developers");
foreach ($members as $member) {
echo $member->personId(); . "\n"
}
// Output:
// 837034
// 123456
GroupProvider::addMembersToGroup()
在不改变整个组组成的情况下添加成员到组。
$identityIds = $identityProvider->getIdsFromPersonIds([837034, 123456]);
$groupProvider->addMembersToGroup("fence-developers", $identityIds);
GroupProvider::removeMembersFromGroup()
在不改变整个组组成的情况下从组中删除成员。
$identityIds = $identityProvider->getIdsFromPersonIds([ 837034 ]);
$groupProvider->removeMembersFromGroup("fence-developers", $identityIds);
GroupProvider::findMemberIdentities()
查找组内的成员。返回 Identity 对象的数组。
$members = $groupProvider->findMemberIdentities("fence-developers");
foreach ($members as $member) {
$member->personId();
$member->displayName();
}
GroupProvider::findMemberGroupsFromGroup()
如果没有匹配的 groupId 或方法失败,将抛出异常。
$groups = $groupProvider->findMemberGroupsFromGroup("59edf297-bd07-4000-904d-80cc6288004a");
foreach ($groups as $group) {
echo $group->toString() . "\n";
}
// Output:
// 59edf297-bd07-4000-904d-80cc6288004a
// dbcd6647-fd50-493e-9162-635f355794d4
GroupProvider::removeMemberGroupsFromGroup()
如果没有匹配的 groupId 或方法失败,将抛出异常。
$groupProvider->removeMemberGroupsFromGroup("59edf297-bd07-4000-904d-80cc6288004a");
GroupProvider::removeAllMembersFromGroup()
如果没有匹配的 groupId 或方法失败,将抛出异常。
$groupProvider->removeAllMembersFromGroup("59edf297-bd07-4000-904d-80cc6288004a");
GroupProvider::removeAllMemberGroupsFromGroup()
如果没有匹配的 groupId 或方法失败,将抛出异常。
$groupProvider->removeAllMemberGroupsFromGroup("59edf297-bd07-4000-904d-80cc6288004a");
GroupProvider::removeAllMembersAndAllGroupMembersFromGroup()
如果没有匹配的 groupId 或方法失败,将抛出异常。
$groupProvider->removeAllMembersAndAllGroupMembersFromGroup("59edf297-bd07-4000-904d-80cc6288004a");
IdentityProvider
IdentityProvider::getIdsFromPersonIds()
从给定的 人员 ID 获取 身份 ID。
如果无法获取身份 ID,则抛出 FailedToFindIdentityIdException。
如果您想获得只包含找到的 ID 的结果,请参阅 IdentityProvider::findIdsFromPersonIds()。
$ids = $identityProvider->getIdsFromPersonIds([837034, 823204]);
foreach ($ids as $id) {
echo $id->toString() . "\n";
}
// Output:
// 59edf297-bd07-4000-904d-80cc6288004a
// dbcd6647-fd50-493e-9162-635f355794d4
IdentityProvider::findIdsFromPersonIds()
从给定的 人员 ID 查找 身份 ID。
如果无法获取身份 ID,则跳过并只返回找到的 ID。
如果您想获得抛出异常的方法,请参阅 IdentityProvider::getIdsFromPersonIds()。
$ids = $identityProvider->findIdsFromPersonIds([837034, 123456]); // 123456 does not exist
foreach ($ids as $id) {
echo $id->toString() . "\n";
}
// Output:
// 59edf297-bd07-4000-904d-80cc6288004a
IdentityProvider::searchByName()
$identities = $identityProvider->searchByName("Mar");
foreach ($identities as $identity) {
echo $identity->displayName() . "\n";
}
// Output:
// Mario Gunter Simao
// Marcelo Teixeira dos Santos
IdentityProvider::findByPersonId()
如果没有匹配的 personId 或方法失败,则抛出异常。
$identity = $identityProvider->findByPersonId(837034);
echo $identity->displayName();
// Output:
// Mario Gunter Simao
IdentityProvider::findByIdentityId()
如果没有匹配的 identityId 或方法失败,则抛出异常。
$identity = $identityProvider->findByIdentityId(" 59edf297-bd07-4000-904d-80cc6288004a");
echo $identity->displayName();
// Output:
// Mario Gunter Simao