UserAdminController   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 28
c 1
b 0
f 0
dl 0
loc 57
ccs 0
cts 30
cp 0
rs 10
wmc 8

3 Methods

Rating   Name   Duplication   Size   Complexity  
A edit() 0 17 4
A index() 0 9 1
A add() 0 16 3
1
<?php
2
3
namespace Obblm\Core\Controller\Admin;
4
5
use Obblm\Core\Entity\Coach;
6
use Doctrine\ORM\EntityManagerInterface;
7
use Obblm\Core\Form\Coach\AdminUserForm;
8
use Obblm\Core\Security\Roles;
9
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
10
use Symfony\Component\HttpFoundation\Request;
11
use Symfony\Component\HttpFoundation\Response;
12
use Symfony\Component\Routing\Annotation\Route;
13
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
14
15
/**
16
 * Class UserAdminController
17
 * @package Obblm\Core\Controller\Admin
18
 *
19
 * @Route("/admin/users")
20
 */
21
class UserAdminController extends AbstractController
22
{
23
    /**
24
     * @Route("/", name="admin_users")
25
     */
26
    public function index(EntityManagerInterface $em):Response
27
    {
28
        $this->denyAccessUnlessGranted(Roles::ADMIN);
29
30
        $users = $em->getRepository(Coach::class)
31
                    ->findAll();
32
33
        return $this->render('@ObblmCore/admin/users/index.html.twig', [
34
            'users' => $users
35
        ]);
36
    }
37
    /**
38
     * @Route("/add", name="admin_users_add")
39
     */
40
    public function add(Request $request, UserPasswordEncoderInterface $passwordEncoder, EntityManagerInterface $em):Response
41
    {
42
        $this->denyAccessUnlessGranted(Roles::ADMIN);
43
44
        $user = new Coach();
45
        $form = $this->createForm(AdminUserForm::class, $user);
46
47
        $form->handleRequest($request);
48
        if ($form->isSubmitted() && $form->isValid()) {
49
            $password = $passwordEncoder->encodePassword($user, $user->getPlainPassword());
0 ignored issues
show
Bug introduced by
It seems like $user->getPlainPassword() can also be of type null; however, parameter $plainPassword of Symfony\Component\Securi...rface::encodePassword() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

49
            $password = $passwordEncoder->encodePassword($user, /** @scrutinizer ignore-type */ $user->getPlainPassword());
Loading history...
50
            $user->setPassword($password)->setPlainPassword('');
51
            $em->persist($user);
52
            $em->flush();
53
        }
54
        return $this->render('@ObblmCore/admin/users/form.html.twig', [
55
            'form' => $form->createView()
56
        ]);
57
    }
58
    /**
59
     * @Route("/edit/{user}", name="admin_users_edit")
60
     */
61
    public function edit(Coach $user, Request $request, UserPasswordEncoderInterface $passwordEncoder, EntityManagerInterface $em):Response
62
    {
63
        $this->denyAccessUnlessGranted(Roles::ADMIN);
64
65
        $form = $this->createForm(AdminUserForm::class, $user);
66
67
        $form->handleRequest($request);
68
        if ($form->isSubmitted() && $form->isValid()) {
69
            if ($user->getPlainPassword() !== null) {
70
                $password = $passwordEncoder->encodePassword($user, $user->getPlainPassword());
71
                $user->setPassword($password)->setPlainPassword('');
72
            }
73
            $em->persist($user);
74
            $em->flush();
75
        }
76
        return $this->render('@ObblmCore/admin/users/form.html.twig', [
77
            'form' => $form->createView()
78
        ]);
79
    }
80
}
81