FrontEndUsers - Définition de droits d'accès par utilisateur

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.11.2
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

Est-il possible de définir des droits d'accès pour un seul utilisateur et non pour un groupe tout entier ?

Dans le cadre d'un petit espace "pro", je dois donner des accès séparés pour chaque personne.

La solution alternative serait de créer un groupe par personne mais j'aimerais éviter cette étape à mon client.

D'avance merci !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.11.2
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

Est-il possible de définir des droits d'accès pour un seul utilisateur et non pour un groupe tout entier ?

Dans le cadre d'un petit espace "pro", je dois donner des accès séparés pour chaque personne.

La solution alternative serait de créer un groupe par personne mais j'aimerais éviter cette étape à mon client.

D'avance merci !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#2
front ou back l'espace pro ?
Répondre
#2
front ou back l'espace pro ?
Répondre
#3
salut les cadors!
feu=front (enfin... pour moi)
Tu peux sans doute gérer ça avec customContent car les droits sont attribués aux groupes dans FEU.
Ou bien faire une udt qui créer le groupe du même nom que l'utilisateur en te servant des événements :
à la création du user, tu le met dans un groupe "pro" par exemple et dans ton udt, tu testes le groupe et si=pro, tu créer un autre groupe avec le pseudo que tu lui attribues.
Mais tu vas me dire que "oui, j'avais bien pensé à ça, mais je voulais juste savoir si c'était possible" Wink
{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#3
salut les cadors!
feu=front (enfin... pour moi)
Tu peux sans doute gérer ça avec customContent car les droits sont attribués aux groupes dans FEU.
Ou bien faire une udt qui créer le groupe du même nom que l'utilisateur en te servant des événements :
à la création du user, tu le met dans un groupe "pro" par exemple et dans ton udt, tu testes le groupe et si=pro, tu créer un autre groupe avec le pseudo que tu lui attribues.
Mais tu vas me dire que "oui, j'avais bien pensé à ça, mais je voulais juste savoir si c'était possible" Wink
{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#4
En front end bess
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#4
En front end bess
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#5
@jissey, non j'avais pas pensé à ca. Bonne suggestion. Mais si je comprend bien, je ne peux pas nativement dire "Mr X a droit à accéder à telle page".
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#5
@jissey, non j'avais pas pensé à ca. Bonne suggestion. Mais si je comprend bien, je ne peux pas nativement dire "Mr X a droit à accéder à telle page".
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#6
FEU est capable de filtrer par utilisateur ou par groupe. Le plus utilisé est par le groupe, mais on peut imaginer faire des traitement user par user ?

tout dépend de ce qu'ils sont sensé y faire/déposer/écrire.
Répondre
#6
FEU est capable de filtrer par utilisateur ou par groupe. Le plus utilisé est par le groupe, mais on peut imaginer faire des traitement user par user ?

tout dépend de ce qu'ils sont sensé y faire/déposer/écrire.
Répondre
#7
Ah bon pourtant dans les pages protégées on ne peut choisir que des groupes. Y a une option quelque part à activer pour choisir des users ?
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#7
Ah bon pourtant dans les pages protégées on ne peut choisir que des groupes. Y a une option quelque part à activer pour choisir des users ?
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#8
tout dépend de ce que tu veux faire, explique nous concrètement ce qu'ils vont pouvoir faire dans leur page perso ??
Répondre
#8
tout dépend de ce que tu veux faire, explique nous concrètement ce qu'ils vont pouvoir faire dans leur page perso ??
Répondre
#9
En gros, les clients de mon client vont y trouver une ou plusieurs pages de consignes de montages et de liens vers de la doc technique.

C'est pour ca que je voudrais pouvoir attribuer les droits d'accès à une page à un seul user mais on peut tout à fait imaginer d'utiliser la solution de Jissey : créer automatiquement le groupe à la création du user et laisser sélectionner ce groupe lors de la création de la page.
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#9
En gros, les clients de mon client vont y trouver une ou plusieurs pages de consignes de montages et de liens vers de la doc technique.

C'est pour ca que je voudrais pouvoir attribuer les droits d'accès à une page à un seul user mais on peut tout à fait imaginer d'utiliser la solution de Jissey : créer automatiquement le groupe à la création du user et laisser sélectionner ce groupe lors de la création de la page.
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#10
ou créer une page unique, et y afficher le contenu selon l'utilisateur.

FEU + CustomContent savent très bien le faire.
Répondre
#10
ou créer une page unique, et y afficher le contenu selon l'utilisateur.

FEU + CustomContent savent très bien le faire.
Répondre
#11
oui mais c'est pas si simple car mon client va ajouter librement des utilisateurs... je le vois mal chipoter avec smarty !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#11
oui mais c'est pas si simple car mon client va ajouter librement des utilisateurs... je le vois mal chipoter avec smarty !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#12
non, tu rend automatique dans le code de la page avec un peu de généricité

utilise un module, peu importe, qui sera utilisé par ton client pour renseigner les data.

J'imagine un truc du style : Les documents : name + libelle + contenu et les droits d'accès : name + user pour laisser mapper les droits entre les utilisateurs et les documents.

Une fois l'information 1 utilisateur à droit à 0/n documents tu fais appel dans la page du front à un code du type

$userId = getCurrentUserId()
$document = [obtenir la liste des documents pour l'utilisateur via son userId]

et ensuite un bon foreach des familles sur la liste des documents. Une seule page, un seul code, les utilisateurs peuvent s'enregistrer à souhait et l'admin affecter les accès aux documents seul.

pas clair ?
Répondre
#12
non, tu rend automatique dans le code de la page avec un peu de généricité

utilise un module, peu importe, qui sera utilisé par ton client pour renseigner les data.

J'imagine un truc du style : Les documents : name + libelle + contenu et les droits d'accès : name + user pour laisser mapper les droits entre les utilisateurs et les documents.

Une fois l'information 1 utilisateur à droit à 0/n documents tu fais appel dans la page du front à un code du type

$userId = getCurrentUserId()
$document = [obtenir la liste des documents pour l'utilisateur via son userId]

et ensuite un bon foreach des familles sur la liste des documents. Une seule page, un seul code, les utilisateurs peuvent s'enregistrer à souhait et l'admin affecter les accès aux documents seul.

pas clair ?
Répondre
#13
Oui c'est aussi une solution ca !

Je vais voir laquelle est la plus rapide à mettre en place avec le temps et le budget dont je dispose.

Merci !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#13
Oui c'est aussi une solution ca !

Je vais voir laquelle est la plus rapide à mettre en place avec le temps et le budget dont je dispose.

Merci !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#14
Bon je suis sur une solution, je l'expliquerai par ici quand ca sera terminé mais avant toute chose, MERCI à jissey pour l'info sur les évènements et les udt que je ne connaissais pas ! (les events).

Vraiment super ce CMS !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#14
Bon je suis sur une solution, je l'expliquerai par ici quand ca sera terminé mais avant toute chose, MERCI à jissey pour l'info sur les évènements et les udt que je ne connaissais pas ! (les events).

Vraiment super ce CMS !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#15
Bon je l'avais promis... voici la solution. Je ne cache pas que j'ai du aller fouiller profond dans le code de FrontEndUsers et de l'admin de CMSMS pour trouver tous les morceaux de code nécessaire.

En résumé, mon client doit simplement ajouter un utilisateur, mon UDT fait le reste, soit :

1) Créer un dossier du nom du compte utilisateur, protégé par une page index.html
2) Ajouter un groupe d'utilisateurs dans FEU du nom de l'utilisateur
3) Ajouter les mêmes propriétés de groupes que celles d'un groupe "modèle"
4) Associer le groupe et l'utilisateur
5) Créer une page protégée du nom de l'utilisateur, sous laquelle le client ajoutera une page par projet
6) Ajouter le groupe de l'utilisateur dans les autorisations de cette page

