/** * Create a new user instance after a valid registration. * * @param array $data * * @return User */ public function create(array $data) { return \DB::transaction(function () use($data) { $_user = User::create(['first_name_text' => $data['first_name_text'], 'last_name_text' => $data['last_name_text'], 'email_addr_text' => $data['email_addr_text'], 'nickname_text' => $data['nickname_text'], 'password_text' => bcrypt($data['password_text'])]); $_appKey = AppKey::create(array('key_class_text' => AppKeyClasses::USER, 'owner_id' => $_user->id, 'owner_type_nbr' => OwnerTypes::USER, 'server_secret' => config('dfe.security.console-api-key'))); // Update the user with the key info and activate $_user->api_token_text = $_appKey->client_id; $_user->active_ind = 1; $_user->save(); return $_user; }); }
public function store(Request $request) { $is_system_admin = ''; $user = null; $create_user = null; $user_data = \Input::all(); $validator = Validator::make($user_data, ['email_addr_text' => 'required|email', 'first_name_text' => 'required|string', 'last_name_text' => 'required|string', 'nickname_text' => 'required|string', 'new_password' => 'required|string']); if ($validator->fails()) { $messages = $validator->messages()->getMessages(); $flash_message = ''; foreach ($messages as $key => $value) { switch ($key) { case 'email_addr_text': $flash_message = 'Email is blank or format is invalid (use abc@domain.tld)'; break; case 'first_name_text': $flash_message = 'First Name is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)'; break; case 'last_name_text': $flash_message = 'Last Name is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)'; break; case 'nickname_text': $flash_message = 'Nickname is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)'; break; case 'new_password': $flash_message = 'Password is blank or contains invalid characters'; break; } break; } Session::flash('flash_message', $flash_message); Session::flash('flash_type', 'alert-danger'); return redirect('/v1/users/create')->withInput(); } if (array_key_exists('system_admin', $user_data)) { $is_system_admin = 1; } if ($is_system_admin != '') { $create_user = new ServiceUser(); } else { $create_user = new User(); } if (array_key_exists('active', $user_data)) { $user_data['active_ind'] = 1; } else { $user_data['active_ind'] = 0; } /** @noinspection PhpUndefinedMethodInspection */ $user_data['password_text'] = Hash::make($user_data['new_password']); unset($user_data['active']); unset($user_data['new_password']); unset($user_data['system_admin']); try { $create_user->create($user_data); $result_text = 'The user "' . $user_data['first_name_text'] . ' ' . $user_data['last_name_text'] . '" was created successfully!'; $result_status = 'alert-success'; Session::flash('flash_message', $result_text); Session::flash('flash_type', $result_status); return \Redirect::to($this->makeRedirectUrl('users')); } catch (QueryException $e) { $res_text = strtolower($e->getMessage()); if (strpos($res_text, 'duplicate entry') !== false) { Session::flash('flash_message', 'Email is already in use.'); Session::flash('flash_type', 'alert-danger'); } else { Session::flash('flash_message', 'An error occurred! Check for errors and try again.'); Session::flash('flash_type', 'alert-danger'); } return redirect('/v1/users/create')->withInput(); } }
/** * Standardized user creation method * * @param \Illuminate\Http\Request $request * @param bool $validate If false, no validation is done. * * @return \DreamFactory\Enterprise\Common\Packets\ErrorPacket|\DreamFactory\Enterprise\Common\Packets\SuccessPacket */ public static function register(Request $request, $validate = true) { $_email = $request->input('email', $request->input('email_addr_text')); $_first = $request->input('firstname', $request->input('first_name_text')); $_last = $request->input('lastname', $request->input('last_name_text')); $_password = $request->input('password', $request->input('password_text')); $_nickname = $request->input('nickname', $request->input('nickname_text', $_first)); $_company = $request->input('company', $request->input('company_name_text')); $_phone = $request->input('phone', $request->input('phone_text')); if ($validate) { if (empty($_email) || empty($_password) || empty($_first) || empty($_last)) { /** @noinspection PhpUndefinedMethodInspection */ Log::error('missing required fields from partner post', ['payload' => $request->input()]); throw new \InvalidArgumentException('Missing required fields'); } if (false === filter_var($_email, FILTER_VALIDATE_EMAIL)) { /** @noinspection PhpUndefinedMethodInspection */ Log::error('invalid email address "' . $_email . '"', ['payload' => $request->input()]); throw new \InvalidArgumentException('Email address invalid'); } } // See if we know this cat... if (null !== ($_user = User::byEmail($_email)->first())) { // Existing user found, don't add to database... $_values = $_user->toArray(); unset($_values['password_text'], $_values['external_password_text']); /** @noinspection PhpUndefinedMethodInspection */ Log::info('existing user attempting registration through api', ['user' => $_values]); return $_user; } // Create a user account try { /** @type User $_user */ /** @noinspection PhpUndefinedMethodInspection */ $_user = DB::transaction(function () use($request, $_first, $_last, $_email, $_password, $_nickname, $_phone, $_company) { /** @noinspection PhpUndefinedMethodInspection */ $_user = User::create(['first_name_text' => $_first, 'last_name_text' => $_last, 'email_addr_text' => $_email, 'nickname_text' => $_nickname, 'password_text' => Hash::make($_password), 'phone_text' => $_phone, 'company_name_text' => $_company]); if (null === ($_appKey = AppKey::mine($_user->id, OwnerTypes::USER))) { $_appKey = AppKey::create(['key_class_text' => AppKeyClasses::USER, 'owner_id' => $_user->id, 'owner_type_nbr' => OwnerTypes::USER, 'server_secret' => config('dfe.security.console-api-key')]); } // Update the user with the key info and activate $_user->api_token_text = $_appKey->client_id; $_user->active_ind = 1; $_user->save(); return $_user; }); $_values = $_user->toArray(); unset($_values['password_text'], $_values['external_password_text']); /** @noinspection PhpUndefinedMethodInspection */ Log::info('new user registered', ['user' => $_values]); return $validate ? SuccessPacket::create($_user, Response::HTTP_CREATED) : $_user; } catch (\Exception $_ex) { if (false !== ($_pos = stripos($_message = $_ex->getMessage(), ' (sql: '))) { $_message = substr($_message, 0, $_pos); } /** @noinspection PhpUndefinedMethodInspection */ Log::error('database error creating user from ops-resource post: ' . $_message); return $validate ? ErrorPacket::create(null, Response::HTTP_INTERNAL_SERVER_ERROR, $_message) : null; } }