xref: /webtrees/app/Http/RequestHandlers/UsersCleanupAction.php (revision 2474349caa7b2aa11793e6008b000ebb1812e425)
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