/** * 用户登录 * * @param SignInRequest $request * @return \Illuminate\Http\JsonResponse * @throws \App\Exceptions\SignInException */ public function doSignIn(SignInRequest $request) { $loginId = $request->get('login_id'); $username = $request->get('username'); $email = $request->get('email'); $phone = $request->get('phone'); $password = $request->get('password'); $remember = $request->get('remember'); if ($phone) { $user = UserManager::signInByPhone($phone, $password, $remember); } else { if ($email) { $user = UserManager::signInByEmail($email, $password, $remember); } else { if ($username) { $user = UserManager::signInByUsername($username, $password, $remember); } else { if (Tools::isEmail($loginId)) { $user = UserManager::signInByEmail($loginId, $password, $remember); } else { if (Tools::isPhone($loginId)) { $user = UserManager::signInByPhone($loginId, $password, $remember); } else { $user = UserManager::signInByUsername($loginId, $password, $remember); } } } } } return $this->buildResponse(trans('api.auth.sign_in.success'), Tools::toArray($user)); }
/** * @param User $user * @param $proofOfTransfer * @param array $products * @param array $quantityHash * @param $status * @param $customer * @param $isHq * @param bool $isPickup * @param $ipAddress * @return Order */ private function createOrder(User $user, $proofOfTransfer, array $products, array $quantityHash, $status, $customer, $isHq, $isPickup = false, $ipAddress) { assert($user); assert($user->id); if ($customer) { assert($customer->referral_id == $user->id); } if (empty($products)) { \App::abort(500, 'invalid'); } if (empty($quantityHash)) { \App::abort(500, 'invalid'); } $allowedProducts = $this->productManager->getAvailableProductList($user, (bool) $customer)->pluck('id')->all(); assert(!empty($allowedProducts)); $organizationId = null; $hq = Organization::HQ(); $organizationId = $isHq ? $hq->id : $user->organization_id; $orderModel = config('order.order_model'); $order = new $orderModel(); $order->fill(['order_status_id' => $status, 'proof_of_transfer_id' => $proofOfTransfer->id, 'customer_id' => $customer ? $customer->id : null, 'organization_id' => $organizationId, 'user_id' => $user->id, 'is_hq' => $isHq, 'is_pickup' => $isPickup, 'created_by_id' => $this->userManager->getRealUserId(), 'ip_address' => $ipAddress]); if ($this->date) { $order->created_at = $this->date; } $order->save(); $index = 0; foreach ($products as $key => $product) { if (!config('order.allow_quantity') && $quantityHash[$key] != 1) { \App::abort(500, 'invalid'); } if (env('APP_ENV') != 'production') { if (!in_array($product->id, $allowedProducts)) { ddd([$user, (bool) $customer, $product, $allowedProducts]); } } assert(in_array($product->id, $allowedProducts)); $product->getPriceAndDelivery($user, $customer, $price, $delivery); $organizationId = $product->is_hq ? $hq->id : $user->organization_id; assert($organizationId == $order->organization_id, 'organization_id'); assert($isHq == $product->is_hq, 'is_hq'); $quantity = $quantityHash[$key]; assert($product->max_quantity >= $quantity); // by default awarded_user_id is auth user $awardedUserId = $user->id; // if product->awarded_parent is true the set referral id as awarded // Only applies to new system if ($product->award_parent) { assert($user->new_referral_id); $awardedUserId = $user->new_referral_id; } $orderItem = new OrderItem(); $orderItem->fill(['product_id' => $product->id, 'order_id' => $order->id, 'quantity' => $quantity, 'product_price' => $product->isOtherProduct() ? $proofOfTransfer->amount : $price, 'delivery' => $delivery, 'index' => $index++, 'organization_id' => $organizationId, 'awarded_user_id' => $awardedUserId]); if ($this->date) { $orderItem->created_at = $this->date; } $orderItem->save(); } $this->orderCreated($order); return $order; }
public function fire() { App::setLocale('en'); try { \DB::table('options')->get(); } catch (QueryException $exception) { $this->error('Run artisan migrate before app install.'); return; } if (System::isInstalled()) { $this->error('App is already installed.'); return; } $siteName = $this->ask('Site Name?'); $masterUsername = $this->ask('Master Username?'); $masterEmail = $this->ask('Master Email?'); $masterPassword = $this->secret('Master Password?'); $confirmPassword = $this->secret('Confirm Password?'); $validator = Validator::make(['username' => $masterUsername, 'email' => $masterEmail, 'password' => $masterPassword, 'password_confirmation' => $confirmPassword, 'verification_code_for_username' => '-', 'verification_code_for_email' => '-'], (new SignUpRequest())->rules()); if ($validator->fails()) { foreach ($validator->errors()->all() as $error) { $this->error($error); } return; } System::setSiteName($siteName); $masterRole = new App\Role(); $masterRole->name = 'Master'; $masterRole->save(); System::setMasterRoleId($masterRole->id); $adminRole = new App\Role(); $adminRole->name = 'Administrator'; $adminRole->save(); System::setAdministratorRoleId($adminRole->id); $editorRole = new App\Role(); $editorRole->name = 'Editor'; $editorRole->save(); System::setEditorRoleId($editorRole->id); $defaultRole = new App\Role(); $defaultRole->name = 'User'; $defaultRole->save(); System::setDefaultRoleId($defaultRole->id); $user = UserManager::signUp($masterUsername, $masterEmail, null, $masterPassword); $user->save(); $user->roles()->attach($masterRole); $user->roles()->attach($adminRole); $user->roles()->attach($editorRole); $user->roles()->attach($defaultRole); Option::setValueByKey('installed', true); $this->info('Install success!'); }
/** * 以 手机号码 登录 * * @param $phone * @param $password * @param bool $remember * @return \Illuminate\Contracts\Auth\Authenticatable|null * @throws SignInException */ public static function signInByPhone($phone, $password, $remember = false) { if (!UserManager::isPhoneExists($phone)) { throw new SignInException(SignInException::PhoneNotExists); } if (Auth::attempt(['phone' => $phone, 'password' => $password], $remember)) { return Auth::user(); } throw new SignInException(SignInException::PasswordNotMatch); }