Vi ste ovdje: start » hr » Interna dokumentacija » DokuWiki proširenja (WvdS) » Uloge i ovlaštenja » Matrica uloga

Matrica uloga

Potpun pregled onoga što svaka uloga u ovom wikiju dopušta i ne dopušta, razinu po razinu. Ova je stranica jedini izvor vrijednosti ovlaštenja; sve ostale stranice upućuju ovamo umjesto da vrijednosti ponavljaju.

Opseg

Razina Dodjeljuje Pohranjeno u Vrednuje
1 DokuWiki ACL brojevi 0–255 po stranici ili imenskom prostoru conf/acl.auth.php jezgra DokuWikija
2 Jamstvo sjednice AUTHENTICATED, MAIL_OTP, TOTP, MFA_ANY conf/wkidentity-policy.json wkidentity
3 Uloga u projektu none, reader, contributor, maintainer, admin grupe u upravljanju korisnicima wkdocore
4 Razine komponenata razlikuje se po komponenti ACL ili vlastita datoteka pravila sama komponenta

Razine se pitaju ovim redoslijedom i svaka smije samo odbiti. Uloga na razini 3 ne može dodijeliti ono što je razina 1 uskratila.

Razina 1: DokuWiki ACL

Osnovna ljestvica. Vrijedi za svaku stranicu i svaki imenski prostor i jedina je razina koja radi i bez ijedne komponente ove kuće.

Ljestvica

Vrijednost Naziv Dopušta Ne dopušta
0 Bez pristupa ništa; stranica se ponaša kao da ne postoji svako čitanje, uključujući privitke i kanale
1 Čitanje vidjeti stranicu, povijest i razlike, izvoz, pretplatu svaku izmjenu, pa i stvaranje podstranice
2 Uređivanje dodatno: mijenjati postojeće stranice, skice, vraćanje stvaranje novih stranica, prijenos datoteka
4 Stvaranje dodatno: stvarati nove stranice u imenskom prostoru prijenos datoteka, brisanje datoteka
8 Prijenos dodatno: stavljati datoteke u medijsko područje ponovno brisanje prenesenih datoteka
16 Brisanje dodatno: brisati datoteke u medijskom području konfiguracija, upravljanje korisnicima, proširenja
255 Administracija sve, uz zaobilaženje svakog ACL pravila
Vrijednosti 4, 8 i 16 vrijede samo za pravila imenskih prostora. Na pojedinačnoj stranici 2 je najviša smislena vrijednost; veći brojevi u pravilu stranice djeluju kao 2.

Kako nastaje vrijednost

DokuWiki vrednuje najodređenije pravilo, a ne najviše. Redom:

  1. Pravilo za ovaj račun na ovoj stranici.
  2. Pravilo za grupu ovog računa na ovoj stranici — ako ih je više, pobjeđuje najviše.
  3. Ista dva koraka u sljedećem višem imenskom prostoru, sve do korijena.
  4. Ništa ne odgovara: bez pristupa.

Pravilo računa nadjačava svako grupno pravilo iste razine, čak i ako je niže. Tako se pojedinačni račun isključuje iz područja koje je njegovoj grupi otvoreno.

Grupe ovog wikija

Grupa Tko je u njoj Značenje
@ALL svaki posjetitelj, prijavljen ili ne osnovna vrijednost; na 0 područje nije javno
@user svaki prijavljeni račun „prijava je dovoljna“
@admin grupa superadministracije ($conf['superuser']) u cijelosti zaobilazi razinu 1
@wvds urednički suradnici prava pisanja na jezičnim i sadržajnim imenskim prostorima
@wvdse tehničko održavanje točaka montiranja potpun pristup montiranim repozitorijima
@dwdo_<projekt>_readers čitatelji projekta vidi razinu 3
@dwdo_<projekt>_contributors suradnici projekta vidi razinu 3
@dwdo_<projekt>_maintainers održavatelji projekta vidi razinu 3

