Mise en place de la verification des credentials avec reconnexion automatique

This commit is contained in:
hugol
2024-11-17 17:28:20 +01:00
parent 8dc18553ec
commit 3192b5cffa
3 changed files with 226 additions and 234 deletions

View File

@@ -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

View File

@@ -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
}
} }

View File

@@ -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']);