public static bool|null
check
(mixed $userId, mixed $action, mixed $assetKey = null, mixed $preload = true)
/**
* Method to check if a user is authorised to perform an action, optionally on an asset.
*
* @param integer $userId Id of the user for which to check authorisation.
* @param string $action The name of the action to authorise.
* @param integer|string $assetKey The asset key (asset id or asset name). null fallback to root asset.
* @param boolean $preload Indicates whether preloading should be used.
*
* @return boolean|null True if allowed, false for an explicit deny, null for an implicit deny.
*
* @since 1.7.0
*/
public static function check($userId, $action, $assetKey = null, $preload = true)
{
// Sanitise inputs.
$userId = (int) $userId;
$action = strtolower(preg_replace('#[\\s\\-]+#', '.', trim($action)));
if (!isset(self::$identities[$userId])) {
// Get all groups against which the user is mapped.
self::$identities[$userId] = self::getGroupsByUser($userId);
array_unshift(self::$identities[$userId], $userId * -1);
}
return self::getAssetRules($assetKey, true, true, $preload)->allow($action, self::$identities[$userId]);
}