Joomla 1.7-2.5 prieigos kontrolės sistema (ACL)

PDFSpausdintiEl. paštas

Pirmadienis, 05 Rugsėjis 2011 02:54 Parašė Martis Peržiūrų: 4647

( 16 Balsai )
Joomla 1.7-2.5 prieigos kontrolės sistema (ACL) - 5.0 out of 5, based on 16 votes

acl.pngPradedant Joomla 1.6, prieigos kontrolės sistema (ACL) tapo turbūt viena svarbiausių Joomlos funkcijų. Nors pradžioj šita sistema turėjo daug klaidų, bet išleidus Joomla 1.7, visos klaidos buvo ištaisytos.  Kaip žinote, Joomla  1.5 buvo tik 8 fiksuotos grupės (vieša, registruota, autoriai, redaktoriai, skelbėjai, tvarkytojai, administratoriai ir super administratoriai) bei 3 prieigos lygiai (viešas, registruotas ir specialus).  Taip pat narys galėjo būti priskirtas tik vienai grupei (aišku naudojantis trečių šalių išplėtimais, tokiais kaip pvz. noixACl, galima išplėsti narių valdymą). O Joomla 1.7 (1.6 versija nebus minima, kadangi nebėra oficialiai palaikoma) viskas kitaip: neribotos narių grupės bei prieigos lygiai, nariai gali būti priskiriami kelioms grupėms,  grupės gali būti priskiriamos keliems prieigos lygiams.

Kada gali būti naudinga prieigos kontrolės sistema? Variantų čia gali būti labai daug, bet galima paminėti kelis pavyzdžius:

  • Jūs norite leisti nariams pateikti ir redaguoti  straipsnius, bet nenorite jiems leisti paskelbti jų. Arba dar daugiau: Jūs norite turite kelias narių grupes,  o kiekviena grupė turėtų savo kategoriją, kur galėtų talpinti ir redaguoti straipsnius, bet negalėtų matyti kitų grupių kategorijų bei straipsnių. Ir t.t
  • Jūs norite leisti nariams redaguoti kažkokį vieną modulį, bet neleisti prieigos prie kitų.
  • Jūs norite leisti nariams prieigą prie administracijos valdymo skydo, bet kad ten jie galėtų keisti vieno ar kelių komponentų nustatymus, bet visa kita jiems nebūtų prieinama.

Pagrindiniai terminai

Kad geriau suprasti visus prieigos kontrolės sistemos principus, reikia žinoti visus joje naudojamus  terminus.

Narys. Narys yra bet kuris asmuo, kuris lankosi svetainėje. Kad tapti nariu, nebūtina registruotis svetainėje. Užtenka tik apsilankyti joje. Kiekvienas narys turi priklausyti tam tikrai narių grupei (pvz. neregistruotas narys priklauso viešai grupei), kadangi atskiram nariui negalima nustatyti prieigos teisių, o tik grupei.

Grupė. Grupė yra tam tikri nariai, kurie turi vienodas teises visoje svetainėje. Pvz. neregistruoti nariai priklauso viešai grupei, kuri dažniausiai gali tik skaityti jai leistą svetainės turinį.

Prieigos lygiai. Prieigos lygis tik apibrėžia vieno ar kito elemento matomumą svetainėje.( Pvz. Joomla 1.5 yra registruotas prieigos lygis, kurį nustačius konkrečiam moduliui, jis bus matomas tik registruotų grupių nariams (autoriams, skelbėjams, administratoriams)). Prieigos lygiams galima priskirti vieną ar kelias narių grupes.

