function getUniqueSerialNumber($serial_number = null)
{
    if (!$serial_number) {
        $serial_number = mt_rand(2, 268435455);
    }
    $serial = new Serials();
    $serial->serial_id = $serial_number;
    $temp = $serial->findAll();
    if ($temp) {
        //serial number exists
        /* if temp is more than 8 hours old */
        if (abs(compareTimes($temp->updated_at)) > 1440) {
            $temp->ip_address = Request::getClientIp();
            $temp->welcomed = 0;
            $temp->save();
            Session::put('unique_serial', $temp->serial_id);
            Session::put('serial_id', $temp->id);
            if (Auth::check()) {
                Auth::user()->serial_id = $temp->id;
                Auth::user()->disconnecting = 0;
                Auth::user()->online = 1;
                Auth::user()->save();
                $node = new NodeAuth();
                $node->serial = $serial->serial_id;
                $node->sid = Session::getId();
                $node->authorized = 1;
                if ($node->findAll()) {
                    $node = $node->findAll();
                }
                $node->user_id = Auth::user()->id;
                $node->user = Auth::user()->name;
                $node->serial_id = $serial->id;
                $node->save();
            }
            return true;
        }
        $serial_number = mt_rand(0, 16777215);
        return getUniqueSerialNumber($serial_number);
    }
    $serial->ip_address = Request::getClientIp();
    $serial->welcomed = 0;
    $serial->save();
    Session::put('unique_serial', $serial->serial_id);
    Session::put('serial_id', $serial->id);
    if (Auth::check()) {
        Auth::user()->serial_id = $serial->id;
        Auth::user()->disconnecting = 0;
        Auth::user()->online = 1;
        Auth::user()->save();
        $node = new NodeAuth();
        $node->serial = $serial->serial_id;
        $node->sid = Session::getId();
        $node->authorized = 1;
        if ($node->findAll()) {
            $node = $node->findAll();
        }
        $node->user_id = Auth::user()->id;
        $node->user = Auth::user()->name;
        $node->serial_id = $serial->id;
        $node->save();
    }
    return true;
}
 public function nodeAuth()
 {
     $node = new NodeAuth();
     $node->user_id = Auth::user()->id;
     $node->user = Auth::user()->name;
     $node->serial_id = Auth::user()->serial_id;
     if ($node->findAll(1)) {
         $node = $node->findAll(1);
     }
     $node->serial = Session::get('unique_serial');
     $node->serial_id = Session::get('serial_id');
     $node->sid = Session::getId();
     $node->authorized = 1;
     $node->save();
 }