public function createFirstUser() { $request = \Request::instance(); $method = $request->method(); if (Verbs::GET === $method) { if (!User::adminExists()) { $data = ['version' => \Config::get('df.api_version'), 'email' => '', 'name' => '', 'first_name' => '', 'last_name' => '']; return view('firstUser', $data); } else { return redirect()->to('/'); } } else { if (Verbs::POST === $method) { $data = $request->all(); $registrar = new Registrar(); $validator = $registrar->validator($data); if ($validator->fails()) { $errors = $validator->getMessageBag()->all(); $data = array_merge($data, ['errors' => $errors, 'version' => \Config::get('df.api_version')]); return view('firstUser', $data); } else { $registrar->create($data); return redirect()->to('/'); } } } }
/** * Registers new user. * * @return array * @throws \DreamFactory\Core\Exceptions\BadRequestException * @throws \DreamFactory\Core\Exceptions\ForbiddenException */ protected function handlePOST() { $payload = $this->getPayloadData(); $login = $this->request->getParameterAsBool('login'); $registrar = new Registrar(); $password = ArrayUtils::get($payload, 'new_password', ArrayUtils::get($payload, 'password')); $data = ['first_name' => ArrayUtils::get($payload, 'first_name'), 'last_name' => ArrayUtils::get($payload, 'last_name'), 'name' => ArrayUtils::get($payload, 'name'), 'email' => ArrayUtils::get($payload, 'email'), 'phone' => ArrayUtils::get($payload, 'phone'), 'security_question' => ArrayUtils::get($payload, 'security_question'), 'security_answer' => ArrayUtils::get($payload, 'security_answer'), 'password' => $password, 'password_confirmation' => ArrayUtils::get($payload, 'password_confirmation', $password)]; if (empty($data['first_name'])) { list($username, $domain) = explode('@', $data['email']); $data['first_name'] = $username; } if (empty($data['last_name'])) { $names = explode('.', $data['first_name']); if (isset($names[1])) { $data['last_name'] = $names[1]; $data['first_name'] = $names[0]; } else { $data['last_name'] = $names[0]; } } if (empty($data['name'])) { $data['name'] = $data['first_name'] . ' ' . $data['last_name']; } ArrayUtils::removeNull($data); /** @var \Illuminate\Validation\Validator $validator */ $validator = $registrar->validator($data); if ($validator->fails()) { $messages = $validator->errors()->getMessages(); throw new BadRequestException('Validation failed', null, null, $messages); } else { $user = $registrar->create($data); if ($login) { if ($user->confirm_code !== 'y' && !is_null($user->confirm_code)) { return ['success' => true, 'confirmation_required' => true]; } else { Session::setUserInfoWithJWT($user); return ['success' => true, 'session_token' => Session::getSessionToken()]; } } else { return ['success' => true]; } } }