Prieigos teisės. Prieigos teisės, naudojami leisti/uždrausti nariams tam tikrus veiksmus tam tikrose  svetainės vietose. Skirtumas nuo prieigos lygių ir grupių yra tas, kad prieigos teisės yra apribotos (negalima kurti savo). Joomla 1.7 yra šios prieigos teisės (svetainė ->globalios nuostatos->leidimai):

  • Svetainės prisijungimas – leidžia grupės nariams registruotis svetainėje.
  • Administracijos prisijungimas – leidžia grupės nariams prisijungti prie administracijos.
  • Išjungtos svetainės pasiekiamumas – leidžia grupės nariams prisijungti prie išorinės sąsajos, kai svetainė yra išjungta.
  • Super Admin – leidžia grupės nariams atlikti visus veiksmus visoje svetainėje, nepriklausomai nuo visų kitų leidimų nustatymų.
  • Pasiekti išplėtimą – leidžia grupės nariams prieigą prie visų administracijos sričių, išskyrus globalias nuostatas.
  • Sukurti – leidžia grupės nariams kurti bet kokį turinį bet kokiam išplėtime.
  • Ištrinti – leidžia grupės nariams trinti bet kokį turinį bet kokiame išplėtime.
  • Redaguoti – leidžia grupės nariams redaguoti bet kokį turinį bet kokiam išplėtime.
  • Redaguoti būseną – leidžia grupės nariams keisti turinio būseną bet kokiame išplėtime
  • Redaguoti savo – leidžia grupės nariams keisti savo sukurtą turinį bet kokiam išplėtime.

Visos šios teisės yra globalios, t.y. bus aktyvios visose svetainės vietose. Tačiau galima sukurti privačias teises, t.y. tokias teises, kurios galios konkrečiai kategorijai arba straipsniui.

Prieigos teisės priskiriamos narių grupėms.  Pagal valdymą tai labai panašu į straipsnių ir meniu nustatymus Joomla 1.5 versijoje.  Kaip žinote, Joomla 1.5 visiems straipsniams galima nustatyti vienodus nustatymus (tokius kaip rodyti pavadinimą, rodyti kategoriją, rodyti sukūrimo datą ir pan.) arba kiekvienam straipsniui parinkti savo atskirus nustatymus. Tarkim, jei atskiro straipsnio nustatymuose paliksim naudoti globalius nustatymus, tai bus naudojami nustatymai, skirti visiems straipsniams. Bet jei mums reikia pvz. rodyti vertinimą, kuris globaliuose nustatymuose yra išjungtas, tai straipsnio nustatyme pasirenkame jį rodyti. Tokiu pačiu principu veikia ir Joomla 1.7 prieigos teisės: yra globalios nuostatos, kurios veikia visoje svetainėje ir privačios nuostatos, kurios veikia atskirai kategorijai straipsniui, meniu ir pan.  Tačiau yra ir skirtumų. Apie juos parašyta kiekvieno nustatymo puslapio apačioje. Paimkim tarkim atskiro straipsnio nustatymų paaiškinimus:

Jei pakeisite nustatymus, jie bus taikomi šiam komponentui. Atkreipkite dėmesį, kad:
Paveldėtas reiškia tai, kad bus naudojami globalių nustatymų ir aukštesnių grupių leidimai.
Uždraustas reiškia, kad nepriklausomai nuo globalių ir aukštesnių grupių nustatymų, redaguojama grupė neturės įtakos šiam komponentui.
Leidžiama reiškia, kad redaguojama grupė galės daryt pakeitimus šiame komponente (bet jei tai prieštarauja globaliems ar aukštesnės grupės nustatymas, tai neturės jokios įtakos; konfliktas bus pažymėtas  Neleidžiama (Uždaryta) pagal apskaičiuojamus nustatymus).

Taigi privatūs nustatymai  gali būti paveldėti nustatymus, išplėsti juos arba uždrausti.

Kadangi tema yra pakankami sunki ir vien tik iš paaiškinimų nelabai kas aišku, tai geriausiai visa tai iliustruoti pavyzdžiu.

Joomla 1.7 prieigos kontrolės sistemos pavyzdys

Užduotis:

sukurti 4 narių grupes:

  • grupė1
  • grupė2
  • grupė3
  • grupė4

ir 4 kategorijas:

  • kategorija1
  • kategorija2
  • kategorija3
  • kategorija4

