Converted from string-only-based validation.
Array based validation works nicer once you have validation classess or
advanced validation options.
}
$rules = $class->getValdationRules()[$methodName] ?? [];
- foreach ($rules as $param => $ruleString) {
- $rules[$param] = explode('|', $ruleString);
- }
-
- return count($rules) > 0 ? $rules : null;
+ return empty($rules) ? null : $rules;
}
/**
* Parse out the description text from a class method comment.
*/
- protected function parseDescriptionFromMethodComment(string $comment)
+ protected function parseDescriptionFromMethodComment(string $comment): string
{
$matches = [];
preg_match_all('/^\s*?\*\s((?![@\s]).*?)$/m', $comment, $matches);
protected $rules = [
'create' => [
- 'name' => 'required|min:1|max:255|string',
- 'uploaded_to' => 'required|integer|exists:pages,id',
- 'file' => 'required_without:link|file',
- 'link' => 'required_without:file|min:1|max:255|safe_url',
+ 'name' => ['required', 'min:1', 'max:255', 'string'],
+ 'uploaded_to' => ['required', 'integer', 'exists:pages,id'],
+ 'file' => ['required_without:link', 'file'],
+ 'link' => ['required_without:file', 'min:1', 'max:255', 'safe_url'],
],
'update' => [
- 'name' => 'min:1|max:255|string',
- 'uploaded_to' => 'integer|exists:pages,id',
- 'file' => 'file',
- 'link' => 'min:1|max:255|safe_url',
+ 'name' => ['min:1', 'max:255', 'string'],
+ 'uploaded_to' => ['integer', 'exists:pages,id'],
+ 'file' => ['file'],
+ 'link' => ['min:1', 'max:255', 'safe_url'],
],
];
protected $rules = [
'create' => [
- 'name' => 'required|string|max:255',
- 'description' => 'string|max:1000',
- 'tags' => 'array',
+ 'name' => ['required', 'string', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'tags' => ['array'],
],
'update' => [
- 'name' => 'string|min:1|max:255',
- 'description' => 'string|max:1000',
- 'tags' => 'array',
+ 'name' => ['string', 'min:1', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'tags' => ['array'],
],
];
protected $rules = [
'create' => [
- 'name' => 'required|string|max:255',
- 'description' => 'string|max:1000',
- 'books' => 'array',
+ 'name' => ['required', 'string', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'books' => ['array'],
],
'update' => [
- 'name' => 'string|min:1|max:255',
- 'description' => 'string|max:1000',
- 'books' => 'array',
+ 'name' => ['string', 'min:1', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'books' => ['array'],
],
];
protected $rules = [
'create' => [
- 'book_id' => 'required|integer',
- 'name' => 'required|string|max:255',
- 'description' => 'string|max:1000',
- 'tags' => 'array',
+ 'book_id' => ['required', 'integer'],
+ 'name' => ['required', 'string', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'tags' => ['array'],
],
'update' => [
- 'book_id' => 'integer',
- 'name' => 'string|min:1|max:255',
- 'description' => 'string|max:1000',
- 'tags' => 'array',
+ 'book_id' => ['integer'],
+ 'name' => ['string', 'min:1', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'tags' => ['array'],
],
];
protected $rules = [
'create' => [
- 'book_id' => 'required_without:chapter_id|integer',
- 'chapter_id' => 'required_without:book_id|integer',
- 'name' => 'required|string|max:255',
- 'html' => 'required_without:markdown|string',
- 'markdown' => 'required_without:html|string',
- 'tags' => 'array',
+ 'book_id' => ['required_without:chapter_id', 'integer'],
+ 'chapter_id' => ['required_without:book_id', 'integer'],
+ 'name' => ['required', 'string', 'max:255'],
+ 'html' => ['required_without:markdown', 'string'],
+ 'markdown' => ['required_without:html', 'string'],
+ 'tags' => ['array'],
],
'update' => [
- 'book_id' => 'required|integer',
- 'chapter_id' => 'required|integer',
- 'name' => 'string|min:1|max:255',
- 'html' => 'string',
- 'markdown' => 'string',
- 'tags' => 'array',
+ 'book_id' => ['required', 'integer'],
+ 'chapter_id' => ['required', 'integer'],
+ 'name' => ['string', 'min:1', 'max:255'],
+ 'html' => ['string'],
+ 'markdown' => ['string'],
+ 'tags' => ['array'],
],
];
public function upload(Request $request)
{
$this->validate($request, [
- 'uploaded_to' => 'required|integer|exists:pages,id',
- 'file' => 'required|file',
+ 'uploaded_to' => ['required', 'integer', 'exists:pages,id'],
+ 'file' => ['required', 'file'],
]);
$pageId = $request->get('uploaded_to');
public function uploadUpdate(Request $request, $attachmentId)
{
$this->validate($request, [
- 'file' => 'required|file',
+ 'file' => ['required', 'file'],
]);
/** @var Attachment $attachment */
try {
$this->validate($request, [
- 'attachment_edit_name' => 'required|string|min:1|max:255',
- 'attachment_edit_url' => 'string|min:1|max:255|safe_url',
+ 'attachment_edit_name' => ['required', 'string', 'min:1', 'max:255'],
+ 'attachment_edit_url' => ['string', 'min:1', 'max:255', 'safe_url'],
]);
} catch (ValidationException $exception) {
return response()->view('attachments.manager-edit-form', array_merge($request->only(['attachment_edit_name', 'attachment_edit_url']), [
try {
$this->validate($request, [
- 'attachment_link_uploaded_to' => 'required|integer|exists:pages,id',
- 'attachment_link_name' => 'required|string|min:1|max:255',
- 'attachment_link_url' => 'required|string|min:1|max:255|safe_url',
+ 'attachment_link_uploaded_to' => ['required', 'integer', 'exists:pages,id'],
+ 'attachment_link_name' => ['required', 'string', 'min:1', 'max:255'],
+ 'attachment_link_url' => ['required', 'string', 'min:1', 'max:255', 'safe_url'],
]);
} catch (ValidationException $exception) {
return response()->view('attachments.manager-link-form', array_merge($request->only(['attachment_link_name', 'attachment_link_url']), [
public function sortForPage(Request $request, int $pageId)
{
$this->validate($request, [
- 'order' => 'required|array',
+ 'order' => ['required', 'array'],
]);
$page = $this->pageRepo->getById($pageId);
$this->checkOwnablePermission('page-update', $page);
public function resend(Request $request)
{
$this->validate($request, [
- 'email' => 'required|email|exists:users,email',
+ 'email' => ['required', 'email', 'exists:users,email'],
]);
$user = $this->userRepo->getByEmail($request->get('email'));
*/
public function sendResetLinkEmail(Request $request)
{
- $this->validate($request, ['email' => 'required|email']);
+ $this->validate($request, [
+ 'email' => ['required', 'email']
+ ]);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
*/
protected function validateLogin(Request $request)
{
- $rules = ['password' => 'required|string'];
+ $rules = ['password' => ['required', 'string']];
$authMethod = config('auth.method');
if ($authMethod === 'standard') {
- $rules['email'] = 'required|email';
+ $rules['email'] = ['required', 'email'];
}
if ($authMethod === 'ldap') {
- $rules['username'] = 'required|string';
- $rules['email'] = 'email';
+ $rules['username'] = ['required', 'string'];
+ $rules['email'] = ['email'];
}
$request->validate($rules);
$this->validate($request, [
'code' => [
- 'required',
- 'max:12', 'min:8',
+ 'required', 'max:12', 'min:8',
function ($attribute, $value, $fail) use ($codeService, $codes) {
if (!$codeService->inputCodeExistsInSet($value, $codes)) {
$fail(trans('validation.backup_codes'));
protected function validator(array $data)
{
return Validator::make($data, [
- 'name' => 'required|min:2|max:255',
- 'email' => 'required|email|max:255|unique:users',
- 'password' => 'required|min:8',
+ 'name' => ['required', 'min:2', 'max:255'],
+ 'email' => ['required', 'email', 'max:255', 'unique:users'],
+ 'password' => ['required', 'min:8'],
]);
}
public function setPassword(Request $request, string $token)
{
$this->validate($request, [
- 'password' => 'required|min:8',
+ 'password' => ['required', 'min:8'],
]);
try {
{
$this->checkPermission('book-create-all');
$this->validate($request, [
- 'name' => 'required|string|max:255',
- 'description' => 'string|max:1000',
- 'image' => 'nullable|' . $this->getImageValidationRules(),
+ 'name' => ['required', 'string', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'image' => array_merge(['nullable'], $this->getImageValidationRules()),
]);
$bookshelf = null;
$book = $this->bookRepo->getBySlug($slug);
$this->checkOwnablePermission('book-update', $book);
$this->validate($request, [
- 'name' => 'required|string|max:255',
- 'description' => 'string|max:1000',
- 'image' => 'nullable|' . $this->getImageValidationRules(),
+ 'name' => ['required', 'string', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'image' => array_merge(['nullable'], $this->getImageValidationRules()),
]);
$book = $this->bookRepo->update($book, $request->all());
{
$this->checkPermission('bookshelf-create-all');
$this->validate($request, [
- 'name' => 'required|string|max:255',
- 'description' => 'string|max:1000',
- 'image' => 'nullable|' . $this->getImageValidationRules(),
+ 'name' => ['required', 'string', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'image' => array_merge(['nullable'], $this->getImageValidationRules()),
]);
$bookIds = explode(',', $request->get('books', ''));
$shelf = $this->bookshelfRepo->getBySlug($slug);
$this->checkOwnablePermission('bookshelf-update', $shelf);
$this->validate($request, [
- 'name' => 'required|string|max:255',
- 'description' => 'string|max:1000',
- 'image' => 'nullable|' . $this->getImageValidationRules(),
+ 'name' => ['required', 'string', 'max:255'],
+ 'description' => ['string', 'max:1000'],
+ 'image' => array_merge(['nullable'], $this->getImageValidationRules()),
]);
$bookIds = explode(',', $request->get('books', ''));
public function store(Request $request, string $bookSlug)
{
$this->validate($request, [
- 'name' => 'required|string|max:255',
+ 'name' => ['required', 'string', 'max:255'],
]);
$book = Book::visible()->where('slug', '=', $bookSlug)->firstOrFail();
public function savePageComment(Request $request, int $pageId)
{
$this->validate($request, [
- 'text' => 'required|string',
- 'parent_id' => 'nullable|integer',
+ 'text' => ['required', 'string'],
+ 'parent_id' => ['nullable', 'integer'],
]);
$page = Page::visible()->find($pageId);
public function update(Request $request, int $commentId)
{
$this->validate($request, [
- 'text' => 'required|string',
+ 'text' => ['required', 'string'],
]);
$comment = $this->commentRepo->getById($commentId);
/**
* Get the validation rules for image files.
*/
- protected function getImageValidationRules(): string
+ protected function getImageValidationRules(): array
{
- return 'image_extension|mimes:jpeg,png,gif,webp';
+ return ['image_extension', 'mimes:jpeg,png,gif,webp'];
}
}
protected function getValidatedModelFromRequest(Request $request): Favouritable
{
$modelInfo = $this->validate($request, [
- 'type' => 'required|string',
- 'id' => 'required|integer',
+ 'type' => ['required', 'string'],
+ 'id' => ['required', 'integer'],
]);
if (!class_exists($modelInfo['type'])) {
public function create(Request $request)
{
$this->validate($request, [
- 'image' => 'required|string',
- 'uploaded_to' => 'required|integer',
+ 'image' => ['required', 'string'],
+ 'uploaded_to' => ['required', 'integer'],
]);
$this->checkPermission('image-create-all');
public function update(Request $request, string $id)
{
$this->validate($request, [
- 'name' => 'required|min:2|string',
+ 'name' => ['required', 'min:2', 'string'],
]);
$image = $this->imageRepo->getById($id);
public function createAsGuest(Request $request, string $bookSlug, string $chapterSlug = null)
{
$this->validate($request, [
- 'name' => 'required|string|max:255',
+ 'name' => ['required', 'string', 'max:255'],
]);
$parent = $this->pageRepo->getParentFromSlugs($bookSlug, $chapterSlug);
public function store(Request $request, string $bookSlug, int $pageId)
{
$this->validate($request, [
- 'name' => 'required|string|max:255',
+ 'name' => ['required', 'string', 'max:255'],
]);
$draftPage = $this->pageRepo->getById($pageId);
$this->checkOwnablePermission('page-create', $draftPage->getParent());
public function update(Request $request, string $bookSlug, string $pageSlug)
{
$this->validate($request, [
- 'name' => 'required|string|max:255',
+ 'name' => ['required', 'string', 'max:255'],
]);
$page = $this->pageRepo->getBySlug($bookSlug, $pageSlug);
$this->checkOwnablePermission('page-update', $page);
{
$this->checkPermission('user-roles-manage');
$this->validate($request, [
- 'display_name' => 'required|min:3|max:180',
+ 'display_name' => ['required', 'min:3', 'max:180'],
'description' => 'max:180',
]);
{
$this->checkPermission('user-roles-manage');
$this->validate($request, [
- 'display_name' => 'required|min:3|max:180',
+ 'display_name' => ['required', 'min:3', 'max:180'],
'description' => 'max:180',
]);
$this->preventAccessInDemoMode();
$this->checkPermission('settings-manage');
$this->validate($request, [
- 'app_logo' => 'nullable|' . $this->getImageValidationRules(),
+ 'app_logo' => array_merge(['nullable'], $this->getImageValidationRules()),
]);
// Cycles through posted settings and update them
$this->checkPermissionOrCurrentUser('users-manage', $userId);
$this->validate($request, [
- 'name' => 'required|max:250',
- 'expires_at' => 'date_format:Y-m-d',
+ 'name' => ['required', 'max:250'],
+ 'expires_at' => ['date_format:Y-m-d'],
]);
$user = User::query()->findOrFail($userId);
public function update(Request $request, int $userId, int $tokenId)
{
$this->validate($request, [
- 'name' => 'required|max:250',
- 'expires_at' => 'date_format:Y-m-d',
+ 'name' => ['required', 'max:250'],
+ 'expires_at' => ['date_format:Y-m-d'],
]);
[$user, $token] = $this->checkPermissionAndFetchUserToken($userId, $tokenId);
{
$this->checkPermission('users-manage');
$validationRules = [
- 'name' => 'required',
- 'email' => 'required|email|unique:users,email',
+ 'name' => ['required'],
+ 'email' => ['required', 'email', 'unique:users,email'],
];
$authMethod = config('auth.method');
$sendInvite = ($request->get('send_invite', 'false') === 'true');
if ($authMethod === 'standard' && !$sendInvite) {
- $validationRules['password'] = 'required|min:6';
- $validationRules['password-confirm'] = 'required|same:password';
+ $validationRules['password'] = ['required', 'min:6'];
+ $validationRules['password-confirm'] = ['required', 'same:password'];
} elseif ($authMethod === 'ldap' || $authMethod === 'saml2' || $authMethod === 'openid') {
- $validationRules['external_auth_id'] = 'required';
+ $validationRules['external_auth_id'] = ['required'];
}
$this->validate($request, $validationRules);
$this->validate($request, [
'name' => 'min:2',
- 'email' => 'min:2|email|unique:users,email,' . $id,
- 'password' => 'min:6|required_with:password_confirm',
- 'password-confirm' => 'same:password|required_with:password',
+ 'email' => ['min:2', 'email', 'unique:users,email,' . $id],
+ 'password' => ['min:6', 'required_with:password_confirm'],
+ 'password-confirm' => ['same:password', 'required_with:password'],
'setting' => 'array',
- 'profile_image' => 'nullable|' . $this->getImageValidationRules(),
+ 'profile_image' => array_merge(['nullable'], $this->getImageValidationRules()),
]);
$user = $this->userRepo->getById($id);