Back to top

Autore Topic: [Risolto] Ricavare gruppo accesso utente  (Letto 2660 volte)

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
[Risolto] Ricavare gruppo accesso utente
« il: 04 Set 2016, 13:49:25 »
Buongiorno

Devo ricavare il gruppo di accesso dell'utente connesso per assegnare dei permessi ad una applicazione integrata in joomla.

Con le vecchie versioni di joomla era semplice avendo nella stessa tabella user la colonna usertype, in base al vecchio scehema e aggiungendo la colonna usertype nella tabella users e questo codice ottengo lo scopo:

Codice: [Seleziona]
function getPermissions(&$record){
    $user =$user = &JFactory::getUser();
    $usertype = $user->get('usertype');
    if ( $user and $usertype  == 'Super Users' ){
        return Dataface_PermissionsTool::getRolePermissions ('ADMIN');
} else if ( $user and $usertype  == 'EDITOR' ){
        return Dataface_PermissionsTool::getRolePermissions('EDITOR');
    } else if ( $user and $usertype  == 'MANAGER' ){
        return Dataface_PermissionsTool::getRolePermissions('MANAGER');
    }
    return Dataface_PermissionsTool::READ_ONLY();
   
}

Ma senza aggiungere la colonna usertype, ora devo sostituire la variabile $usertype con una variabile uguale al gruppo dell'utente connesso, sto naturalmente provando le relazioni fra le tabelle interessate, users, usergroups e usergroup_map per trovare la giusta query , se qualcuno mi aiuta ne sarei lieto. Grazie.
« Ultima modifica: 04 Set 2016, 17:05:55 da tomtomeight »

Offline MariaElenaBoschi

  • Appassionato
  • ***
  • Post: 469
    • Mostra profilo
Re:Ricavare gruppo accesso utente
« Risposta #1 il: 04 Set 2016, 15:06:51 »
https://docs.joomla.org/Accessing_the_current_user_object

... Use $user->groups to retrieve an array with all the IDs that refer to the groups (from #__usergroups table) of a user....

Parla di array quindi per fare una query è necessario trasformarlo in stringa (implode) e la query andrà fatta usando la condizione where... in()
mancano 2 giorni alla mia prematura dipartita, saluti a tutti, meb.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Ricavare gruppo accesso utente
« Risposta #2 il: 04 Set 2016, 16:25:46 »
Grazie del suggerimento, sono andato a leggere subito quella sezione della documentazione e mi chiedevo a questo punto invece di agire sul gruppo posso agire direttamente sulla funzione authorise, che in pratica è simile alla funzione originaria della applicazione standalone. premetto che nel componente non sono implementate le funzioni acl tuttavia ogni applicazione da eseguire nel componente viene legata ad una categoria ed alla categoria posso applicare un livello di accesso.
Intanto faccio delle prove e se a qualcuno interessa posso fornire il componente anche se ancora in fase beta.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
[Risolto] Ricavare gruppo accesso utente
« Risposta #3 il: 04 Set 2016, 17:05:22 »
Ok ho fatto le prove con esito positivo utilizzando la funzione authorise che semplifica il tutto senza necessità di alcuna query.

Codice: [Seleziona]
function getPermissions(&$record){
    $user =$user = &JFactory::getUser();
    if ($user->authorise('core.admin', 'com_datagrill')){
        return Dataface_PermissionsTool::getRolePermissions ('ADMIN');
} else if ($user->authorise('core.edit', 'com_datagrill')){
        return Dataface_PermissionsTool::getRolePermissions('EDITOR');
    } else if ($user->authorise('core.manage', 'com_datagrill')){
        return Dataface_PermissionsTool::getRolePermissions('MANAGER');
    }
    return Dataface_PermissionsTool::READ_ONLY();
   
}


 



Web Design Bolzano Kreatif