Ir visa tai turi atitikti tokias sąlygas:

  1. grupė1 turi turėti prieigą prie kategorijos kategorija1 tik straipsnių skaitymui , bet neturėtų prieigos prie kategorijų kategorija2, kategorija3 ir kategorija4.
  2. grupė2 turi turėti prieigą prie kategorija2 ir galėtų joje skaityti bei redaguoti straipsnius, bet neturėtų prieigos prie kategorijų kategorija1, kategorija3 ir kategorija4.
  3. grupė3 turi turėti prieigą prie kategorijos kategorija3 ir galėtų joje skaityti, redaguoti bei pridėti straipsnius, bet negalėtų jų paskelbti. Prieiga prie kategorijų kategorija1, kategorija2 ir kategorija4 šiai grupei turi būti uždrausta.
  4.  grupė 4 turi turėti prieigą prie kategorijos kategorija4 bei galėtu joje esančius straipsnius skaityti, redaguoti, keisti būseną bei pridėti savo straipsnus. Taip pat grupė4 galėtų redaguoti ir keisti būseną straipsnių, esančių kategorijoje kategorija3. Prieiga prie kategorijų kategorija1 ir kategorija2 šiai grupei turi būti uždrausta.
  5. Visi kiti nariai neturi turėti prieigos prie kategorijų kategorija1, kategorija2, kategorija3 bei kategorija4.

Sprendimas:

Pirmiausia nustatom veiksmų seką užduoties sprendimui:

  1. Sukurti grupes grupė1, grupė2, grupė3 ir grupė4.
  2. Priskirti globalias teises kiekvienai grupei.
  3. Sukurti prieigos lygius kiekvienai grupei.
  4. Sukurti po vieną narį kiekvienoje grupėje.
  5. Sukurti atitinkamas kategorijas ir priskirti joms leidimus, atitinkančius aukščiau minėtas sąlygas.
  6. Sukurti meniu, kuriame bus rodomas kategorijų sąrašas ir punktas, kuriuo galima sukurti straipsnį.
  7. Patikrinti rezultatus.

(Užbėgant truputi į priekį, reikia pasakyti, kad pasiekti tinkamiausią rezultatą, šita veiksmų seka turėtų būti ilgesnė. Tačiau visi kiti niuansai atsiranda tik užduoties vykdymo metu. O kodėl taip yra, manau suprasite skaitydami toliau).

1 žingsnis. Grupių sukūrimas

Administracijos valdymo skyde pasirenkame Nariai->Grupės->Pridėti naują grupę. Kiekvienos grupės aukštesnė grupė turi būti vieša:

01grupes_pridejimas

Pridėjus visas grupes, rezultatas turėtų būti toks:

02grupes

2 žingsnis. Globalių teisių priskyrimas kiekvienai grupei.

Administracijoje pereiname į Svetainė->Globalūs nustatymai->Leidimai ir kiekvienai grupei leidžiame prisijungimą prie svetainės, o visa kita paliekame pagal nutylėjimą. Tai daroma todėl, kad pavyzdžiui, jei mes trečiai grupei nustatysime Sukurti  leidžiama, tada ši grupė galės rašyti straipsnius į  visas svetainės kategorijas, bet pagal mūsų sąlygą jai turi būti leidžiama tik į trečią kategoriją. Todėl kitus nustatymus reiks parinkti konkrečios kategorijos nustatymuose.  Taigi, galutinis vaizdas turėtų būti toks (paveikslėlyje parodyta tik pirma grupė, bet tokį patį leidimą reikia nustatyti ir kitoms 3 grupėms):

03globalus_nustatymai

3 žingsnis. Prieigos lygių sukūrimas.

Prieigos lygius reikia sukurti tam, apriboti kategorijų matomumą kitoms grupėms (kad pvz. grupė1 nariai negalėtų prieiti prie kategorijos kategorija2, kategorija3 ir pan.). Kiekvienai grupei sukursim tokius lygius:

  • grupė1 – lygis1
  • grupė2 – lygis2
  • grupė3 – lygis3
  • grupė4 – lygis4

Administracijos valdymo skyde pasirenkame Nariai->Prieigos lygiai->Pridėti naują prieigos lygį. Sukuriame 4 prieigos lygius, kiekvienam parenkant tam tikrą grupę. Bet mūsų užduoties sąlygoje yra pažymėta, kad grupė4 turi turėti prieigą ir prie kategorijos kategorija3, todėl kuriant lygis3, reikia jam priskirti ir grupę grupė4. Galutinis vaizdas turėtų būti toks:

