Skip to content

Commit

Permalink
command arguments in schedule
Browse files Browse the repository at this point in the history
  • Loading branch information
recursivetree committed Nov 14, 2022
1 parent b3b76f9 commit 005ebb7
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 3 deletions.
59 changes: 59 additions & 0 deletions src/Http/Validation/Custom/ArtisanCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

/*
* This file is part of SeAT
*
* Copyright (C) 2015 to 2022 Leon Jacobs
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

namespace Seat\Web\Http\Validation\Custom;
use Symfony\Component\Console\Input\ArgvInput;
use Artisan;
use Symfony\Component\Console\Exception\RuntimeException;

/**
* Class ArtisanCommand.
*
* @package Seat\Web\Http\Validation\Custom
*/
class ArtisanCommand
{
/**
* Validate if the $value is a valid artisan command.
*
* @param $attribute
* @param $value
* @param $parameters
* @param $validator
* @return bool
*/
public static function validate($attribute, $value, $parameters, $validator)
{
$allCommands = Artisan::all();

$argv = explode(" ",$value);

$commandName = $argv[0] ?? null;
if($commandName===null) return false;
if(!array_key_exists($commandName,$allCommands)) return false;

//I haven't found a way to validate the arguments, so we assume they are alright


return true;
}
}
4 changes: 1 addition & 3 deletions src/Http/Validation/NewSchedule.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,9 @@ public function messages()
public function rules()
{

$available_commands = implode(',', array_keys(Artisan::all()));

return [

'command' => 'required|in:' . $available_commands,
'command' => 'required|artisan',
'expression' => 'required|cron|unique:schedules,expression,NULL,NULL,command,' .
$this->request->get('command'),
];
Expand Down
1 change: 1 addition & 0 deletions src/WebServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@ private function add_custom_validators()
{

Validator::extend('cron', 'Seat\Web\Http\Validation\Custom\Cron@validate');
Validator::extend('artisan', 'Seat\Web\Http\Validation\Custom\ArtisanCommand@validate');
}

/**
Expand Down

0 comments on commit 005ebb7

Please sign in to comment.