/** * @param \League\OAuth2\Server\Entities\ScopeEntityInterface[] $scopes * @param string $grantType * @param ClientEntityInterface $clientEntity * @param null $userIdentifier|string * @return \League\OAuth2\Server\Entities\ScopeEntityInterface[] */ public function finalizeScopes(array $scopes, $grantType, ClientEntityInterface $clientEntity, $userIdentifier = null) { $scopesId = []; foreach ($scopes as $item) { $scopesId[] = $item->getIdentifier(); } $query = ScopesModel::findByScopeId($scopesId); ScopesModel::findByGrantId($grantType, $query); ScopesModel::findByClientId($clientEntity->getIdentifier(), $query); if ($userIdentifier) { ScopesModel::findByUserId($userIdentifier, $query); } $result = $query->all(); $entitys = []; foreach ($result as $item) { foreach ($scopes as $key => $scope) { if ($item->id == $scope->getIdentifier()) { $entitys[$key] = $scope; } } } return $entitys; }
/** * case: * * $data = [ * 'UserIdentifier1' => 'scopeIdentifier1', * 'UserIdentifier2' => 'scopeIdentifier2' * ] * * @param array $data * @return boolean */ public function bindUserScope(array $data) { $scopeIdentifiers = array_values($data); $scopesInDb = ArrayHelper::getColumn(ScopesModel::findByGrantId($scopeIdentifiers)->all(), 'id'); if (count(array_diff($scopeIdentifiers, $scopesInDb)) !== 0) { return false; } $db = CommonModel::getDb(); $transaction = $db->beginTransaction(); try { foreach ($data as $user => $sope) { $userScopesModel = new UserScopesModel(); $userScopesModel->user_id = $user; $userScopesModel->scope_id = $sope; $userScopesModel->save(); } $transaction->commit(); return true; } catch (\Exception $e) { $transaction->rollBack(); return false; } }