protected function validate(array $data, $id = null)
{
if (!is_null($id)) {
$ignore = ',' . intval($id);
$required = 'sometimes|required';
} else {
$ignore = '';
$required = 'required';
}
// The Validation rules.
$rules = array('username' => 'required|min:4|max:100|alpha_dash|unique:users,username' . $ignore, 'role' => 'required|numeric|exists:roles,id', 'realname' => 'required|min:5|max:100|valid_name', 'password' => $required . '|confirmed|strong_password', 'password_confirmation' => $required . '|same:password', 'email' => 'required|min:5|max:100|email');
$messages = array('valid_name' => __d('users', 'The :attribute field is not a valid name.'), 'strong_password' => __d('users', 'The :attribute field is not strong enough.'));
$attributes = array('username' => __d('users', 'Username'), 'role' => __d('users', 'Role'), 'realname' => __d('users', 'Name and Surname'), 'password' => __d('users', 'Password'), 'password_confirmation' => __d('users', 'Password confirmation'), 'email' => __d('users', 'E-mail'));
// Add the custom Validation Rule commands.
Validator::extend('valid_name', function ($attribute, $value, $parameters) {
$pattern = '~^(?:[\\p{L}\\p{Mn}\\p{Pd}\'\\x{2019}]+(?:$|\\s+)){2,}$~u';
return preg_match($pattern, $value) === 1;
});
Validator::extend('strong_password', function ($attribute, $value, $parameters) {
$pattern = "/(?=^.{8,}\$)((?=.*\\d)|(?=.*\\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*\$/";
return preg_match($pattern, $value) === 1;
});
return Validator::make($data, $rules, $messages, $attributes);
}