Symfony2 fosUserBundle vs KNPMenuBundle

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior/senior Fullstack developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Medior Front end developer React

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor op de

Bekijk vacature »

Ervaren Software Developer

Functie omschrijving Ben jij een ervaren Software Developer, en heb je ervaring met technieken zoals C#, MS Access & SQL? Vind jij het leuk om maatwerk software te ontwikkelen voor klanten in een specifieke branche? Dan is dit de baan voor jou! Als ontwikkelaar ben jij samen met een team van 12 collega’s verantwoordelijk voor het bouwen van nieuwe functionaliteiten en het uitbreiden van de core applicatie. Belangrijk is dat je ervaring hebt met C# en MS Access. Je bent flexibel en klantvriendelijk ingesteld, omdat het belangrijk is om de klanten zo goed mogelijk van dienst te kunnen zijn. Thuiswerken

Bekijk vacature »

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Wij zijn voor een leuke opdrachtgever in omgeving Naaldwijk op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Wij zoeken iemand die breed inzetbaar is en die aan veel verschillende applicaties wilt werken. Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Network Engineer (f/m/d) in Heidelberg

Network Engineer (f/m/d) The IT Services team operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and at the laboratory’s sites in Barcelona and Rome. As part of IT Services, the Network team is responsible for managing and developing the network infrastructure in our data centres, on campus, and to our external network providers. As a leading scientific institution with highly data-intensive research, extensive data flows at and between the laboratory’s six sites and to the Internet, EMBL is connected to national and international scientific networks using state-of-the-art technologies from vendors including Cisco, Extreme Networks and

Bekijk vacature »

C# developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als C# Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the Year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Mendix Developer

For our client in Amsterdam, we are looking for a Senior Mendix Developer. Company description Our client is an IT Consultancy company who’s been active for 10 years now. With their ambitious team, they are working with different clients in order to help them with analyzing their data and giving advice to them, regarding how they can use their data in the smartest ways, or to make sure that their mobile or web applications are working efficiently. As you get a glimpse of various industries, it is guaranteed that no day will be the same. Job description As a Mendix

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Voor een opdrachtgever, met een prachtig kantoor in omgeving Wateringen zijn wij op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind jij het leuk om in een Agile/Scrum omgeving te werken? Wil jij

Bekijk vacature »

PHP Developer

Als PHP Developer bij Coolblue zorg je ervoor dat onze webshops elke dag een beetje beter zijn. Wat doe je als PHP Developer bij Coolblue? Als PHP Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Hoewel je een PHP Developer bent, sta je open om C# of Typescript in te zetten of te leren. Ook PHP Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen pure PHP code schrijven. Samenwerken met de klantreiziger om onze klanten

Bekijk vacature »

Webshop beheerder / Fullstack developer

Functie omschrijving Wij zijn op zoek naar een full stack developer die zich bezig gaat houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Lees dan snel verder! Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator

Bekijk vacature »

Trainee pega developer

Wil jij een mooie stap maken in jouw carrière? Mooi! Bij De Mandemakers Groep haal je binnen 6 maanden je CSA- en CSSA-certificaten, waarna jij aan de slag kan als Pega-developer in ons IT-team. Achter de schermen zorg jij ervoor dat collega’s efficiënt werken en klanten iedere dag beter geholpen worden. Wil jij daaraan bijdragen? En jouw ICT-skills ontwikkelen? Lees dan snel verder en solliciteer vandaag nog als trainee Pega-developer. Wat ga je doen? Als trainee Pega developer leiden wij je op tot gecertificeerd software developer voor het low-code platform PegaSystems. In de training ben je verantwoordelijk voor een te

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Junior/medior Back end developer PHP, Laravel

Functie Jij als ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor veel van je tijd je bezig houden met het ontwikkelen van maatwerk features en applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. Jij als full stack developer zult dus

Bekijk vacature »
Frank Nietbelangrijk

Frank Nietbelangrijk

26/05/2014 23:13:32
Quote Anchor link
Beste forumleden,

Ik gebruik in Symfony de fosUserBundle en de KNPMenuBundle.

De fosUserBundle zorgt voor een compleet inlogsysteem compleet met userroles.

In de app/security.yml staat de access control:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/user/, role: ROLE_BOARDMEMBER }
        - { path: ^/admin/members/, role: ROLE_BOARDMEMBER }
        - { path: ^/admin/, role: ROLE_ADMIN }


