Filter special chars.

This commit is contained in:
James Cole 2021-08-11 14:13:19 +02:00
parent baa3a91f65
commit 41cb256d49

View File

@ -28,7 +28,6 @@ use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\TransactionType;
use FireflyIII\Models\Webhook;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
@ -43,6 +42,7 @@ use Google2FA;
use Illuminate\Support\Collection;
use Illuminate\Validation\Validator;
use Log;
use ValueError;
use function is_string;
/**
@ -114,6 +114,7 @@ class FireflyValidator extends Validator
* @param mixed $value
*
* @return bool
* @throws FireflyException
*/
public function validateIban($attribute, $value): bool
{
@ -173,6 +174,8 @@ class FireflyValidator extends Validator
$value = str_replace($search, $replace, $value);
$value = strtoupper($value);
// replace characters outside of ASCI range.
$value = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $value);
$search = [' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
$replace = ['', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31',
'32', '33', '34', '35',];
@ -185,7 +188,14 @@ class FireflyValidator extends Validator
if (0 === strlen($iban)) {
return false;
}
$checksum = bcmod($iban, '97');
try {
$checksum = bcmod($iban, '97');
} catch (ValueError $e) {
$message = sprintf('Could not validate IBAN check value "%s"', $iban);
Log::error($message);
Log::error($e->getTraceAsString());
throw new FireflyException($message, $e);
}
return 1 === (int)$checksum;
}
@ -471,12 +481,13 @@ class FireflyValidator extends Validator
$ignore = (int)($parameters[0] ?? 0.0);
$accountTypeIds = $accountTypes->pluck('id')->toArray();
/** @var Collection $set */
$set = auth()->user()->accounts()->whereIn('account_type_id', $accountTypeIds)->where('id', '!=', $ignore)->get();
$set = auth()->user()->accounts()->whereIn('account_type_id', $accountTypeIds)->where('id', '!=', $ignore)->get();
$result = $set->first(
function (Account $account) use ($value) {
return $account->name === $value;
}
);
return null === $result;
}
@ -500,6 +511,7 @@ class FireflyValidator extends Validator
return $account->name === $value;
}
);
return null === $result;
}
@ -717,7 +729,8 @@ class FireflyValidator extends Validator
if (null !== $exclude) {
$query->where('piggy_banks.id', '!=', (int)$exclude);
}
$query->where('piggy_banks.name',$value);
$query->where('piggy_banks.name', $value);
return null === $query->first(['piggy_banks.*']);
}