04lygis1   05lygis2

06lygis3   07lygis4

4 žingsnis. Narių sukūrimas

Tam kad patikrinti ar teisingai yra nustatytos teisės, reikia sukurti po vieną narį kiekvienai grupei. Administracijos valdymo skyde pereiname Nariai->Narių tvarkyklė->Pridėti naują narį. Sukuriame keturis narius, priskiriant juos kiekvienai grupei:

  • narys1 – grupė1
  • narys2 – grupė2
  • narys3 – grupė3
  • narys4 – grupė4

08nario_sukurimas

Priskyrus visus narius, galutinis vaizdas turėtų būti toks:

09nariai

5 žingsnis. Kategorijų sukūrimas.

Tai pats svarbiausias žingsnis, kadangi būtent čia reikia nustatyti leidimus kiekvienai grupei. Administracijos valdymo skyde pasirenkame Turinys->Kategorijų tvarkyklė->Pridėti naują kategoriją. Sukuriam 4 kategorijas, kiekvienai parenkant tam tikrą prieigos lygį (paveikslėlyje parodyta tik kategorija1, bet atitinkamus veiksmus reikia tlikti su visomis kategorijomis):

  • kategorija1 – lygis1
  • kategorija2 – lygis2
  • kategorija3 – lygis3
  • kategorija4 – lygis4

10kategorijos_lygiai

Tuo pačiu metu reikia nustatyti ir kategorijos leidimus, kuriuos galės atlikti tam tikra grupė jai skirtoje kategorijoje (pagal pavyzdžio sąlygą):

Kategorija1:  Grupė1skaityti. Kadangi straipsnių skaitymas yra leidžiamas visiems nariams, tai šioje kategorijoje paliekame leidimus pagal nutylėjimą:

11kategorija1

Kategorija2: Grupė2 - skaityti, redaguoti

12kategorija2

Kategorija3: Grupė3skaityti, redaguoti, sukurti. Grupė4redaguoti, keisti būseną

13kategorija3.1

14kategorija3.2

Kategorija4: Grupė4skaityti, redaguoti, keisti būseną, sukurti

15kategorija4

Teisingai atlikus visus veiksmus, turėtų gautis toks rezultatas:

16visos_kategorijos

Kad matytųsi koks nors rezultatas, sukuriame po vieną straipsnį kiekvienoje kategorijoje:

  • straipsnis1 – kategorija1
  • straipsnis2 – kategorija2
  • straipsnis3 – kategorija3
  • straipsnis4 – kategorija4

Administracijos valdymo skyde pasirenkame Turinys->Straipsnių tvarkyklė->Pridėti naują straipsnį:

17straipnis

Sukūrus visus straipsnius ir priskyrus juos atitinkamoms kategorijoms, gausime tokį rezultatą:

18straipsniai

Taip pat straipsnių tvarkyklėje reikia nustatyti, kad grupė4 nariai galėtų keisti straipsnio būseną.  Administracijos valdymo skyde pasirenkame Straipsniai->Straipsnių tvarkyklė ir Nustatymai->Leidimai:

18.1.leidimas_keisti

6 žingsnis. Meniu sukūrimas.

Administracijos valdymo skyde pasirenkame Meniu->Meniu Tvarkyklė->Pridėti naują meniu:

19meniu

Šiame meniu sukuriame 4 meniu punktus, kuriuose bus anksčiau sukurtų kategorijų išdėstymas, bei papildomą punktą, kuriuo bus galima pateikti straipsnį. Kol kas priėjimo lygį nustatome į viešas, kad bendram vaizde galėtumėme pamatyti ar tikrai kitos grupės nariai negali pasiekti jai nepriskirtos kategorijos:

20meniu_punktas

Priskyrus visus meniu punktus, gausime tokį vaizdą:

21meniu_punktai

Dabar sukuriame modulį, kuris atvaizduos šitą meniu svetainėje. Administracijos valdymo skyde pasirenkame Išplėtimai->Modulių tvarkyklė. Kol kas modulio priėjimą paliekame viešu:

