bitwise permissions 'opslaan'

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Belastingdienst - Freelance Applicatieontwikkelaar

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Hybride. Kantoordagen in Utrecht, incidenteel in Apeldoorn Functieomschrijving: De afdeling IV – Generieke Voorzieningen – Interactie Online is onderdeel van de keten Interactie. De missie van de keten is: “het faciliteren van de interactie met alle burgers, bedrijven en hun vertegenwoordigers om hen in staat te stellen aan hun fiscale verplichtingen te voldoen en aanspraak te maken op hun rechten.” De afdeling Interactie Online heeft een belangrijke bijdrage binnen deze keten. Dit door het ontwikkelen

Bekijk vacature »

E-Identity Developer met Projectleider Kwaliteiten

Functieomschrijving Voor de kamer van koophandel zijn we op zoek naar een E-Identity developer met projectleider kwaliteiten. Voor deze opdracht zoekt KVK een Informatieanalist met Technisch Projectleider en ICT developer kwaliteiten, met kennis van E-identity. We zoeken in de breedte en niet specifiek in de diepte qua skillset. Een Junior Projectmanager, een Junior Informatieanalist, een Junior Developer (full stack), een Junior Designer en een Junior ICT architect ineen, met een sterk gevoel van stakeholder management en planning vaardigheden. Door de internationale setting, én de realisatie van ontsluiting van en naar basisregisters toe zijn wij op zoek naar enige ervaring binnen

Bekijk vacature »

Java Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Traineeship ICT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Machine Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Machine Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Machine Software Developer ben je verantwoordelijk voor: - Je ontwerpt, ontwikkelt en debugt software voor machinebesturingssystemen en complexe landbouwmachines; - Je stelt gebruikersinterfaces op (cabinedisplays); - Op termijn ga je softwareprojecten leiden voor specifieke machines; - Inclusief planning, documentatie en validatie; - Om specificaties te verifiëren

Bekijk vacature »

Frontend Developer - Leeuwarden

Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider in onderwijsland. Wat vragen

Bekijk vacature »

PHP Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij op zoek naar een nieuwe uitdaging? Lees dan snel verder! Voor een organisatie in de regio Utrecht die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in

Bekijk vacature »

JAVA Programmeur

Bedrijfsomschrijving Functieomschrijving We zoeken per direct enthousiaste software engineers die ons team komen versterken.We werken in DevOps teams met een sterk gevoel voor verantwoordelijkheid. Er wordt nauw samengewerkt met ons Business analyse team (BAT), met onze uitvoerende medewerkers en met de DevOps teams onderling binnen het domein. Het liefst hebben we veel en vaak interactie met onze interne en externe eindgebruikers om zo de juiste dingen te maken. We werken multidisciplinair in een dynamische omgeving. Achtergrond opdracht De Businesseenheid Examens is verantwoordelijk voor de logistiek van de staatsexamens Voortgezet (speciaal) onderwijs, Nederlands als 2e taal en schoolexamens. In het kader

Bekijk vacature »

Medior/Senior Python developer

Functie Jij als Senior Python developer hebt al ruime ervaring opgedaan. Bedrijven komen bij de organisatie om technische vraagstukken op te lossen. Jij als specialist bent dus de representatie van deze kwaliteit. Je zult de keuze krijgen tussen lange of korte projecten waarin je komt te werken in multidisciplinaire teams. Projecten die je gaat uitvoeren zijn zeer uitlopend. Zodoende kun je aan de ene kant kiezen voor een greenfield project en stroom je bij een ander project midden in een migratietraject in. Voor de ene klant ontwikkel je ene nieuwe portal en voor het andere project duik je veel meer

Bekijk vacature »

Front-End Developer

Als Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Front-End Developer bij Coolblue? Als Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Je krijgt energie van het bedenken van creatieve oplossingen en presenteert dit graag binnen het team. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te

Bekijk vacature »

Outsystems Developer Junior

Dit ga je doen Bouwen aan nieuwe en innovatieve applicaties; Maken van koppelingen tussen Outsystems en het bestaande applicatielandschap; Troubleshooting op bestaande software. Hier ga je werken De organisatie is internationale speler binnen de bouwbranche en richt zich op de infrastructuur, zowel boven als onder de grond. Ze zijn ruim 1100 man groot en maken op IT vlak een mooie groei door. Als junior Outsystems Developer kom je te werken op een IT-afdeling van zo'n 25 man groot. Een aantal jaar geleden hebben ze de keuze gemaakt om zich meer te gaan richten op ontwikkeling en door de groei van

Bekijk vacature »

.NET Developer

Dit ga je doen (Door)Ontwikkelen van het applicatielandschap; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het applicatielandschap; Sparren met de business. Hier ga je werken De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen met de transitie naar

Bekijk vacature »

Front-end Developer

Dit ga je doen Doorontwikkelen van software; Ontwikkelen en testen van nieuwe functionaliteiten; Implementaties van nieuwe functionaliteiten en updates; Verzorgen van technische migraties naar nieuwe frameworks; Verwerken van incidenten. Hier ga je werken Onze klant, gevestigd in de regio Amsterdam, draagt bij aan het verbeteren van de veiligheid en efficiëntie van de Nederlandse infrastructuur door het ontwikkelen van afgemeten software oplossingen. Zo passen zij location intelligence toe om onderhoud en reparaties efficiënt te laten verlopen. Verder zorgen deze systemen dat incidenten zo snel mogelijk worden opgelost. Als Front-end Developer ben jij samen met je team betrokken met het (door)ontwikkelen van

Bekijk vacature »

Full stack ontwikkelaar Laravel, Vue.js

