Passed
Pull Request — master (#56)
by Robbie
04:09 queued 01:16
created

LockCommand   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
lcom 1
cbo 2
dl 0
loc 25
rs 10
c 1
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A configure() 0 7 1
A execute() 0 14 2
1
<?php
2
3
namespace SilverLeague\Console\Command\Member;
4
5
use SilverStripe\ORM\FieldType\DBDatetime;
6
use SilverStripe\Security\Member;
7
use Symfony\Component\Console\Input\InputArgument;
8
use Symfony\Component\Console\Input\InputInterface;
9
use Symfony\Component\Console\Output\OutputInterface;
10
11
/**
12
 * Lock a user
13
 *
14
 * @package silverstripe-console
15
 * @author  Robbie Averill <[email protected]>
16
 */
17
class LockCommand extends AbstractMemberCommand
18
{
19
    protected function configure()
20
    {
21
        $this
22
            ->setName('member:lock')
23
            ->setDescription('Lock a member account')
24
            ->addArgument('email', InputArgument::OPTIONAL, 'Email address');
25
    }
26
27
    protected function execute(InputInterface $input, OutputInterface $output)
28
    {
29
        $member = $this->getMember($input, $output);
30
        if (!$member) {
31
            return;
32
        }
33
34
        $lockoutMins = Member::config()->get('lock_out_delay_mins');
35
        $member->LockedOutUntil = date('Y-m-d H:i:s', DBDatetime::now()->getTimestamp() + $lockoutMins * 60);
36
        $member->FailedLoginCount = 0;
37
        $member->write();
38
39
        $output->writeln('Member <info>' . $member->Email . '</info> locked for <info>' . $lockoutMins . ' mins.</info>');
40
    }
41
}
42
43