IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDK Discussion :

Supprimer les users d'un groupe


Sujet :

SDK

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Supprimer les users d'un groupe
    Bonjour,

    Je dois en java supprimer les users BO d'une liste de groupes.
    Voilà comment je m'y suis pris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*Récupération des groupes concernés*/
    IInfoObjects groups = iStore.query("SELECT * from CI_SYSTEMOBJECTS where SI_KIND='" + CeKind.USERGROUP + "' AND SI_NAME like \'Ta%\'");
     
    int compteur = 0;
    Set users = null;
     
    while (compteur < groups.size()){
    IUserGroup gb = (IUserGroup)groups.get(compteur);
    users = gb.getUsers();//on récupère les users du groupe
    Le problème avec cette solution c'est que les users sont récupérer dans une collections (qui comprend des integer et non des objets IUser, et si on parcours la collection on ne peut appliquer la méthode "deleteNow".


    L'autre solution à laquelle j'ai pensé, c'est de récupérer pour chaque groupe, ses users via une requête:
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IInfoObjects users = iStore.query("SELECT * from CI_SYSTEMOBJECTS where SI_KIND='User'");
    Or il faudrait que je puisse préciser dans la clause where le nom du groupe.
    Comme ça je parcourrais les users et je les supprimerais un à un avec la méthode "deleteNow".

    J'ai essayé ceci, mais ça ne passe pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IInfoObjects users = iStore.query("SELECT * from CI_SYSTEMOBJECTS where SI_KIND='User' AND SI_USERGROUPS="+gb.getID());
    Quelqu'un pourrait il m'aider
    Merci d'avance

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    La solution c'est :
    - récupérer l' ID du groupe à vider
    - parcourir TOUS les users, et pour chacun de vérifier s'il possède un USERGROUPS égal à cet id ==> oui ? alors le supprimer

    Citation Envoyé par zimit Voir le message
    J'ai essayé ceci, mais ça ne passe pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IInfoObjects users = iStore.query("SELECT * from CI_SYSTEMOBJECTS where SI_KIND='User' AND SI_USERGROUPS="+gb.getID());
    Par contre, tu dois itérer sur chaque groupe de l'utilisateur.

    Voilà un bout de code qui va t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // Get users from infostore 
    String sQueryUsers = "SELECT SI_ID, SI_NAME, SI_USERGROUPS FROM CI_SYSTEMOBJECTS WHERE SI_KIND = 'User'"; 
    IInfoObjects users = infoStore.query(sQueryUsers); 
     
    // Loop through users to get user properties and group membership properties 
    for (int i=0; i<users.size(); i++) { 
     
       // Get user and display properties 
       IInfoObject user = (IInfoObject)users.get(i); 
       out.println("user SI_NAME = " + user.getTitle() + " - user SI_ID = " + user.getID()); 
       out.println("<br />Belongs to the following user group(s):<br />"); 
     
       // Get user group membership from SI_USERGROUPS property bag 
       IProperties userProps = (IProperties)user.properties().getProperty("SI_USERGROUPS").getValue(); 
       int usergroupCount = ((Integer)userProps.getProperty("SI_TOTAL").getValue()).intValue(); 
     
       // Loop through each user group 
       for (int j = 1; j <= usergroupCount; j++) { 
          // Get user group SI_ID 
          String groupID = userProps.getProperty(Integer.toString(j)).getValue().toString(); 
     
          // Get user group SI_NAME 
          String sQueryGroupName = "SELECT TOP 1 SI_NAME FROM CI_SYSTEMOBJECTS WHERE SI_ID = '" + groupID + "' AND SI_KIND = 'UserGroup'"; 
          IInfoObjects groups = infoStore.query(sQueryGroupName); 
          String groupName = ((IInfoObject)groups.get(0)).getTitle(); 
     
          // Display user group properties 
          out.println(j + " - group SI_ID = " + groupID + " - group SI_NAME = " + groupName + "<br />"); 
       } 
     
       out.println("<hr />"); 
    }

    ... il faut juste ajouter le deleteNow !

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/01/2010, 10h23
  2. Lister les users d'un groupe dans ActiveDirectory
    Par l0quito dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/09/2009, 15h32
  3. changer les users d'un groupe d'un site a l'autre
    Par xenosender dans le forum SharePoint
    Réponses: 2
    Dernier message: 02/03/2009, 12h12
  4. Réponses: 6
    Dernier message: 17/10/2008, 21h06
  5. [SQL 2K] Supprimer les single user ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/08/2005, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo