/** * 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; } }
/** * case: * * $data = [ * 'UserIdentifier1' => 'grantIdentifier1', * 'UserIdentifier2' => 'grantIdentifier2' * ] * * @param array $data * @return boolean */ public function bindUserGrant(array $data) { $grantIdentifiers = array_values($data); $grantsInDb = ArrayHelper::getColumn(GrantsModel::findByGrantId($grantIdentifiers)->all(), 'id'); if (count(array_diff($grantIdentifiers, $grantsInDb)) !== 0) { return false; } $db = CommonModel::getDb(); $transaction = $db->beginTransaction(); try { foreach ($data as $user => $grant) { $userGrantsModel = new UserGrantsModel(); $userGrantsModel->user_id = $user; $userGrantsModel->grant_id = $grant; $userGrantsModel->save(); } $transaction->commit(); return true; } catch (\Exception $e) { $transaction->rollBack(); return false; } }
/** * @param $grantType * @param ActiveQuery|null $query * @return ActiveQuery */ public static function findByGrantType($grantType, ActiveQuery $query = null) { $query = $query ?: static::find(); return $query->andWhere(['grant_id' => $grantType])->andWhere(['grant_id' => GrantsModel::findByGrantId($grantType)->select(['id'])]); }