Razina 2: jamstvo sjednice

Ova razina ne pita tko ste, nego koliko je dobro ova jedna sjednica to dokazala. Najčešći je razlog da ste prijavljeni i svejedno odbijeni.

Stupanj Znači Postiže se Nije dovoljno za
AUTHENTICATED prijavljen, lozinka je dovoljna uobičajena prijava područja s obvezom faktora
MAIL_OTP jednokratni kod e-poštom potvrđen unos koda iz e-poruke područja koja izrijekom traže TOTP
TOTP aplikacija za autentifikaciju potvrđena šesteroznamenkasti kod iz aplikacije
MFA_ANY bilo koji drugi faktor potvrđen MAIL_OTP ili TOTP

Na što se zahtjev može vezati

Zahtjev se veže na opseg. Postoji osam vrsta:

  • namespace — sve stranice ispod prefiksa.
  • plugin, module, view — komponenta, modul u njoj, pojedinačni prikaz.
  • command, adminAction — naredba, odnosno administrativna radnja.
  • group, user — vezani uz onoga tko traži umjesto uz cilj: „ova grupa uvijek treba TOTP”.

Ako ih se poklapa više, vrijedi najviši. Sjednica koja je dokazala MAIL_OTP zadovoljava MFA_ANY i MAIL_OTP, ali ne i TOTP.

Tri starija popisa

Popis Učinak Blokira?
required_users stranica profila i traka na stranici opominju na postavljanje ne, samo opomena
email_users smiju rabiti kod e-poštom i kada je općenito isključen ne, samo proširuje
required_namespaces čitanje i pisanje odbijaju se dok faktor nije postavljen da

email_users može metodu samo dodati, nikada oduzeti. Datoteka pravila koja nedostaje ili je nečitljiva stoga nikoga ne može zaključati.

Razina 3: uloga u projektu

Unutar projekta vrijedi vlastita, uređena ljestvica. Ona određuje koja se radna područja pojavljuju u navigaciji i tko smije mijenjati popis članova projekta.

Uloga Stupanj Dopušta Ne dopušta
none 0 ništa svako projektno područje
reader 10 vidjeti projektna i radna područja mijenjati sadržaj, vidjeti članove
contributor 20 dodatno: stvarati i mijenjati sadržaj projekta upravljati članovima, mijenjati postavke
maintainer 30 dodatno: upravljati članovima, postavke projekta imenovati održavatelje, globalna konfiguracija
admin 40 sve
admin je globalna superadministracija wikija, a ne uloga vezana uz projekt. Administratorsko pravo ograničeno na projekt ne postoji: najviša uloga koju se u projektu može imati jest maintainer. Održavatelje imenuje globalna administracija.

Odakle uloga dolazi

Najprije grupni sloj, zatim ACL. Pobjeđuje prvo poklapanje:

  1. Superadministracija → admin.
  2. Član grupe @dwdo_<projekt>_maintainersmaintainer.
  3. Član grupe @dwdo_<projekt>_contributorscontributor.
  4. Član grupe @dwdo_<projekt>_readersreader.
  5. Inače: prevesti ACL vrijednost na korijenu projekta — od 16 → maintainer, od 2 → contributor, od 1 → reader, inače none.

Prefiks dwdo_ može se podesiti (roleprefix). Uloga se uvijek utvrđuje na korijenu projekta, nikada na stranici koju upravo gledate — ona je svojstvo projekta, a ne poziva.

Peti korak razlog je zašto projekt radi i posve bez grupnog sloja: tada se oslanja isključivo na ACL imenskog prostora. Ujedno je razlog zašto ACL vrijednost 16 na korijenu projekta nekoga čini održavateljem, a da to nijedna grupa vidljivo ne kaže.

Što navigacija skriva

Radna područja koja uloga ne doseže skrivaju se u navigacijskoj traci. To je odluka o prikazu, a ne zaštita: odredišna stranica sama provjerava svoje ovlaštenje. Nestala stavka stoga znači „ovdje za vas nema ničega“, a ne „ovdje je nešto skriveno”.

