/**
  * 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();
     }
 }
Esempio n. 3
0
 /**
  * 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;
     }
 }