mirror of
https://github.com/quentin-g-dev/afup.git
synced 2026-03-26 02:02:15 +01:00
73 lines
2.6 KiB
PHP
73 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace AppBundle\Slack;
|
|
|
|
use AppBundle\Association\Model\Repository\UserRepository;
|
|
|
|
class UsersChecker
|
|
{
|
|
/**
|
|
* @var UsersClient
|
|
*/
|
|
private $usersClient;
|
|
|
|
/**
|
|
* @var UserRepository
|
|
*/
|
|
private $userRepository;
|
|
|
|
public function __construct(UsersClient $usersClient, UserRepository $userRepository)
|
|
{
|
|
$this->usersClient = $usersClient;
|
|
$this->userRepository = $userRepository;
|
|
}
|
|
|
|
/**
|
|
* Retourne la liste des utilisateurs devant être supprimé du slack membre
|
|
* @return array
|
|
* @throws \CCMBenchmark\Ting\Query\QueryException
|
|
*/
|
|
public function checkUsersValidity()
|
|
{
|
|
$result = [];
|
|
$cursor = '';
|
|
$today = new \DateTimeImmutable();
|
|
do {
|
|
//Récupère une page d'utilisateur dans Slack
|
|
$page = $this->usersClient->loadPage($cursor);
|
|
foreach ($page['members'] as $user) {
|
|
// Ne traite pas les utilisateurs sans adresse courriel ou supprimé
|
|
if (!isset($user['profile']['email']) || $user['deleted'] === true || $user['is_admin'] === true) {
|
|
continue;
|
|
}
|
|
$email = $user['profile']['email'];
|
|
$userInfo = [
|
|
'slack_username' => $user['name'],
|
|
'slack_realname' => $user['real_name'],
|
|
'slack_email' => $email,
|
|
'user_found' => false,
|
|
'afup_last_subscription' => null,
|
|
'afup_user_id' => null,
|
|
];
|
|
//Vérification de l'utilisateur Slack dans la base du site
|
|
try {
|
|
$userDb = $this->userRepository->loadUserByEmaiOrAlternateEmail($email);
|
|
$userInfo['afup_last_subscription']=$userDb->getLastSubscription();
|
|
$userInfo['afup_user_id'] = $userDb->getId();
|
|
$userInfo['user_found']=true;
|
|
if ($userDb->getLastSubscription() < $today) {
|
|
//Utilisateur inactif ou sans souscription : a supprimer
|
|
$result[] = $userInfo;
|
|
}
|
|
} catch (\Symfony\Component\Security\Core\Exception\UsernameNotFoundException $e) {
|
|
//User Not found ! A supprimer de slack !
|
|
$result[] = $userInfo;
|
|
}
|
|
}
|
|
//Récupère le curseur pour la page suivante
|
|
$cursor = $page['response_metadata']['next_cursor'];
|
|
} while ($cursor !== '');
|
|
return $result;
|
|
}
|
|
}
|