Als voorbeeld neem ik even de laatste regel. De gebruiker moet de ROLE_ADMIN rol hebben om de ROUTE /admin/ te kunnen raadplegen. Dit werkt allemaal prima.

Echter Wil ik mijn CSS menu welke met behulp van KNPMenuBundle vervaardigd wordt dynamisch maken.
Ik wil dus dat de menuitem/link naar de adminpagina alleen gemaakt wordt als de ingelogde gebruiker daar ook op mag komen.
Nu weet ik wel dat je van de ingelogde gebruiker zijn rollen kunt opvragen. (je krijgt dan bijvoorbeeld een array('ROLE_USER', 'ROLE_ADMIN') terug maar ik wil liever aan de hand van de ROUTES bepalen of een gebruiker dan wel of geen toestemming heeft om daar heen te gaan.

anders gezegd:

als ik weet dat de router-identifier 'admin_homepage' is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
admin_homepage:
    pattern:  /admin
    defaults: { _controller: AdminBundle:Default:index }

hoe kan ik dan de roles opvragen uit de access control voor het pad ^/admin/

Waarom ik dit wil is vrij simpel. Stel dat ik nu later een andere rol aan een pad in de access control wil koppelen dan past mijn menu zich automatisch aan.

Waarschijnlijk denk ik niet in de goede richting maar goed ik hoor graag van de Symfony gebruikers
Gewijzigd op 26/05/2014 23:15:06 door Frank Nietbelangrijk
 
PHP hulp

PHP hulp

26/05/2026 10:09:32
 
NOLot -

NOLot -

27/05/2014 14:34:15
Quote Anchor link
Geen oplossing maar ik weet wel dat het authenticatie systeem van Symfony echt een bitch is :D Succes ermee! Mocht je er helemaal niet uit komen kun je het altijd even @freenode chat vragen, die hebben mij de vorige keer ook geholpen
 
Wouter J

Wouter J

27/05/2014 16:46:38
Quote Anchor link
Goed, dit wordt een leuke vraag :) Het is best een ingewikkeld gedoe en het vereist behoorlijk veel dependencies, weet je zeker dat je het op deze manier wilt doen?
Merk overigens op dat de FOSUserBundle hier niks mee te maken heeft, het betreft hier alleen de SecurityBundle/Security component geleverd door Symfony.

Wat je hierbij nodig hebt:
- Symfony\Component\Security\Http\AccessMap - Hiermee kun je de vereiste roles opvragen aan de hand van een request
- Symfony\Component\HttpFoundation\Request - Om zo'n request te simuleren
- Symfony\Component\Routing\Router - Om de path te genereren van een route
- Symfony\Component\Security\Core\Authorization\AccessDecisionManager - Om te kijken of de benodigde roles aanwezig zijn
- Symfony\Component\Security\Core\SecurityContext - Om de huidige tokens op te vragen

Aan het eind wil je iets als de AccessListener gaan maken, dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
use Symfony\Component\HttpFoundation\Request;

// deze inject je
$router = ...; // router
$accessMap = ...; // security.access_map
$accessDecisionManager = ...; // security.access.decision_manager
$context = ...; // security.context

// verkrijg de url doormiddel van de route naam

$route = 'admin_homepage';
$url = $router->generate($route);
// simuleer een request naar deze url
$request = Request::create($url);

// verkrijg de benodigde attributes (roles) voor deze request (channel is https/http)
list($attributes, $channel) = $accessMap->getPatterns($request);

// verkrijg de huidige token
$token = $context->getToken();

if (
    // geen attributes nodig? Mooi, dan mag de user hem zien!
    null === $attributes

    // als er wel attributes nodig zijn, heb ik de benodigde attributes?
    || $accessDecisionManager->decide($token, $attributes, $request)
) {

    // toon menu item
}
?>


Deze code kun je in je MenuBuilder plaatsen, maar vanaf KnpMenuBundle 2.0 (welke nu in beta is dacht ik) kun je dit in een voter plaatsen. Wil je dat nu al gebruiken, dan verwijs ik graat naar de CMF MenuBundle die gebouwd is op de KnpMenuBundle en onder andere voters implementeert.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/05/2014 21:21:36
Quote Anchor link
Dank je Wouter.

Ik ga kijken of ik er mee vooruit kom en ik hou jullie op de hoogte.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.