Joomla.it Forum

Non solo Joomla... => Sviluppo => : tomtomeight 04 Sep 2016, 13:49:25

: [Risolto] Ricavare gruppo accesso utente
: tomtomeight 04 Sep 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:

:
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.
: Re:Ricavare gruppo accesso utente
: MariaElenaBoschi 04 Sep 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()
: Re:Ricavare gruppo accesso utente
: tomtomeight 04 Sep 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.
: [Risolto] Ricavare gruppo accesso utente
: tomtomeight 04 Sep 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.

:
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();
   
}