예제 #1
0
function countSMS($message, $mobile)
{
    $finalMessage = $message;
    $msg_count = 0;
    if (strlen($finalMessage) > 0 && strlen($finalMessage) <= 161) {
        $msg_count = 1;
    } elseif (strlen($finalMessage) > 161 && strlen($finalMessage) <= 307) {
        $msg_count = 2;
    } elseif (strlen($finalMessage) > 307) {
        $msg_count = 3;
    } else {
        echo 'msg not sent';
    }
    $mobileNoCount = count(explode(",", $mobile));
    $field_array = array('created' => date("Y-m-d H:i:s", time()), 'mobile' => $mobile, 'message' => $message, 'count' => $msg_count * $mobileNoCount);
    $medical_sms = new SMS();
    $medical_sms->create($field_array);
    //    $smsCount->create();
}
예제 #2
0
 /**
  * @return \Illuminate\Http\JsonResponse
  */
 public function auth()
 {
     //TODO rate limit
     //TODO Validation
     $udid = Input::get('udid');
     $phone = Input::get('phone');
     if (strlen($phone) < 9) {
         return $this->respondInsufficientPrivileges('Номер телефона слишком короткий');
     }
     if (intval($phone[2]) == 0) {
         return $this->respondInsufficientPrivileges('Вы пытаетесь зарегистрировать несуществующий номер.');
     }
     $providerCode = intval($phone[0] . $phone[1]);
     if (!in_array($providerCode, [99, 50, 51, 55, 70, 77])) {
         return $this->respondInsufficientPrivileges('Таких операторов не существует.');
     }
     $type = Input::has('type') ? Input::get('type') : 'verify';
     $phoneModel = Phone::withTrashed()->where('number', $phone)->first();
     if ($phoneModel && $type != 'reset') {
         if (!$phoneModel->deleted_at) {
             return $this->respondInsufficientPrivileges("Номер занят");
         }
         if (Carbon::now()->lte(Carbon::parse($phoneModel->deleted_at)->addDays(30))) {
             $allowedTime = Carbon::parse($phoneModel->deleted_at)->addDays(30);
             return $this->respondInsufficientPrivileges("Данный номер телефона не доступен для регистрации до {$allowedTime}");
         }
     }
     if ($type == 'changePhone') {
         if ($phoneModel) {
             return $this->respondInsufficientPrivileges("Number is already occupied");
         }
         $header = Request::header('Authorization');
         if (is_null($header)) {
             return $this->respondInvalidApi('Unauthorized');
         }
         if (!isset(explode(' ', $header)[1])) {
             return $this->respondInvalidApi('Unauthorized');
         }
         $token = explode(' ', $header)[1];
         if ($token) {
             $device = Device::where('auth_token', $token)->orderBy('id', 'desc')->first();
             $user = $device->user;
             if (!$user->checkPasswordAttribute(Input::get('password'))) {
                 return $this->respondInsufficientPrivileges('Wrong password');
             }
         }
     }
     if (!$phoneModel && $type == 'reset') {
         return $this->respondInsufficientPrivileges('Number not found');
     }
     $tempSMS = SMS::where('device', $udid)->where('phone', $phone)->orderBy('id')->first();
     if ($tempSMS) {
         $minTime = Carbon::parse($tempSMS->sent_at)->addMinutes(3);
         $maxTime = Carbon::parse($tempSMS->sent_at)->addHour();
         if ($tempSMS->verified) {
             if (Carbon::now()->lte($maxTime)) {
                 return $this->respond(['status' => 3, 'token' => $tempSMS->token]);
             }
         }
         if (Carbon::now()->lte($minTime)) {
             return $this->respond(['message' => 'Please wait ' . Carbon::now()->diffInSeconds($minTime) . ' seconds', 'timeout' => Carbon::now()->diffInSeconds($minTime), 'token' => $tempSMS->token, 'status' => 2]);
         }
         $tempSMS->code = rand(1000, 10000);
         $tempSMS->sent_at = Carbon::now()->toDateTimeString();
         // TODO Send sms
         $smsSender = new smsSender(fetchNumber($phone), $tempSMS->code);
         $smsSender->send(function ($res) {
             //				dd($res->xml());
         });
         $tempSMS->save();
         return $this->respond(['timeout' => 180, 'token' => $tempSMS->token, 'status' => 2]);
     } else {
         $code = rand(1000, 10000);
         $newSMSEntry = SMS::create(['phone' => $phone, 'code' => $code, 'token' => base64_encode(openssl_random_pseudo_bytes(32)), 'device' => $udid, 'sent_at' => Carbon::now()->toDateTimeString()]);
     }
     //TODO Send an SMS
     $smsSender = new smsSender(fetchNumber($phone), $code);
     $smsSender->send(function ($res) {
         //			dd($res->xml());
     });
     //SMS Logic
     if (isset($newSMSEntry)) {
         return $this->respond(['timeout' => 180, 'token' => $newSMSEntry->token, 'status' => 2]);
     }
     return $this->respondServerError('Something went wrong');
 }