Beispiel #1
0
 /**
  * case:
  *
  * $data = [
  *     'grantIdentifier1' => 'scopeIdentifier1',
  *     'grantIdentifier2' => 'scopeIdentifier2'
  * ]
  *
  * @param  array $data
  * @return boolean
  */
 public function bindGrantScope(array $data)
 {
     $grantIdentifiers = array_keys($data);
     $scopeIdentifiers = array_values($data);
     $grantsInDb = ArrayHelper::getColumn(GrantsModel::findByGrantId($grantIdentifiers)->all(), 'id');
     $scopesInDb = ArrayHelper::getColumn(ScopesModel::findByScopeId($scopeIdentifiers)->all(), 'id');
     if (count(array_diff($grantIdentifiers, $grantsInDb)) !== 0 or count(array_diff($scopeIdentifiers, $scopesInDb)) !== 0) {
         return false;
     }
     $db = CommonModel::getDb();
     $transaction = $db->beginTransaction();
     try {
         foreach ($data as $grant => $scope) {
             $clientGrantModel = new GrantScopesModel();
             $clientGrantModel->grant_id = $grant;
             $clientGrantModel->scope_id = $scope;
             $clientGrantModel->save();
         }
         $transaction->commit();
         return true;
     } catch (\Exception $e) {
         $transaction->rollBack();
         return false;
     }
 }
Beispiel #2
0
 /**
  * @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;
 }