-
Notifications
You must be signed in to change notification settings - Fork 752
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #696 from stevenmaguire/sm-add-guarded-attribute-s…
…upport Add support to blacklist mass assignment of specific provider properties
- Loading branch information
Showing
4 changed files
with
136 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
<?php | ||
/** | ||
* This file is part of the league/oauth2-client library | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
* | ||
* @copyright Copyright (c) Alex Bilbie <[email protected]> | ||
* @license http://opensource.org/licenses/MIT MIT | ||
* @link http://thephpleague.com/oauth2-client/ Documentation | ||
* @link https://packagist.org/packages/league/oauth2-client Packagist | ||
* @link https://github.com/thephpleague/oauth2-client GitHub | ||
*/ | ||
|
||
namespace League\OAuth2\Client\Tool; | ||
|
||
/** | ||
* Provides support for blacklisting explicit properties from the | ||
* mass assignment behavior. | ||
*/ | ||
trait GuardedPropertyTrait | ||
{ | ||
/** | ||
* The properties that aren't mass assignable. | ||
* | ||
* @var array | ||
*/ | ||
protected $guarded = []; | ||
|
||
/** | ||
* Attempts to mass assign the given options to explicitly defined properties, | ||
* skipping over any properties that are defined in the guarded array. | ||
* | ||
* @param array $options | ||
* @return mixed | ||
*/ | ||
protected function fillProperties(array $options = []) | ||
{ | ||
if (isset($options['guarded'])) { | ||
unset($options['guarded']); | ||
} | ||
|
||
foreach ($options as $option => $value) { | ||
if (property_exists($this, $option) && !$this->isGuarded($option)) { | ||
$this->{$option} = $value; | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* Returns current guarded properties. | ||
* | ||
* @return array | ||
*/ | ||
public function getGuarded() | ||
{ | ||
return $this->guarded; | ||
} | ||
|
||
/** | ||
* Determines if the given property is guarded. | ||
* | ||
* @param string $property | ||
* @return bool | ||
*/ | ||
public function isGuarded($property) | ||
{ | ||
return in_array($property, $this->getGuarded()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?php | ||
|
||
namespace League\OAuth2\Client\Test\Provider\Fake; | ||
|
||
use League\OAuth2\Client\Test\Provider\Fake as MockProvider; | ||
|
||
class ProviderWithGuardedProperties extends MockProvider | ||
{ | ||
/** | ||
* The properties that aren't mass assignable. | ||
* | ||
* @var array | ||
*/ | ||
protected $guarded = ['skipMeDuringMassAssignment']; | ||
|
||
/** | ||
* Throwaway property that shouldn't be mass assigned. | ||
* | ||
* @var string | ||
*/ | ||
protected $skipMeDuringMassAssignment = 'foo'; | ||
} |