Razina 4: razine komponenata

Pojedine komponente dodatno vode vlastitu ljestvicu jer njihov predmet nije wiki stranica.

Montirani repozitoriji izvornog koda

Četiri stepenice jedne ljestvice, izražene istim brojevima kao razina 1 — nema, dakle, drugog spremišta ovlaštenja, nego jedan ACL redak po grupi na točki montiranja.

Sposobnost ACL vrijednost Dopušta Ne dopušta
view 1 pregledavati i gledati unutar wikija klonirati, preuzeti
fetch 2 dodatno: klonirati i preuzeti arhiv pohraniti vlastite izmjene
propose 4 dodatno: pohraniti pod vlastitim ref prefiksom pisati u tuđe refove
write 8 dodatno: pisati svugdje gdje repozitorij dopušta upravljati točkama montiranja

Za nove točke montiranja postoje četiri predloška:

Razina Tko vidi Tko piše
private nitko osim tehničkog održavanja tehničko održavanje
readonly svaki prijavljeni račun (fetch) tehničko održavanje
public svi, i bez prijave (fetch) tehničko održavanje
team čitatelji projekta (view) suradnici fetch, održavatelji write

team je jedina razina čije grupe ovise o projektu. Pravi je izbor čim više zatvorenih projekata stoji jedan uz drugi: ostale tri poznaju samo „nitko“, „svi prijavljeni” i „svi“.

SQLite Data Studio

Matrica sposobnosti umjesto ljestvice, jer je šest sposobnosti doista neovisno.

Sposobnost Dopušta
use uopće otvoriti Studio
query izvoditi upite za čitanje
write mijenjati podatke
design mijenjati shemu
export izvoziti rezultate
admin upravljati vezama i samom matricom

Razrješenje, pobjeđuje prvo poklapanje:

  1. Superadministracija → uvijek dopušteno.
  2. Ako je dbadmin_readonly na 1, write i design su odbijeni — i ondje gdje ih matrica dodjeljuje.
  3. Pravilo za vezu nadjačava globalno; unutar jednog opsega pravilo računa nadjačava svako grupno pravilo. Grupna pravila istog opsega se zbrajaju.
  4. Nema odgovarajućeg pravila → odbijeno.

Radnje s obvezom faktora

Više komponenata za pojedine radnje dodatno traži jamstvo sjednice prema razini 2, neovisno o ovlaštenju koje račun ima.

Komponenta Radnja Traži
Trezor read AUTHENTICATED
Trezor create, rotate, delete, rekey MFA_ANY
SQLite Data Studio code-write, connection-admin, db-destructive MFA_ANY
Resursi create, update AUTHENTICATED
Resursi delete MFA_ANY
Poveznica s Azure DevOpsom secret-write, remove MFA_ANY
Točke montiranja token-issue AUTHENTICATED
Točke montiranja mount-admin MFA_ANY
Blog content-admin MFA_ANY

Tko što održava

Razina Zaslon Tko onamo smije
1 ACL ?do=adminNadzor pristupa superadministracija
1 grupe računa ?do=adminUpravljanje korisnicima superadministracija
2 jamstvo sjednice ?do=adminIdentitet superadministracija
3 članovi projekta stranica projekta → Članovi održavatelji projekta
4 razine montiranja ?do=adminTočke montiranja superadministracija
4 matrica sposobnosti ?do=adminSQLite Data StudioOvlaštenja tko u Studiju ima admin

Zaslon članova projekta jedini je koji ne treba globalnu administraciju. Zato je on odredište na koje se usmjerava zahtjev za pristupom projektu — vidi Kamo zahtjev ide.

Ugovor za komponente

Vlastita komponenta svoje odbijanje vješa na istu infrastrukturu umjesto da piše vlastitu rečenicu. Dovoljna su dva poziva.

