dbstudios/veritas
Laravel package for verifying and validating incoming request data and payloads with a consistent rule-based approach. Helps enforce data integrity across APIs and forms, offering a lightweight way to define checks, run assertions, and return clear validation feedback.
Validator facade) and form requests, but requires manual JWT handling (e.g., using firebase/php-jwt separately). This introduces duplication of concerns (validation + auth).typhon/jwt-auth or lucadegasperi/oauth2-server.Validator and FormRequest classes, enabling reusable validation logic across controllers. Example:
use DbStudios\Veritas\Rules\Email;
use DbStudios\Veritas\Rules\MinLength;
$rules = [
'email' => ['required', new Email],
'password' => ['required', new MinLength(8)],
];
firebase/php-jwt for token handling.HS256/RS256).iss, exp, aud).Validator::extend()).firebase/php-jwt or similar, adding maintenance overhead.typhon/jwt-auth) alongside Veritas?jwt-auth or oauth2-server.Illuminate\Validation instead).Email, MinLength) in app/Rules.Validator::make($data, [...])) with Veritas-composed rules.// Before
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required|min:8',
]);
// After
$validator = Validator::make($request->all(), [
'email' => [new Email],
'password' => [new MinLength(8)],
]);
FormRequest classes.FormRequest to use Veritas rules:
use DbStudios\Veritas\Rules\Email;
class StoreUserRequest extends FormRequest {
public function rules() {
return [
'email' => [new Email],
'name' => ['required', 'string'],
];
}
}
Validator::extend('email', function ($attribute, $value, $parameters, $validator) {
return filter_var($value, FILTER_VALIDATE_EMAIL);
});
Validator::failed() to return structured errors:
{
"errors": {
"email": ["The email must be a valid address."]
}
}
firebase/php-jwt:
composer require firebase/php-jwt
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
class JwtGuard extends Guard {
public function validate($credentials = []) {
$token = $credentials['token'] ?? request()->bearerToken();
try {
$decoded = JWT::decode($token, new Key(config('jwt.secret'), 'HS256'));
return $this->user()->setUserResolver(function () use ($decoded) {
return User::find($decoded->user_id);
});
} catch (\Exception $e) {
return false;
}
}
}
AuthServiceProvider:
$this->app['auth']->extend('jwt', function ($app) {
return new JwtGuard($app['request'], $app['auth.manager']);
});
firebase/php-jwt, typhon/jwt-auth).FormRequest classes but does not replace them.Validator but does not override built-in rules.| Step | Task | Dependencies | Risk | |------|------|--------------
How can I help you explore Laravel packages today?