22modulis

7 žingsnis. Rezultatų tikrinimas.

Atlikus visus aukščiau minėtus žingsnius, svetainės išorinėje sąsajoje gausime tokį vaizdą:

23isorine

Dabar tereikia prisijungti kiekvieno anksčiau sukurto nario duomenimis ir patikrinti ar viskas atitinka užduoties sąlygą. Tarkim, prisijungus kaip narys1 ir pasirinkus Antra kategorija, gausime klaidos pranešimą:

24klaida

Viskas veikia, mūsų sąlygos yra įvykdytos, bet.. kam reikia rodyti sukurtą meniu neprisijungusiems nariams arba kam grupė1 ir grupė2 nariai turi matyti punktą Pateikti straipsnį jei jie pagal sąlygą negali kurti jų, arba kam grupė2 nariai turi matyti meniu punktus, kurių pagal sąlygą negali matyti?

Tam turime atlikti tokią veiksmų seką :

8. Priskirti meniu punktus atitinkamoms grupėms
9. Priskirti punktą Pateikti straipsnį tik grupė3 ir grupė4 nariams
10.Nustatyti sukurto meniu rodymą tik šių 4 grupių nariams
11.Patikrinti rezultatus 

 

8 žingsnis. Meniu punktų priskyrimas

Grįžtame į administracijos valdymo skydą Meniu->Specialus meniu ir kiekvienam meniu punktui prieigos teises pakeičiam į atitinkamas:

  • Meniu punktas Pirma kategorija – lygis1
  • Meniu punktas Antra kategorija – lygis2
  • Meniu punktas Trečia kategorija – lygis3
  • Meniu punktas Ketvirta kategorija – lygis4

25punktas

Atlikę tokius pačius veiksmus su visais punktais, gausime tokį rezultatą:

26punktai

9 žingsnis. Punkto Pateikti straipsnį priskyrimas grupėms grupė3 ir grupė4

Kaip jau pastebėjote, prieigos teises galima priskirti tik vienam prieigos lygiui. O čia reikia priskirti iškart dviems lygiams. Taigi, kad išspręsti tokią situaciją, tereikia sukurti naują prieigos lygį. Pavyzdžio atveju reikia sukurti naują prieigos lygį, kuriam priskiriame 2 grupes: grupė3 ir grupė4:

27pateikti_straipsni

Grįžtame į meniu punktų nustatymus ir punktui Pateikti straipsnį parenkame naujai sukurtą prieigos lygį:

28pateikti_straipsni_punktas

10 žingsnis. Meniu rodymas

Viską atliekame panašiai, kaip ir nustatant Pateikti straipsnį, tik prieigos lygį priskiriame visoms grupėms:

29meniu_rodymas

Modulių tvarkyklėje sukurtam meniu priskiriame naujai sukurtą prieigos lygį:

30modulio_rodymas

11 žingsnis. Rezultatų tikrinimas

Jei narys nebus prisijungęs išorinėje sąsajoje, tai jis nematys sukurto meniu:

 

31nemato

O jei tarkim prisijungs narys, priklausantis grupei grupė4, tai jis matys visai kitokį vaizdą:

32mato

Taigi, visos sąlygos įvykdytos su kaupu.

P.S. Tokiu būdu sukurto meniu bei meniu punktų, kategorijų bei straipsnių nematys nei administratoriai, nei super nariai. O kaip leisti jiems matyti visa tai, nesunkiai išspręsite patys.


