user/1/edit elérhetetlenné tétele

burney képe

Sziasztok!

Egy kis segítséget szeretnék kérni.
Nagyon kezdő vagyok module írásban, ezért egy nagyon-nagyon egyszerű feladatra szeretnék module-t írni:
Azt szeretném elérni, hogy minden usernek, kivéve az adminnak elérhetetlen legyen a user/1/edit oldal, azaz az admin user adatainak szerkeszthetőségét szeretném tiltani. (ha a user-listából is eltűnik, az sem lenne rossz)

Így próbáltam megoldani a kivétel nélküli elérhetetlenné tételt, de nem ment, kérlek nézzetek rá, biztos vagyok benne, hogy elképesztően egyszerű erre module-t írni, csak valamiért Nekem nem sikerül :S

  1. function hide_node_page_menu_alter(&$items) {
  2. $items['user/1/edit']['page callback'] = 'drupal_not_found';
  3. }

(A fenti kód user/1-re ment, de az csak a user információinak elérése.)

Előre is nagyon köszönöm a segítséget!

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
szt képe

Biztos, hogy meg lehet ezt modullal is oldani, de ha nálad névtelen userek tudják szerkeszteni a user/1-et, akkor valami nagyon rosszul van beállítva.
Tehát:
- ha fő adminként (azaz user/1-ként) vagy belépve, akkor az teljesen normális dolog, ha tudod szerkeszteni saját magad, azaz az user/1/edit oldalt.
- ha viszont nem vagy belépve, azaz kilépsz :), és még mindig tudod szerkeszteni az user/1/edit oldalt, akkor lépj vissza adminként, és nézd meg a admin/people/permissions oldalt, ott is a "User" részt. Ha ott valami be van pipálva a "NÉVTELEN LÁTOGATÓ"-knak, akkor azt sürgősen kapcsold ki, és akkor nem is kell írnod modult ;)

3
0
burney képe

Egy kicsit pontatlan voltam :), mert természetesen a be nem jelentkezett felhasználók nem férnek hozzá a felhasználók, főleg nem a user felhasználó adataihoz. Azt szeretném elérni, hogy azok a felhasználók ne tudják az admin-t szerkeszteni, akiknek van jogosultsága a felhasználók adminisztrációjához.
Azaz az admin tőlük is legyen védve.

A user protect module-t már próbáltam, de nem igazán jött be, ez a kis module megoldás tetszene és tanulságos is lenne...

Remélem egy kicsit pontosabb most az elképzelésem. :)

0
0
Nagy Gusztáv képe

Az mit jelent, hogy "nem jött be"? A user protect pont erre való.

0
0

Nagy Gusztáv

szt képe

Még mindig off vagyok, amikor azt mondom, meg lehet oldani a dolgot, és értem, hogy gyakorolni szeretnél :)
De a User Protect modul tényleg erre való, és mivel elég bonyolult, annak a beállításait sem árt gyakorolni ;)

De ha mindenáron egy elég veszélyes részen szeretnél gyakorolni, akkor gondolatébresztőnek itt egy csúnya megoldás, ami letiltja a szerkesztést a user/1-ről, ha a user a "useradmin" role tagja, akik amúgy minden usert adminisztrálhatnak.
Mindenképpen kell role-t is vizsgálni, mert ha anélkül kipróbálod (=kivétel nélküli elérhetetlenné tétel), akkor szegény 1-es user sem fogja tudni magát szerkeszteni.

  1. function user1hide_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
  2. global $user;
  3. if (in_array('useradmin',$user->roles) && $form['#user']->uid == 1) {
  4. $form['#access'] = FALSE;
  5. }
  6. }

Máshogy is lehet, szebben is lehet, nem praktikus, mert bele van égetve több dolog is, úgyhogy élesben mindenképpen User Protect!
0
0