1*2474349cSGreg Roach<?php 2*2474349cSGreg Roach 3*2474349cSGreg Roach/** 4*2474349cSGreg Roach * webtrees: online genealogy 5*2474349cSGreg Roach * Copyright (C) 2019 webtrees development team 6*2474349cSGreg Roach * This program is free software: you can redistribute it and/or modify 7*2474349cSGreg Roach * it under the terms of the GNU General Public License as published by 8*2474349cSGreg Roach * the Free Software Foundation, either version 3 of the License, or 9*2474349cSGreg Roach * (at your option) any later version. 10*2474349cSGreg Roach * This program is distributed in the hope that it will be useful, 11*2474349cSGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 12*2474349cSGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*2474349cSGreg Roach * GNU General Public License for more details. 14*2474349cSGreg Roach * You should have received a copy of the GNU General Public License 15*2474349cSGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 16*2474349cSGreg Roach */ 17*2474349cSGreg Roach 18*2474349cSGreg Roachdeclare(strict_types=1); 19*2474349cSGreg Roach 20*2474349cSGreg Roachnamespace Fisharebest\Webtrees\Http\RequestHandlers; 21*2474349cSGreg Roach 22*2474349cSGreg Roachuse Fisharebest\Webtrees\Contracts\UserInterface; 23*2474349cSGreg Roachuse Fisharebest\Webtrees\FlashMessages; 24*2474349cSGreg Roachuse Fisharebest\Webtrees\I18N; 25*2474349cSGreg Roachuse Fisharebest\Webtrees\Log; 26*2474349cSGreg Roachuse Fisharebest\Webtrees\Services\UserService; 27*2474349cSGreg Roachuse Psr\Http\Message\ResponseInterface; 28*2474349cSGreg Roachuse Psr\Http\Message\ServerRequestInterface; 29*2474349cSGreg Roachuse Psr\Http\Server\RequestHandlerInterface; 30*2474349cSGreg Roach 31*2474349cSGreg Roachuse function e; 32*2474349cSGreg Roachuse function redirect; 33*2474349cSGreg Roachuse function route; 34*2474349cSGreg Roach 35*2474349cSGreg Roach/** 36*2474349cSGreg Roach * Delete old/inactive users. 37*2474349cSGreg Roach */ 38*2474349cSGreg Roachclass UsersCleanupAction implements RequestHandlerInterface 39*2474349cSGreg Roach{ 40*2474349cSGreg Roach /** @var UserService */ 41*2474349cSGreg Roach private $user_service; 42*2474349cSGreg Roach 43*2474349cSGreg Roach /** 44*2474349cSGreg Roach * @param UserService $user_service 45*2474349cSGreg Roach */ 46*2474349cSGreg Roach public function __construct(UserService $user_service) 47*2474349cSGreg Roach { 48*2474349cSGreg Roach $this->user_service = $user_service; 49*2474349cSGreg Roach } 50*2474349cSGreg Roach 51*2474349cSGreg Roach /** 52*2474349cSGreg Roach * @param ServerRequestInterface $request 53*2474349cSGreg Roach * 54*2474349cSGreg Roach * @return ResponseInterface 55*2474349cSGreg Roach */ 56*2474349cSGreg Roach public function handle(ServerRequestInterface $request): ResponseInterface 57*2474349cSGreg Roach { 58*2474349cSGreg Roach $delete = $request->getParsedBody()['delete'] ?? []; 59*2474349cSGreg Roach 60*2474349cSGreg Roach foreach ($delete as $user_id) { 61*2474349cSGreg Roach $user = $this->user_service->find($user_id); 62*2474349cSGreg Roach if ($user instanceof UserInterface) { 63*2474349cSGreg Roach $this->user_service->delete($user); 64*2474349cSGreg Roach 65*2474349cSGreg Roach Log::addAuthenticationLog('Deleted user: ' . $user->userName()); 66*2474349cSGreg Roach 67*2474349cSGreg Roach FlashMessages::addMessage(I18N::translate('The user %s has been deleted.', e($user->userName())), 'success'); 68*2474349cSGreg Roach } 69*2474349cSGreg Roach } 70*2474349cSGreg Roach 71*2474349cSGreg Roach $url = route(UsersCleanupPage::class); 72*2474349cSGreg Roach 73*2474349cSGreg Roach return redirect($url); 74*2474349cSGreg Roach } 75*2474349cSGreg Roach} 76