Source of file CreateUser.php
Size: 2,229 Bytes - Last Modified: 2021-12-24T07:10:29+00:00
/var/www/docs.ssmods.com/process/src/src/Api/Users/CreateUser.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | <?php namespace Sunnysideup\Moodle\Api\Users; use SilverStripe\Core\Injector\Injector; use SilverStripe\Security\Member; use Sunnysideup\Moodle\Api\Converters\UserToMoodleUserConversionApi; use Sunnysideup\Moodle\Api\MoodleAction; /** * class used to respond with JSON requests. */ class CreateUser extends MoodleAction { protected $method = 'core_user_create_users'; protected $createPassword = false; protected $resultGetArray = true; protected $resultTakeFirstEntry = true; protected $resultRelevantArrayKey = 'id'; protected $resultVariableType = 'int'; private static $converter = UserToMoodleUserConversionApi::class; public function runAction($relevantData) { if ($this->validateParams($relevantData)) { $data = $this->createData($relevantData); $result = $this->runActionInner([ 'users' => [$data], ], 'POST'); return $this->processResults($result); } return false; } protected function validateParams($relevantData): bool { if (! $relevantData instanceof Member) { $this->recordValidateParamsError('We need an ' . Member::class . ' to create this login. You provided: ' . print_r($relevantData, 1)); return false; } return true; } protected function createData(Member $relevantData): array { $data = $this->getConverter()->toMoodle($relevantData, $this->createPassword); $data['password'] = $this->randomPassword(); return $data; } protected function getConverter() { $className = $this->config()->get('converter'); return Injector::inst()->get($className); } protected function randomPassword() { $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()'; $pass = []; //remember to declare $pass as an array $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache for ($i = 0; $i < 23; ++$i) { $n = rand(0, $alphaLength); $pass[] = $alphabet[$n]; } return implode('', $pass) . '1aA*_'; //turn the array into a string } } |