mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-26 22:19:41 -08:00
296de34e8a
I'm going ahead and merging this, since the upgrade doesn't break Flysystem any worse than the current develop is broken, so far as I can tell. * Upgraded framework to Laravel 6 ### TO DO: - Fix password restriction rules- the old library isn’t compatible with Laravel 6 :( - Figure out why in-app API calls are returning “Unauthorized” * More updates from Input:: to Request:: helper * Switch to Request:: from Input * Added passport config * Fixed goofy password minimum in seeder * Added laravel/helpers * Changed ($item) to ($item->id) in forms I have no idea why this is necessary * Changed ($item) to ($item->id) in forms * Updated API middleware to auth:api * Updated with added laravel auth.php values * FIxed *&!^$%^&$^%!!!! ajax issue * Switch to Request::get from Input::get * Switched to Request facade * Added password security minimums back in The package we were using has not been updated to Laravel v6, so I created custom validators instead * Added language strings for error messages for password rules * Fixed `($item)` issue in formActions for partials
123 lines
3.5 KiB
PHP
123 lines
3.5 KiB
PHP
<?php
|
|
namespace App\Providers;
|
|
|
|
use DB;
|
|
use Illuminate\Support\ServiceProvider;
|
|
use Validator;
|
|
|
|
/**
|
|
* This service provider handles a few custom validation rules.
|
|
*
|
|
* PHP version 5.5.9
|
|
* @version v3.0
|
|
*/
|
|
|
|
class ValidationServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Custom email array validation
|
|
*
|
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
|
* @since [v3.0]
|
|
* @return void
|
|
*/
|
|
public function boot()
|
|
{
|
|
|
|
// Email array validator
|
|
Validator::extend('email_array', function ($attribute, $value, $parameters, $validator) {
|
|
$value = str_replace(' ', '', $value);
|
|
$array = explode(',', $value);
|
|
|
|
foreach ($array as $email) { //loop over values
|
|
$email_to_validate['alert_email'][]=$email;
|
|
}
|
|
|
|
$rules = array('alert_email.*'=>'email');
|
|
$messages = array(
|
|
'alert_email.*'=>trans('validation.email_array')
|
|
);
|
|
|
|
$validator = Validator::make($email_to_validate, $rules, $messages);
|
|
|
|
return $validator->passes();
|
|
|
|
});
|
|
|
|
|
|
// Unique only if undeleted
|
|
// This works around the use case where multiple deleted items have the same unique attribute.
|
|
// (I think this is a bug in Laravel's validator?)
|
|
Validator::extend('unique_undeleted', function ($attribute, $value, $parameters, $validator) {
|
|
|
|
if (count($parameters)) {
|
|
$count = DB::table($parameters[0])->select('id')->where($attribute, '=', $value)->whereNull('deleted_at')->where('id', '!=', $parameters[1])->count();
|
|
return $count < 1;
|
|
}
|
|
|
|
});
|
|
|
|
|
|
// Yo dawg. I heard you like validators.
|
|
// This validates the custom validator regex in custom fields.
|
|
// We're just checking that the regex won't throw an exception, not
|
|
// that it's actually correct for what the user intended.
|
|
|
|
Validator::extend('valid_regex', function ($attribute, $value, $parameters, $validator) {
|
|
|
|
// Make sure it's not just an ANY format
|
|
if ($value!='') {
|
|
|
|
// Check that the string starts with regex:
|
|
if (strpos($value, 'regex:') === false) {
|
|
return false;
|
|
}
|
|
|
|
$test_string = 'My hovercraft is full of eels';
|
|
|
|
// We have to stip out the regex: part here to check with preg_match
|
|
$test_pattern = str_replace('regex:','', $value);
|
|
|
|
try {
|
|
preg_match($test_pattern, $test_string);
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
return false;
|
|
}
|
|
|
|
}
|
|
return true;
|
|
|
|
});
|
|
|
|
|
|
Validator::extend('letters', function ($attribute, $value, $parameters) {
|
|
return preg_match('/\pL/', $value);
|
|
});
|
|
|
|
Validator::extend('numbers', function ($attribute, $value, $parameters) {
|
|
return preg_match('/\pN/', $value);
|
|
});
|
|
|
|
Validator::extend('case_diff', function ($attribute, $value, $parameters) {
|
|
return preg_match('/(\p{Ll}+.*\p{Lu})|(\p{Lu}+.*\p{Ll})/u', $value);
|
|
});
|
|
|
|
Validator::extend('symbols', function ($attribute, $value, $parameters) {
|
|
return preg_match('/\p{Z}|\p{S}|\p{P}/', $value);
|
|
});
|
|
|
|
|
|
}
|
|
|
|
/**
|
|
* Register any application services.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function register()
|
|
{
|
|
|
|
}
|
|
}
|