export usergroup (ref #14)
This commit is contained in:
parent
b56ea851d1
commit
5e7f1ba3c7
|
@ -11,6 +11,9 @@ use Symfony\Component\Form\FormError;
|
||||||
use Ramsey\Uuid\Uuid;
|
use Ramsey\Uuid\Uuid;
|
||||||
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
|
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
|
||||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
|
use Symfony\Component\Filesystem\Filesystem;
|
||||||
|
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
|
||||||
|
|
||||||
use Cadoles\CoreBundle\Entity\Group;
|
use Cadoles\CoreBundle\Entity\Group;
|
||||||
use Cadoles\CoreBundle\Entity\Usergroup;
|
use Cadoles\CoreBundle\Entity\Usergroup;
|
||||||
|
@ -222,6 +225,7 @@ class GroupController extends Controller
|
||||||
|
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$group=$this->getData($id);
|
$group=$this->getData($id);
|
||||||
|
$this->canManager($group,$access);
|
||||||
|
|
||||||
$sub = $em->createQueryBuilder();
|
$sub = $em->createQueryBuilder();
|
||||||
$sub->select("usergroup");
|
$sub->select("usergroup");
|
||||||
|
@ -351,6 +355,7 @@ class GroupController extends Controller
|
||||||
|
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$group=$this->getData($id);
|
$group=$this->getData($id);
|
||||||
|
$this->canManager($group,$access);
|
||||||
|
|
||||||
$sub = $em->createQueryBuilder();
|
$sub = $em->createQueryBuilder();
|
||||||
$sub->select("usergroup");
|
$sub->select("usergroup");
|
||||||
|
@ -499,6 +504,7 @@ class GroupController extends Controller
|
||||||
$groupid=$request->request->get('groupid');
|
$groupid=$request->request->get('groupid');
|
||||||
|
|
||||||
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
|
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
|
||||||
|
$this->canManager($group,$access);
|
||||||
if($group->getFgAll()||$group->getFgtemplate())
|
if($group->getFgAll()||$group->getFgtemplate())
|
||||||
throw $this->createNotFoundException('Permission denied');
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
|
||||||
|
@ -563,6 +569,7 @@ class GroupController extends Controller
|
||||||
$groupid=$request->request->get('groupid');
|
$groupid=$request->request->get('groupid');
|
||||||
|
|
||||||
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
|
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
|
||||||
|
$this->canManager($group,$access);
|
||||||
if($group->getFgAll()||$group->getFgTemplate())
|
if($group->getFgAll()||$group->getFgTemplate())
|
||||||
throw $this->createNotFoundException('Permission denied');
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
|
||||||
|
@ -660,6 +667,9 @@ class GroupController extends Controller
|
||||||
$userid=$request->request->get('user');
|
$userid=$request->request->get('user');
|
||||||
$groupid=$request->request->get('group');
|
$groupid=$request->request->get('group');
|
||||||
|
|
||||||
|
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
|
||||||
|
$this->canManager($group,$access);
|
||||||
|
|
||||||
$data = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid));
|
$data = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid));
|
||||||
if($data) $data->setFgmanager(!$data->getFgmanager());
|
if($data) $data->setFgmanager(!$data->getFgmanager());
|
||||||
|
|
||||||
|
@ -760,6 +770,7 @@ class GroupController extends Controller
|
||||||
// Récupération de l'enregistrement courant
|
// Récupération de l'enregistrement courant
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$data=$this->getData($id);
|
$data=$this->getData($id);
|
||||||
|
$this->canOwner($data,$access);
|
||||||
|
|
||||||
// Création du formulaire
|
// Création du formulaire
|
||||||
$form = $this->createForm(GroupType::class,$data,array(
|
$form = $this->createForm(GroupType::class,$data,array(
|
||||||
|
@ -837,6 +848,7 @@ class GroupController extends Controller
|
||||||
|
|
||||||
// Récupération de l'enregistrement courant
|
// Récupération de l'enregistrement courant
|
||||||
$data=$this->getData($id);
|
$data=$this->getData($id);
|
||||||
|
$this->canOwner($data,$access);
|
||||||
|
|
||||||
// Vérifier que cet enregistrement est supprimable
|
// Vérifier que cet enregistrement est supprimable
|
||||||
if($data->getFgAll()||$data->getFgTemplate())
|
if($data->getFgAll()||$data->getFgTemplate())
|
||||||
|
@ -917,6 +929,7 @@ class GroupController extends Controller
|
||||||
{
|
{
|
||||||
// Récupération de l'enregistrement courant
|
// Récupération de l'enregistrement courant
|
||||||
$data=$this->getData($id);
|
$data=$this->getData($id);
|
||||||
|
$this->canManager($data,$access);
|
||||||
|
|
||||||
// Affichage du formulaire
|
// Affichage du formulaire
|
||||||
return $this->render($this->labelentity.':users.html.twig', [
|
return $this->render($this->labelentity.':users.html.twig', [
|
||||||
|
@ -928,6 +941,106 @@ class GroupController extends Controller
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function usergroupexportAction($id,Request $request, $access="config")
|
||||||
|
{
|
||||||
|
// Récupération de l'enregistrement courant
|
||||||
|
$data=$this->getData($id);
|
||||||
|
$this->canManager($data,$access);
|
||||||
|
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$dir = $this->get('kernel')->getRootDir() . '/../uploads/export/';
|
||||||
|
$file = "export-".$id.".csv";
|
||||||
|
|
||||||
|
$fs = new Filesystem();
|
||||||
|
$fs->mkdir($dir);
|
||||||
|
|
||||||
|
$csvh = fopen($dir.$file, 'w');
|
||||||
|
$d = ';'; // this is the default but i like to be explicit
|
||||||
|
$e = '"'; // this is the default but i like to be explicit
|
||||||
|
|
||||||
|
// Entête de colonne
|
||||||
|
$data=["id","Login","Nom","Prénom","Email","Téléphone",$this->getParameter("labelniveau01"),$this->getParameter("labelniveau02"),"Métier","Fonction","Nom Usage","Autres Prénom","Sexe","Adresse","Date Naissance","Pays Naissance","Ville Naissance"];
|
||||||
|
fputcsv($csvh, $data, $d, $e);
|
||||||
|
|
||||||
|
// Liste des utilisateurs en fonction du role de l'utilisateur en cours
|
||||||
|
$qb = $em->createQueryBuilder();
|
||||||
|
if($this->isGranted('ROLE_ADMIN')||$access=="user") {
|
||||||
|
$users = $qb->select('user')
|
||||||
|
->from('CadolesCoreBundle:User','user')
|
||||||
|
->from('CadolesCoreBundle:UserGroup','usergroup')
|
||||||
|
->where('usergroup.group=:group')
|
||||||
|
->andWhere('usergroup.user=user')
|
||||||
|
->setParameter("group", $id)
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
}
|
||||||
|
elseif($this->isGranted('ROLE_MODO')) {
|
||||||
|
$users = $qb->select('user')
|
||||||
|
->from('CadolesCoreBundle:User','user')
|
||||||
|
->from('CadolesCoreBundle:UserGroup','usergroup')
|
||||||
|
->from('CadolesCoreBundle:Niveau01','niveau01')
|
||||||
|
->from('CadolesCoreBundle:UserModo', 'usermodo')
|
||||||
|
->where('usergroup.group=:group')
|
||||||
|
->andWhere('usergroup.user=user')
|
||||||
|
->andwhere('user.niveau01=niveau01.id')
|
||||||
|
->andwhere("usermodo.niveau01 = user.niveau01")
|
||||||
|
->andWhere("usermodo.user = :userid")
|
||||||
|
->setParameter("group", $id)
|
||||||
|
->setParameter("userid", $this->getUser()->getId())
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($users as $user) {
|
||||||
|
$data = [
|
||||||
|
"id"=>$user->getId(),
|
||||||
|
"username"=>$user->getUsername(),
|
||||||
|
"name"=>$user->getLastname(),
|
||||||
|
"firstname"=>$user->getFirstname(),
|
||||||
|
"email"=>$user->getEmail(),
|
||||||
|
"phone"=>$user->getTelephonenumber(),
|
||||||
|
"niveau01"=>$user->getNiveau01()->getLabel(),
|
||||||
|
"niveau02"=>($user->getNiveau02()?$user->getNiveau02()->getLabel():""),
|
||||||
|
"job"=>$user->getJob(),
|
||||||
|
"position"=>$user->getPosition(),
|
||||||
|
"usualname"=>$user->getUsualname(),
|
||||||
|
"givensname"=>$user->getGivensname(),
|
||||||
|
"gender"=>$user->getGender(),
|
||||||
|
"postaladress"=>$user->getPostaladress(),
|
||||||
|
"birthdate"=>($user->getBirthdate()?$user->getBirthdate()->format("d/m/Y"):""),
|
||||||
|
"birthcountry"=>($user->getBirthcountry()?$user->getBirthcountry()->getLabel():""),
|
||||||
|
"birthplace"=>($user->getBirthplace()?$user->getBirthplace()->getLabel():""),
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
fputcsv($csvh, $data, $d, $e);
|
||||||
|
}
|
||||||
|
fclose($csvh);
|
||||||
|
|
||||||
|
$response = new BinaryFileResponse($dir.$file);
|
||||||
|
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function canManager($group,$access) {
|
||||||
|
if($access!="config") {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$ismanager=$em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$this->getUser(),"fgmanager"=>true]);
|
||||||
|
if(!$ismanager)
|
||||||
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function canOwner($group,$access) {
|
||||||
|
if($access!="config") {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$isowner=($group->getOwner()==$this->getUser());
|
||||||
|
if(!$isowner)
|
||||||
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected function ctrlOwner($group) {
|
protected function ctrlOwner($group) {
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
if($group->getOwner()) {
|
if($group->getOwner()) {
|
||||||
|
|
|
@ -804,10 +804,6 @@ class UserController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($users as $user) {
|
foreach($users as $user) {
|
||||||
$groups="";
|
|
||||||
foreach($user->getGroups() as $group) {
|
|
||||||
$groups.=$group->getGroup()->getLabel()." ";
|
|
||||||
}
|
|
||||||
$data = [
|
$data = [
|
||||||
"id"=>$user->getId(),
|
"id"=>$user->getId(),
|
||||||
"username"=>$user->getUsername(),
|
"username"=>$user->getUsername(),
|
||||||
|
|
|
@ -385,6 +385,10 @@ cadoles_core_config_group_ajax_switchmanager:
|
||||||
path: /config/group/ajax/switchmanager
|
path: /config/group/ajax/switchmanager
|
||||||
defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: config }
|
defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: config }
|
||||||
|
|
||||||
|
cadoles_core_config_group_usergroup_export:
|
||||||
|
path: /config/group/users/export/{id}
|
||||||
|
defaults: { _controller: CadolesCoreBundle:Group:usergroupexport, access: config }
|
||||||
|
|
||||||
#-- Access user
|
#-- Access user
|
||||||
cadoles_core_user_group:
|
cadoles_core_user_group:
|
||||||
path: /user/group
|
path: /user/group
|
||||||
|
@ -434,7 +438,9 @@ cadoles_core_user_group_ajax_switchmanager:
|
||||||
path: /user/group/ajax/switchmanager
|
path: /user/group/ajax/switchmanager
|
||||||
defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: user }
|
defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: user }
|
||||||
|
|
||||||
|
cadoles_core_user_group_usergroup_export:
|
||||||
|
path: /user/group/users/export/{id}
|
||||||
|
defaults: { _controller: CadolesCoreBundle:Group:usergroupexport, access: user }
|
||||||
|
|
||||||
|
|
||||||
#== Whitelist ============================================================================================================
|
#== Whitelist ============================================================================================================
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
<a class="btn btn-default" href={{ path('cadoles_core_'~access~'_group') }}>Fermer</a>
|
<a class="btn btn-default" href={{ path('cadoles_core_'~access~'_group') }}>Fermer</a>
|
||||||
{% if moderegistration!="none" and masteridentity=="SQL"%}
|
{% if moderegistration!="none" and masteridentity=="SQL"%}
|
||||||
<a class="btn btn-primary" style="cursor:pointer" onClick="showMail();">Inviter des personnes non listées ci-dessous</a>
|
<a class="btn btn-primary" style="cursor:pointer" onClick="showMail();">Inviter des personnes non listées ci-dessous</a>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
|
<a class="btn btn-default pull-right" href={{ path('cadoles_core_'~access~'_group_usergroup_export',{'id':group.id}) }}>Exporter CSV</a>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
|
Loading…
Reference in New Issue