Paskelbta: 2012-12-11 08:56 nuo Beata #9516
Geras straipsnis ir gerai, kad su pavyzdžiais.
Bandžiau prisitaikyti sau: ir išėjo, ir neišėjo. Dar bandysiu, paskui matyt reiks eiti į forumą...
Paskelbta: 2012-12-11 18:28 nuo algis.k #9518
Padėjo, dėkui didelis.
Paskelbta: 2014-08-19 19:18 nuo Beata #11561
Po metų pasitikrinau viską savo sistemoje ir man nepatinka vienas dalykas, kad kiekvienos grupės administratorius (taip, jis meniu mato tik jam priklausančius failus redaguoti), bet prisijungęs jis gali redaguoti ir kitus svetainės puslapius.
Kur klaida?
Ar taip gali būti?
Pas mane septyni administratoriai pagal organizacijos padalinius. Jiems meniu priskirta tvarkyti po du savo krašto puslapius. Bet matau, kad prisijungę, jie mato redagavimo ikonėlę visiems puslapiams.
Paskelbta: 2014-08-19 19:38 nuo Martis33 #11562
Jeigu viskas gerai nustatyta, administratorius negali matyti tai, kas leisti kitam administratoriui. Reiktų peržiūrėt visus lygius ir narių leidimus (yra straipsnis Joomla 2.5 prieigos kontrolės sistema: leidimų peržiūra).
Paskelbta: 2014-08-19 20:49 nuo Beata #11563
Aš tik vadinu juos kraštų administratoriais. Iš tikrųjų viskas padaryta, kaip nurodyta šioje pamokoje, na ne visai, bet visi jie gali redaguoti, sukurti savo grupėje. Norėjau, kad tik savo krašto puslapiuose.

Todėl ir peržiūrėjau šiemet visą pamoką vėl, bet nieko geriau nepadariau
Paskelbta: 2014-08-19 21:12 nuo Beata #11564
Turėjau galvoje, visi jie turi tik Joomlos redaktoriaus statusą
Paskelbta: 2014-09-16 01:38 nuo Martis33 #11629
Tai gal reiktų nepriskirti visų prie redaktorių grupės, o pabandyt sukurti kiekvienam atskirą grupę
Paskelbta: 2014-09-17 09:38 nuo Beata #11636
Taip ir yra,
kiekvienam administratoriui atskira grupė ir kiekvienam iš jų suteiktos sukūrimo, redagavimo teisės
Paskelbta: 2016-03-10 16:25 nuo Beata #12476
Gal dar nelabai paseno tema ....
Dviejose svetainėse naudoju, nors ir ne visai sėkmingai

Pastebėjau vieną dalyką, kad sukurtos grupės redaguojant ar pateikiant straipsnį negali naudoti JCE editorių, nors tam nariui nurodytas JCE
Tuo tarpu Tiny MCE rodomas, JCE - nerodomas
Jei grupei dar suteiki ir redaktoriaus (editor) teises, tik tada atsiranda JCE redaktorius.
Mano administratoriams būtų naudingesnis JCE
Nerandu, kur nustatyti, kad grupės galėtų naudotis JCE redaktoriumi.....
Paskelbta: 2016-03-10 20:27 nuo Megejas #12477
Labas,

Redaktorius kiek aš žinau priskiriamas ne grupei bet konkrečiam vartotojui. Joomla 3.4.8 ir JCE 2.5.15 veikia viskas tvarkingai.
O koks redaktorius nustatytas pagal nutylėjimą Joomloje? Jei 'default" nustatai JCE irgi neleidžia naudot?

p.s. Šiaip jei tokie min nustatymai netenkina tai yra papildomi nustatymai pačime JCE redaktoriuje. Komponentai ->JCE redaktorius -> profiliai
čia gali susikurt papildomu profilų arba jau esamiems profiliams keist nustatymus tame tarpe ir redaktoriaus priskyrimas grupėms ar atskiriems vartotojams ir t.t.
Paskelbta: 2016-03-12 12:26 nuo Beata #12479
Pas mane vartotojui buvo nustatyta JCE redaktorius, bet default buvo Tiny MCE. Kai pakeičiau default į JCE, nepadėjo. Atsirasdavo JCE tik suteikus papildomai dar redaktoriaus teises.

Padėjo tik tada, kai radau JCE redaktoriuje nustatymą grupei
Ačiū

P.S. Kai čia spaudžiu "Išsisiųti", gaunu Internal server error

Aptarkite šį straipsnį forume
Norėdami dalyvauti diskusijoje turite prisijungti arba užsiregistruoti .

Joomla123.lt is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.
The Joomla!® name is used under a limited license from Open Source Matters in the United States and other countries.