diff --git a/src/Api/Jobs/AbstractJob.php b/src/Api/Jobs/AbstractJob.php index 3e32eeca..bd2ebafb 100644 --- a/src/Api/Jobs/AbstractJob.php +++ b/src/Api/Jobs/AbstractJob.php @@ -17,6 +17,11 @@ abstract class AbstractJob implements IJob public abstract function getRequiredArguments(); + public function isAvailableToPublic() + { + return true; + } + public function getName() { $name = get_called_class(); diff --git a/src/Api/Jobs/IJob.php b/src/Api/Jobs/IJob.php index 42b537d5..47c15ca2 100644 --- a/src/Api/Jobs/IJob.php +++ b/src/Api/Jobs/IJob.php @@ -9,6 +9,7 @@ interface IJob public function getRequiredSubPrivileges(); public function isAuthenticationRequired(); public function isConfirmedEmailRequired(); + public function isAvailableToPublic(); public function getArgument($key); public function getArguments(); diff --git a/src/Api/Jobs/UserJobs/ActivateUserEmailJob.php b/src/Api/Jobs/UserJobs/ActivateUserEmailJob.php index 688ddc24..d2090c7f 100644 --- a/src/Api/Jobs/UserJobs/ActivateUserEmailJob.php +++ b/src/Api/Jobs/UserJobs/ActivateUserEmailJob.php @@ -72,6 +72,11 @@ class ActivateUserEmailJob extends AbstractJob return false; } + public function isAvailableToPublic() + { + return false; + } + public static function sendEmail($user) { $regConfig = Core::getConfig()->registration; diff --git a/src/Api/Jobs/UserJobs/PasswordResetJob.php b/src/Api/Jobs/UserJobs/PasswordResetJob.php index f3f4f73d..36b249b1 100644 --- a/src/Api/Jobs/UserJobs/PasswordResetJob.php +++ b/src/Api/Jobs/UserJobs/PasswordResetJob.php @@ -76,6 +76,11 @@ class PasswordResetJob extends AbstractJob return false; } + public function isAvailableToPublic() + { + return false; + } + public static function sendEmail($user) { $regConfig = Core::getConfig()->registration; diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 8488807a..5a8d5c43 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -22,6 +22,8 @@ class ApiController extends AbstractController $job = $this->jobFromName($jobName); if (!$job) throw new SimpleException('Unknown job: ' . $jobName); + if (!$job->isAvailableToPublic()) + throw new SimpleException('This job is unavailable for public.'); if (isset($_FILES['args'])) { diff --git a/src/Views/static/static-api.phtml b/src/Views/static/static-api.phtml index 66f7a5cc..062dd237 100644 --- a/src/Views/static/static-api.phtml +++ b/src/Views/static/static-api.phtml @@ -108,6 +108,9 @@ $jobClassNames = array_values($jobClassNames); foreach ($jobClassNames as $i => $className) { $job = new $className; + if (!$job->isAvailableToPublic()) + continue; + ?>