Functie Als ontwikkelaar binnen deze organisatie hou jij je voornamelijk met lopende projecten voor de verschillende klanten. Zo bouw je de ene dag aan prijsschifting systemen en de andere dag onderzoek je crawlers en stel je ze zo in dat de data goed binnen komt binnen het systeem. Daarnaast bouw je mee aan dashboards en ben je dus constant bezig met het verbeteren van het platform. Er is een vaste werkwijze, zo werken ze met Trello kaarten en onderverdelen ze deze aan het begin van iedere week onder de developers. Dit wordt door de lead developer gedaan, maar in samenspraak

Bekijk vacature »
Majid Ahddin

Majid Ahddin

16/11/2006 14:22:00
Quote Anchor link
Hoi

ik heb feedback nodig over een permissions systeem dat ik nu gebruik. Het werkt als volgt:
3 data tabellen:
`pd_users`: user_id, user_name
`pd_groups`: group_id, group_name
`pd_zones`: zone_id, zone_name
en 3 koppeltabellen (elke mogelijke combinatie dus):
`pp_user2group`: user_id, group_id
`pp_user2zone`: user_id, zone_id
`pp_zone2group`: zone_id, group_id

Een gebruiker kan dus direct en indirect met een zone in verband worden gebracht, wat betekent dat die gebruiker daar toegang tot heeft. Een zone kan echter ook een not-access zone zijn (bijv "not.forum.start_topic" disallows elke request voor "forum.start_topic")
not-access zones worden nooit aangeroepen!

Een aanroep kan zijn:
$user->getAccess( "forum.start_topic" );

In het huidige model gaat die functie zoeken als volgt:
1. bestaat de zone? Zo ja -> stap 2, zo nee -> stap 4
2. user-zone -> bestaat deze rij? Zo ja -> stap 4, zo nee stap 3
3. user-group-zone -> bestaan rijen? Zo ja -> stap 4, zo nee -> return FALSE;
--
4. not-access: user-zone. Als ie bestaat: return FALSE
5. not-access: user-group-zone. Als ie bestaat: return FALSE;
return TRUE;
--
return FALSE;

Zo ziet het er ongeveer uit. Je ziet hoeveel queries er uitgevoerd _kunnen_ worden! Sowieso minstens 2 (zone bestaat niet, niet-zone wel en user heeft not-access). Dat tikt aan als je op een pagina voor 6 zones wil controleren.
Als een user-zone meer dan eens wordt aangevraagd, wordt het onthouden in de class 'buffer', maar alleen het resultaat van de functie, geen tussenstappen.

Dit systeem bestaat ondertussen ruim een jaar denk ik en werkt gewoon goed :) Maar ik dacht dat wel eens tijd werd om het te optimaliseren. Het lijkt me namelijk niet het meest efficiente model. De database kan niet strakker (6 tabellen met 2 kolommen), maar het php gedeelte vast&zeker wel!

De bitch is dat ik niet weet welke zones er gecontroleerd gaan worden (OF er wel iets gecontroleerd gaat worden) als de user module ($user) wordt geladen en daarin de permissions (::$perm) module.

Ik heb al een aantal ideeen maar een aantal (ongeveer evenveel ;)) zijn niet geweldig:

1. bitwise. Alle zones waar een user recht op heeft in een getal laden (2^zone_id is voor 1 zone en dan de SUM) en daar alle zones vanaftrekken waar een user not-access voor heeft. Dan is in 1 stap alles klar. Met bitwise operators kan je dan makkelijk controleren of de bits van een zone in de bits van een user zitten:
$bAccess = (bool)(USER_ACCESS & PERM_ZONE_FORUM_START_TOPIC)
Deze methode laadt echter alles meteen in, of het nou nodig is of niet.

2. Een permissions bufffer maken, bijvoorbeeld in een session of juist in een tabel, zodat de persoon die permissions AANPAST, de tijd moet wachten, en de gebruiker die de permissions heeft, niet. Klinkt logisch ;)
Een tabel zoals de usertabel (of misschien wel _in_ de usertabel) die in 1 veld bijhoudt voor welke zones een user access heeft. Net zoiets als method 1, maar dan wordt deze methode alleen uitgevoerd als er iets aangepast wordt dat deze user aangaat.
Nadeel is dat degene die permissions aanpast lang moet wachten als ie een zone in een groep aanpast waar veel users inzitten (al die users moeten worden aangepast).
Voordeel is dat de gebruiker (bijna) geen sql queries meer nodig heeft om rechten op te halen.

3. buffertjes opslaan in permission object of user object: per groep, per zone, etc. Dus arrays maken met daarin: 1. user-group connectie, 2. user-zone connectie, 3. group-zone connectie, etc, etc
Dan zijn er 6 ofzo queries nodig en daarna is het php die uitrekent of er wel of geen keys in arrays bestaan die rijen uit tabellen voorstellen.
Heb geen idee of deze methode iets van snelheid oid op levert.

Hoe dan ook. Heb een bericht gemaakt voor feedback :) Dus elk commentaar is zeer welkom. Vooral persoonlijke ervaringen hoor ik graag :) En natuurlijk goede ideeen.
Wat niet veranderd gaat worden, is de basic methode: users, groepen, zones en dat een user op 2 manieren access kan hebben en op 2 manieren not-access.

mvg
rudie
 
PHP hulp

PHP hulp

25/05/2024 09:27:06
 
Majid Ahddin

Majid Ahddin

16/11/2006 14:22:00
Quote Anchor link
Wow dat is een lap tekst... Sorry he :)
 
Majid Ahddin

Majid Ahddin

16/11/2006 14:24:00
Quote Anchor link
Een voorbeeld van de admin is te vinden op http://www.truemafia.nl/phph/permissions.html en alleen succesvol beschikbaar voor Firefox gebruikers (en misschien meer, maar IE6 niet).
 



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.