Odbijanje zbog nedostajućeg ovlaštenja:

$req = plugin_load('helper', 'wkrequest');
if (is_object($req) && method_exists($req, 'accessPanel')) {
    echo $req->accessPanel([
        'resourceLabel' => $naslov,
        'required'      => $req->permissionLabel(AUTH_READ),
        'current'       => $req->currentPermissionLabel($idStranice),
        'draft'         => [
            'type'     => 'ACCESS_REQUEST',
            'owner'    => 'mojdodatak',
            'handler'  => 'mojdodatak:postavke',
            'resource' => $idStranice,
        ],
        'alternatives'  => [['label' => $drugiPut, 'href' => $url]],
    ]);
}

Odbijanje zbog nedostajućeg drugog faktora:

echo $req->stepUpPanel([
    'requirement' => 'MFA_ANY',
    'origin'      => 'mojdodatak:brisanje',
    'back'        => $urlPovratka,
]);

Prijava, „moji otvoreni zahtjevi” i povratni put dodaju se a da pozivno mjesto na njih ne mora misliti; svaki od njih sam se proglašava nedostupnim u položaju u koji ne pristaje i tada se izostavlja.

Da bi zahtjev stigao na pravo mjesto, komponenta prijavljuje svoj administrativni zaslon:

$controller->register_hook('WKREQUEST_REGISTER_HANDLERS', 'BEFORE', $this, 'registerRequestHandlers');
// ...
$event->data['handlers'][] = [
    'owner' => 'mojdodatak',
    'id'    => 'postavke',
    'label' => $this->getLang('menu'),
    'url'   => wl('', ['do' => 'admin', 'page' => 'mojdodatak'], true, '&'),
    'types' => ['ACCESS_REQUEST', 'ADMIN_ACTION_REQUEST'],
];

Ako komponenta zatvoreno područje poznaje bolje od jezgre, ploču izoštrava umjesto da pokraj nje nacrta drugu:

$controller->register_hook('WKREQUEST_REFINE_DENIED', 'BEFORE', $this, 'refineDeniedRequest');

$event->data tada nosi id, resourceLabel, required, current, facts, alternatives i draft. Vraćene vrijednosti preuzimaju se pojedinačno; neupotrebljiva se odbacuje i ostaje općeniti odgovor.

Poznate praznine

Mjesta na kojima model danas pruža manje nego što ostatak ove stranice nagovješćuje. Navedena su jer praznina koju nitko ne imenuje izgleda kao čitateljeva pogreška.

Praznina Posljedica Zaobilazni put
Poruke nakon pokušane radnje i dalje su jednoredni napuci, a ne ploče. To se odnosi među ostalim na Git prikaz, cjevovode, radne stavke i prikaz izvornog koda. Nakon neuspjelog klika piše „to vam nije dopušteno“ bez puta do zahtjeva. Ponovno učitati stranicu: zatvorena stranica nosi ploču.
Samo zahtjev koji imenuje projekt sam pronalazi svoje nadležne. Sve ostalo ide na globalno podešenu adresu — a u ovoj instalaciji nijedna nije postavljena. Zahtjev bez veze s projektom ne obavještava nikoga. Pohranjen je i vidljiv u pretincu, ali nitko za njega ne dozna. Upisati adresu pod notify_mail, ili redovito otvarati pretinac.
@wvds i @wvdse pojavljuju se u ACL pravilima, ali trenutačno nisu dodijeljeni nijednom računu. Pravila koja otvaraju samo tim grupama ne otvaraju nikome. Provjeriti dodjelu u upravljanju korisnicima.
Pregled projekata koji navodi vašu ulogu po projektu zasad postoji samo na njemačkom. Tko sučelje rabi na drugom jeziku, svoje uloge nalazi jednu po jednu, na svakoj stranici projekta. Pregled projekata (na njemačkom)

Povezane teme

hr/wiki/dwe/permissions/matrix.txt · Zadnja izmjena: od 0.0.0.0