Grav\Plugin\AdminPlugin::onFormProcessed PHP Метод

onFormProcessed() публичный Метод

Process the admin registration form.
public onFormProcessed ( RocketTheme\Toolbox\Event\Event $event )
$event RocketTheme\Toolbox\Event\Event
    public function onFormProcessed(Event $event)
    {
        $form = $event['form'];
        $action = $event['action'];
        switch ($action) {
            case 'register_admin_user':
                if (!$this->config->get('plugins.login.enabled')) {
                    throw new \RuntimeException($this->grav['language']->translate('PLUGIN_LOGIN.PLUGIN_LOGIN_DISABLED'));
                }
                $data = [];
                $username = $form->value('username');
                if ($form->value('password1') != $form->value('password2')) {
                    $this->grav->fireEvent('onFormValidationError', new Event(['form' => $form, 'message' => $this->grav['language']->translate('PLUGIN_LOGIN.PASSWORDS_DO_NOT_MATCH')]));
                    $event->stopPropagation();
                    return;
                }
                $data['password'] = $form->value('password1');
                $fields = ['email', 'fullname', 'title'];
                foreach ($fields as $field) {
                    // Process value of field if set in the page process.register_user
                    if (!isset($data[$field]) && $form->value($field)) {
                        $data[$field] = $form->value($field);
                    }
                }
                unset($data['password1']);
                unset($data['password2']);
                // Don't store the username: that is part of the filename
                unset($data['username']);
                // Extra lowercase to ensure file is saved lowercase
                $username = strtolower($username);
                $inflector = new Inflector();
                $data['fullname'] = isset($data['fullname']) ? $data['fullname'] : $inflector->titleize($username);
                $data['title'] = isset($data['title']) ? $data['title'] : 'Administrator';
                $data['state'] = 'enabled';
                $data['access'] = ['admin' => ['login' => true, 'super' => true], 'site' => ['login' => true]];
                // Create user object and save it
                $user = new User($data);
                $file = CompiledYamlFile::instance($this->grav['locator']->findResource('user://accounts/' . $username . YAML_EXT, true, true));
                $user->file($file);
                $user->save();
                $user = User::load($username);
                //Login user
                $this->grav['session']->user = $user;
                unset($this->grav['user']);
                $this->grav['user'] = $user;
                $user->authenticated = $user->authorize('site.login');
                $messages = $this->grav['messages'];
                $messages->add($this->grav['language']->translate('PLUGIN_ADMIN.LOGIN_LOGGED_IN'), 'info');
                $this->grav->redirect($this->admin_route);
                break;
        }
    }