Mise en place de la verification des credentials avec reconnexion automatique
This commit is contained in:
@@ -377,7 +377,7 @@ class APIController extends Controller
|
|||||||
$cursor = null;
|
$cursor = null;
|
||||||
|
|
||||||
// Nombre de tours
|
// Nombre de tours
|
||||||
$maxLoops = 10;
|
$maxLoops = 5;
|
||||||
|
|
||||||
// Boucle pour exécuter 5 tours
|
// Boucle pour exécuter 5 tours
|
||||||
for ($loop = 1; $loop <= $maxLoops; $loop++) {
|
for ($loop = 1; $loop <= $maxLoops; $loop++) {
|
||||||
@@ -537,6 +537,70 @@ class APIController extends Controller
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function check($user)
|
||||||
|
{
|
||||||
|
$stack = $this->Oauth1($user);
|
||||||
|
|
||||||
|
// Créer le client Guzzle avec le handler stack
|
||||||
|
$client = new Client([
|
||||||
|
'base_uri' => 'https://api.twitter.com/1.1/',
|
||||||
|
'handler' => $stack,
|
||||||
|
'proxy' => [
|
||||||
|
'http' => 'http://xtjnmwvl-'.$user->id.':lp7iv1lq9glu@p.webshare.io:80',
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
try{
|
||||||
|
// Effectuer la requête POST avec OAuth et les en-têtes personnalisés
|
||||||
|
$res = $client->get('account/verify_credentials.json', [
|
||||||
|
'headers' => $this->twitterHeaders, // Ajouter les en-têtes ici
|
||||||
|
'auth' => 'oauth' // Assurez-vous que l'authentification OAuth est incluse
|
||||||
|
]);
|
||||||
|
|
||||||
|
$suspended = json_decode($res->getBody()->getContents(), true);
|
||||||
|
|
||||||
|
if($suspended['suspended'] === true){
|
||||||
|
$user->enable = false;
|
||||||
|
$user->save();
|
||||||
|
|
||||||
|
$text = "Le compte ".$user->name.' a été suspendu';
|
||||||
|
Http::get('https://api.telegram.org/bot6784810105:AAEq3emnkRwdyvCLC-iqdIjVJ2Ke6HwwGjg/sendMessage', [
|
||||||
|
'chat_id' => '1970698501', // Remplacez par votre chat_id
|
||||||
|
'text' => $text,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}catch (\Exception $e){
|
||||||
|
$connexion = (new AccountController)->login($user->id);
|
||||||
|
|
||||||
|
if($connexion){
|
||||||
|
$text = "Le compte ".$user->name.' a été synchronisé';
|
||||||
|
Http::get('https://api.telegram.org/bot6784810105:AAEq3emnkRwdyvCLC-iqdIjVJ2Ke6HwwGjg/sendMessage', [
|
||||||
|
'chat_id' => '1970698501', // Remplacez par votre chat_id
|
||||||
|
'text' => $text,
|
||||||
|
]);
|
||||||
|
}elseif(!$connexion){
|
||||||
|
$user->enable = false;
|
||||||
|
$user->save();
|
||||||
|
|
||||||
|
$text = "Le compte ".$user->name.' n\'a pas pu être synchronisé. Il a été désactivé';
|
||||||
|
Http::get('https://api.telegram.org/bot6784810105:AAEq3emnkRwdyvCLC-iqdIjVJ2Ke6HwwGjg/sendMessage', [
|
||||||
|
'chat_id' => '1970698501', // Remplacez par votre chat_id
|
||||||
|
'text' => $text,
|
||||||
|
]);
|
||||||
|
}else{
|
||||||
|
$user->enable = false;
|
||||||
|
$user->save();
|
||||||
|
|
||||||
|
$text = "Problème sur le compte ".$user->name.'. Il a été désactivé';
|
||||||
|
Http::get('https://api.telegram.org/bot6784810105:AAEq3emnkRwdyvCLC-iqdIjVJ2Ke6HwwGjg/sendMessage', [
|
||||||
|
'chat_id' => '1970698501', // Remplacez par votre chat_id
|
||||||
|
'text' => $text,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private function Oauth1($user)
|
private function Oauth1($user)
|
||||||
{
|
{
|
||||||
// Créer le stack pour gérer l'authentification OAuth
|
// Créer le stack pour gérer l'authentification OAuth
|
||||||
|
|||||||
@@ -2,13 +2,8 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Jobs\ProcessNews;
|
|
||||||
use App\Models\Account;
|
use App\Models\Account;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use Illuminate\Support\Facades\Queue;
|
|
||||||
use App\Http\Controllers\APIController;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Webklex\PHPIMAP\ClientManager;
|
use Webklex\PHPIMAP\ClientManager;
|
||||||
|
|
||||||
class AccountController extends Controller
|
class AccountController extends Controller
|
||||||
@@ -17,6 +12,7 @@ class AccountController extends Controller
|
|||||||
{
|
{
|
||||||
$user = Account::find($id);
|
$user = Account::find($id);
|
||||||
|
|
||||||
|
try{
|
||||||
$username = $user->name;
|
$username = $user->name;
|
||||||
$password = $user->password;
|
$password = $user->password;
|
||||||
$email = $user->rambler_email;
|
$email = $user->rambler_email;
|
||||||
@@ -221,6 +217,10 @@ class AccountController extends Controller
|
|||||||
}else{
|
}else{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}catch (\Exception $e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
private function getCodeFromLastEmail($email, $password)
|
private function getCodeFromLastEmail($email, $password)
|
||||||
{
|
{
|
||||||
@@ -269,73 +269,4 @@ class AccountController extends Controller
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tweetnews()
|
|
||||||
{
|
|
||||||
// Vérifier si la queue est vide (en fonction de votre driver)
|
|
||||||
$queue = Queue::getDefaultDriver(); // Par défaut, c'est 'default'
|
|
||||||
|
|
||||||
$jobsCount = Queue::size($queue);
|
|
||||||
|
|
||||||
if ($jobsCount === 0) {
|
|
||||||
|
|
||||||
$accounts = Account::where('enable', true)->get();
|
|
||||||
|
|
||||||
foreach($accounts as $user){
|
|
||||||
|
|
||||||
$API = new APIController();
|
|
||||||
|
|
||||||
//On check les notifs
|
|
||||||
$API->unread($user);
|
|
||||||
|
|
||||||
if (Cache::has('news')) {
|
|
||||||
$news = Cache::get('news');
|
|
||||||
}else{
|
|
||||||
$news = $API->newstweet($user);
|
|
||||||
}
|
|
||||||
|
|
||||||
shuffle($news);
|
|
||||||
|
|
||||||
$nb = rand(1,3);
|
|
||||||
|
|
||||||
if (count($news) >= $nb) {
|
|
||||||
$selectedArticles = array_slice($news, 0, $nb);
|
|
||||||
|
|
||||||
foreach ($selectedArticles as $article) {
|
|
||||||
|
|
||||||
$tweetid = $article['conversation_id_str'];
|
|
||||||
$API->retweet($user, $tweetid);
|
|
||||||
sleep(15);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public
|
|
||||||
function auto($contestId)
|
|
||||||
{
|
|
||||||
$contest = Contest::find($contestId);
|
|
||||||
|
|
||||||
if (!$contest) {
|
|
||||||
session()->flash('error', 'Concours introuvable.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
flash()->success('Concours ' . $contest->name . ' en cours de participation');
|
|
||||||
|
|
||||||
// Récupération des comptes activés
|
|
||||||
$accounts = Account::where('enable', true)->get();
|
|
||||||
|
|
||||||
foreach ($accounts as $account) {
|
|
||||||
ProcessTweet::dispatch($contest->id, $account->id); // Envoi du tweet pour participer
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mise à jour du concours pour indiquer qu'il a été participé
|
|
||||||
$contest->participated = true;
|
|
||||||
$contest->save();
|
|
||||||
|
|
||||||
// Recharger les concours
|
|
||||||
$this->resetPage(); // Reset pagination to the first page
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,4 @@ Route::view('profile', 'profile.edit')
|
|||||||
Route::get('/aplifier/list', [ContestController::class, 'twitterlist']);
|
Route::get('/aplifier/list', [ContestController::class, 'twitterlist']);
|
||||||
Route::get('/aplifier/search', [ContestController::class, 'searchcontest']);
|
Route::get('/aplifier/search', [ContestController::class, 'searchcontest']);
|
||||||
|
|
||||||
Route::get('/unread/{user}', [\App\Http\Controllers\APIController::class, 'unread']);
|
|
||||||
|
|
||||||
Route::get('/api/news', [\App\Http\Controllers\AccountController::class, 'tweetnews']);
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user