La page du compte professionnel est placée dans l'arbo sous "Mon compte pro". Cette page affiche tous les projets de l'utilisateur connecté.

Code :
[== PHP ==]
// Get site config
$config=cmsms()->GetConfig();
// Build directory name
$gname=$params['name'];
$uid=$params['id'];
$dir_name=$config['root_path'].'/uploads/compte-pro/'.$gname;
// Create directory
mkdir($dir_name);
// Add index.html file for security reasons
$handle=fopen($dir_name.'/index.html', "w+");
fclose($handle);
// Creates group using email address
$feu=cms_utils::get_module('FrontEndUsers');
$feu->AddGroup($gname, 'Droits pour utilisateur '.$gname);
$gid=$feu->GetGroupID($gname);
$default_gid=$feu->GetGroupID('Client_Modele');// template group
foreach($feu->GetGroupPropertyRelations($default_gid) as $prop)
{
    $feu->AddGroupPropertyRelation($gid, $prop['name'], $prop['sort_key'],$prop['lostunflag'], $prop['required']);
}
// Add user in this group
$feu->AssignUserToGroup($uid, $gid);
// Create user page
// --------------------------------------------------------
// Following code comes from admin/addcontent.php core file
check_login();
$userid = get_userid();

$metadata = get_site_preference('page_metadata');

