Gå til indhold

Opsæt rolle- og gruppestyret pluginsynlighed

Vejledningen bygger på Nordiq nqgis-2026-10-sep, MapStores udtrykssystem og den lokale reference om pluginsynlighed. disablePluginIf kan fjerne et plugin fra brugerfladen ud fra overvåget applikationstilstand.

Dette er en UI-kontrol. Den skal altid suppleres med GeoStore-rettigheder og reel GeoServer-/backendautorisation.

  • Den aktive, eventuelt eksternaliserede localConfig.json er identificeret og sikkerhedskopieret.
  • Rollen eller gruppen findes i den aktive identitetsløsning.
  • En testbruger i og uden for målgruppen er tilgængelig.
  • Backendadgangen er besluttet uafhængigt af synlighedsreglen.
  • aktiv localConfig.json
  • identitetskilde og gruppesynkronisering
  • GeoStore-ressourcer
  • GeoServer/backend for de data, pluginet bruger
  1. Tag backup af den aktive localConfig.json.
  2. Find monitorState i filens topniveau.
  3. Ved rollestyring: kontrollér, at aliaset userrole peger på security.user.role. Dette er allerede tilfældet i den undersøgte referencekonfiguration.
  4. Ved gruppestyring: verificér i browserens tilstand eller den relevante sikkerhedskode, hvilken sti der indeholder grupper i den aktive integration.
  5. Tilføj først et securityGroups-alias, når stien er verificeret.
  6. Find pluginet i den relevante plugins-liste, og skriv det som et objekt med name og cfg.
  7. Tilføj en disablePluginIf-regel.
  8. Validér JSON og genindlæs konfigurationen.
  9. Test pluginets synlighed med begge testbrugere.
  10. Test derefter den reelle ressource- og dataadgang direkte; den må ikke afhænge af UI-reglen.

Eksempel på rollestyring, hvor pluginet kun indlæses for administratorer:

{
"name": "PLUGINNAVN",
"cfg": {
"disablePluginIf": "{state('userrole') !== 'ADMIN'}"
}
}

Den lokale råkilde viser følgende gruppesti:

{
"name": "securityGroups",
"path": "security.user.groups.group"
}

Når gruppestien er verificeret, kan en regel følge dette mønster:

{
"name": "PLUGINNAVN",
"cfg": {
"disablePluginIf": "{_.intersection(_.map(state('securityGroups'), 'groupName'), ['WEBGIS_GRUPPE']).length === 0}"
}
}

Brug generiske gruppenavne i dokumentation. Gruppereglen skal håndtere anonym bruger og manglende gruppedata uden at gøre data offentlige.

Genindlæs den eksternaliserede konfiguration efter miljøets procedure. Brugeren kan skulle logge ud og ind for at få opdaterede gruppeoplysninger.

  1. Test anonym bruger, bruger uden gruppe, bruger med gruppe og administrator.
  2. Kontrollér både menu og direkte navigation.
  3. Kontrollér GeoStore-ressourcen med et direkte link.
  4. Kontrollér GeoServer-/backendkald uden pluginet.
  5. Ved fejl: gendan backupfilen og genindlæs. Ændr ikke backendregler som rollback for en UI-fejl.

disablePluginIf vurderes i klienten og er ikke en autorisationsgrænse. Følsomme ressourcer skal sikres i GeoStore, og data skal sikres ved GeoServer/backend. Hemmeligheder må ikke indgå i synlighedsudtryk eller dokumentation.

Problem: Pluginet er skjult for alle.
Mulig årsag: Aliaset findes ikke, gruppestien er forkert, eller udtrykket returnerer true for alle brugere.
Løsning: Kontrollér monitorState og brugerens faktiske rolle-/gruppestruktur i et testmiljø.

Problem: Pluginet vises efter ændring af gruppemedlemskab.
Mulig årsag: Sessionen indeholder gamle sikkerhedsoplysninger.
Løsning: Log ud og ind, og test igen.

Problem: Pluginet er skjult, men data kan stadig hentes.
Mulig årsag: Backend er ikke sikret.
Løsning: Implementér GeoServer-/backendautorisation; udvid ikke UI-reglen.