Beispiel #1
0
    protected function create_admin_user()
    {
        $this->print_header('Create Admin User');
        $name_is_valid = false;
        $email_is_valid = false;
        # Choose name (5 tries)
        $strikes = 5;
        while (!$name_is_valid) {
            $validator = new SignUpValidator();
            $name = $this->prompt_user('Please enter your new user name');
            if (!$validator->validate_signup_user($name, 'name')) {
                $m = sprintf('invalid user name: %s', implode(', ', $validator->errors['name']));
                $this->println($m);
                $strikes--;
            } else {
                $name_is_valid = true;
            }
            if ($strikes < 1) {
                $m = 'User name cannot be validated. Install failed. Please start over.';
                throw new NeechyInstallError($m);
            }
        }
        # Input email
        $strikes = 5;
        while (!$email_is_valid) {
            $validator = new SignUpValidator();
            $email = $this->prompt_user('Please enter your email');
            if (!$validator->validate_signup_email($email, 'email')) {
                $m = sprintf('invalid email address: %s', implode(', ', $validator->errors['email']));
                $this->println($m);
                $strikes--;
            } else {
                $email_is_valid = true;
            }
            if ($strikes < 1) {
                $m = 'Email cannot be validated. Install failed. Please start over.';
                throw new NeechyInstallError($m);
            }
        }
        # Register user and create page
        $password = NeechySecurity::random_hex();
        $this->register_admin_user($name, $email, $password);
        # Feedback
        $format = <<<STDOUT
An admin has been created with your user name: %s
Your random password is: %s

Please login now and change your password.
STDOUT;
        $this->println(sprintf($format, $name, $password));
    }