$parent_id = 63; // // page mon-espace-pro

$contentops = cmsms()->GetContentOperations();
$contentobj = $contentops->CreateNewContent('Content'); // Cannot create CustomContent type
// Change content type
include_once($config['root_path']."/admin/editcontent_extra.php");
// Set access rights to this page to our new user
$params['__feu_groups__']=array($gid);
copycontentobj($contentobj, 'feu_protected_page', $params);

$contentobj->SetAddMode();
$contentobj->SetOwner($userid);
$contentobj->SetCachable("1");
$contentobj->SetActive("1");
$contentobj->SetShowInMenu("1");
$contentobj->SetLastModifiedBy($userid);
$contentobj->SetName($gname);
$contentobj->SetMenuText($gname);
$contentobj->SetAlias($gname, true);

{
$templateops = cmsms()->GetTemplateOperations();
$dflt = $templateops->LoadDefaultTemplate();
if( isset($dflt) )
  {
$contentobj->SetTemplateId($dflt->id);
  }
}

// this stuff should be changed somehow.
$contentobj->SetMetadata($metadata);
$contentobj->SetPropertyValue('content_en', '<p>Page du compte client'.$gname.'</p>'); // why?

if ($parent_id!=-1) $contentobj->SetParentId($parent_id);
$contentobj->SetPropertyValue('searchable', 0);
$contentobj->SetPropertyValue('extra1',
            get_site_preference('page_extra1',''));
$contentobj->SetPropertyValue('extra2',
            get_site_preference('page_extra2',''));
$contentobj->SetPropertyValue('extra3',
            get_site_preference('page_extra3',''));
$tmp = get_site_preference('additional_editors');
$tmp2 = array();
if( !empty($tmp) )
{
  $tmp2 = explode(',',$tmp);
}
$contentobj->SetAdditionalEditors($tmp2);

// End of addcontent.php code sample
// --------------------------------------------------------
$contentobj->Save();
// Generates Hierarchy Position
$contentops = cmsms()->GetContentOperations();
$contentops->SetAllHierarchyPositions();
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#15
Bon je l'avais promis... voici la solution. Je ne cache pas que j'ai du aller fouiller profond dans le code de FrontEndUsers et de l'admin de CMSMS pour trouver tous les morceaux de code nécessaire.

En résumé, mon client doit simplement ajouter un utilisateur, mon UDT fait le reste, soit :

1) Créer un dossier du nom du compte utilisateur, protégé par une page index.html
2) Ajouter un groupe d'utilisateurs dans FEU du nom de l'utilisateur
3) Ajouter les mêmes propriétés de groupes que celles d'un groupe "modèle"
4) Associer le groupe et l'utilisateur
5) Créer une page protégée du nom de l'utilisateur, sous laquelle le client ajoutera une page par projet
6) Ajouter le groupe de l'utilisateur dans les autorisations de cette page

La page du compte professionnel est placée dans l'arbo sous "Mon compte pro". Cette page affiche tous les projets de l'utilisateur connecté.

