first commit after reset
[mixstore.git] / src / Mixstore / UserBundle / Controller / MyAdminController.php
1 <?php
2
3 namespace Mixstore\UserBundle\Controller;
4
5 use Symfony\Component\HttpFoundation\Response;
6 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
7 use Mixstore\StoreBundle\Entity\Language;
8
9 class MyAdminController extends Controller
10 {
11 //helper
12 private function checkSuperAdmin()
13 {
14 $sadmin = $this->getUser();
15 if (is_null($sadmin) || !in_array('ROLE_SUPER_ADMIN', $sadmin->getRoles()))
16 //TODO: nice error page
17 return $this->redirect($this->generateUrl('mixstore_static_home'));
18 }
19
20 //set initial languages
21 public function setLanguageAction()
22 {
23 $this->checkSuperAdmin();
24
25 $em = $this->getDoctrine()->getManager();
26 foreach (array('C', 'C#', 'C++', 'Fortran', 'Java', 'Julia', 'Lua', 'MATLAB', 'Octave', 'Python', 'R', 'Scilab') as $lgName)
27 $em->persist(new Language($lgName));
28 $em->flush();
29
30 return new Response('OK');
31 }
32
33 public function addLanguageAction($lgname)
34 {
35 $this->checkSuperAdmin();
36
37 $em = $this->getDoctrine()->getManager();
38 $em->persist(new Language($lgname));
39 $em->flush();
40
41 return new Response('OK');
42 }
43
44 public function usersAction()
45 {
46 $this->checkSuperAdmin();
47
48 return $this->render('MixstoreUserBundle:Admin:users.html.twig', array(
49 'users' => $this
50 ->getDoctrine()
51 ->getManager()
52 ->getRepository('MixstoreUserBundle:User')
53 ->findAll(),
54 ));
55 }
56
57 public function toggleAction()
58 {
59 $this->checkSuperAdmin();
60
61 //get id of user to toggle
62 $userId = $this->getRequest()->get('id');
63 //get user to toggle
64 $em = $this->getDoctrine()->getManager();
65 $user = $em
66 ->getRepository('MixstoreUserBundle:User')
67 ->findById($userId)[0];
68
69 if (in_array('ROLE_ADMIN', $user->getRoles()))
70 $user->setRoles(array('ROLE_USER'));
71 else
72 $user->setRoles(array('ROLE_ADMIN'));
73
74 //save new state
75 $em->persist($user);
76 $em->flush();
77
78 //dummy unused answer (no error case for the moment)
79 return new Response('OK');
80 }
81
82 public function deleteAction($id)
83 {
84 $this->checkSuperAdmin();
85
86 $em = $this->getDoctrine()->getManager();
87 $user = $em
88 ->getRepository('MixstoreUserBundle:User')
89 ->findById($id)[0];
90 $em->remove($user);
91 $em->flush();
92
93 return new Response('OK');
94 }
95
96 //unique usage: set super admin
97 public function setsaAction()
98 {
99 $em = $this->getDoctrine()->getManager();
100 $sadmin = $em
101 ->getRepository('MixstoreUserBundle:User')
102 ->findById(1)[0]; //HACK: hard-coded ID
103
104 $sadmin->setRoles(array('ROLE_ADMIN', 'ROLE_SUPER_ADMIN'));
105 $em->persist($sadmin);
106 $em->flush();
107
108 return new response('OK');
109 }
110 }