Code :
[== PHP ==]
// Get site config
$config=cmsms()->GetConfig();
// Build directory name
$gname=$params['name'];
$uid=$params['id'];
$dir_name=$config['root_path'].'/uploads/compte-pro/'.$gname;
// Create directory
mkdir($dir_name);
// Add index.html file for security reasons
$handle=fopen($dir_name.'/index.html', "w+");
fclose($handle);
// Creates group using email address
$feu=cms_utils::get_module('FrontEndUsers');
$feu->AddGroup($gname, 'Droits pour utilisateur '.$gname);
$gid=$feu->GetGroupID($gname);
$default_gid=$feu->GetGroupID('Client_Modele');// template group
foreach($feu->GetGroupPropertyRelations($default_gid) as $prop)
{
    $feu->AddGroupPropertyRelation($gid, $prop['name'], $prop['sort_key'],$prop['lostunflag'], $prop['required']);
}
// Add user in this group
$feu->AssignUserToGroup($uid, $gid);
// Create user page
// --------------------------------------------------------
// Following code comes from admin/addcontent.php core file
check_login();
$userid = get_userid();

$metadata = get_site_preference('page_metadata');

$parent_id = 63; // // page mon-espace-pro

$contentops = cmsms()->GetContentOperations();
$contentobj = $contentops->CreateNewContent('Content'); // Cannot create CustomContent type
// Change content type
include_once($config['root_path']."/admin/editcontent_extra.php");
// Set access rights to this page to our new user
$params['__feu_groups__']=array($gid);
copycontentobj($contentobj, 'feu_protected_page', $params);

$contentobj->SetAddMode();
$contentobj->SetOwner($userid);
$contentobj->SetCachable("1");
$contentobj->SetActive("1");
$contentobj->SetShowInMenu("1");
$contentobj->SetLastModifiedBy($userid);
$contentobj->SetName($gname);
$contentobj->SetMenuText($gname);
$contentobj->SetAlias($gname, true);

{
$templateops = cmsms()->GetTemplateOperations();
$dflt = $templateops->LoadDefaultTemplate();
if( isset($dflt) )
  {
$contentobj->SetTemplateId($dflt->id);
  }
}

// this stuff should be changed somehow.
$contentobj->SetMetadata($metadata);
$contentobj->SetPropertyValue('content_en', '<p>Page du compte client'.$gname.'</p>'); // why?

if ($parent_id!=-1) $contentobj->SetParentId($parent_id);
$contentobj->SetPropertyValue('searchable', 0);
$contentobj->SetPropertyValue('extra1',
            get_site_preference('page_extra1',''));
$contentobj->SetPropertyValue('extra2',
            get_site_preference('page_extra2',''));
$contentobj->SetPropertyValue('extra3',
            get_site_preference('page_extra3',''));
$tmp = get_site_preference('additional_editors');
$tmp2 = array();
if( !empty($tmp) )
{
  $tmp2 = explode(',',$tmp);
}
$contentobj->SetAdditionalEditors($tmp2);

// End of addcontent.php code sample
// --------------------------------------------------------
$contentobj->Save();
// Generates Hierarchy Position
$contentops = cmsms()->GetContentOperations();
$contentops->SetAllHierarchyPositions();
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#16
Ah et encore merci Jissey pour m'avoir mis le nez sur les events... et bess pour tes conseils !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#16
Ah et encore merci Jissey pour m'avoir mis le nez sur les events... et bess pour tes conseils !
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#17
Salut,
merci de rien.
Intéressante à lire, cette UDT.
Mais la solution de Bess me semblait plus simple.
{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#17
Salut,
merci de rien.
Intéressante à lire, cette UDT.
Mais la solution de Bess me semblait plus simple.
{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#18
Oui et non... la page du client sera un mixte d'explications et de liens vers des docs ou autre.

L'avantage de rester dans une page est la flexibilité.

Et d'avoir eu l'occase de mieux connaitre cmsms...
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#18
Oui et non... la page du client sera un mixte d'explications et de liens vers des docs ou autre.

L'avantage de rester dans une page est la flexibilité.

Et d'avoir eu l'occase de mieux connaitre cmsms...
www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)