car vous allez presentez des documents à valider a des gens qui n'ont
ensutie l'ensemble des doc serait stocké dans un datatable qui lui serait
Bonjour,
Je developpe une webpart qui a pour objectif de parccourir les
bibliothèques
de documents SPS afin de créer une liste des documents sousmis à
approbation,
non encore traités. Cette webpart permet d'approuver ou de rejeter les
documents.
Si je me connecte en tant qu'administrateur du site : aucun problème,
par
contre si je me connecte avec le login d'un utilisateur ayant droit à
l'approbation, mais non administrateur du site, la propriétés
"AllWebs" ne
permet pas l'accès aux bibliothèques de document (Exception liée à la
sécurité).
L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est pas
satisfaisante car elle ne donne que les sous-sites de premier niveau.
La solution qui permettrait de résoudre ce problème semble donc être
l'"impersonation de code" avec la propriété "AllWebs".
Le problème est que cela ne fonctionne pas ! J'utilise l'impersonation
de
code avec le compte administrateur et j'ai l'exception suivante :
Microsoft.SharePoint.SPException: Impossible de se connecter à la base
de données
En debuggant la webpart je m'aperçois que la méthode utilisée pour le
login fonctionne. De plus j'ai accordé tous les droits à l'assembly de
la web part.
Le code utilisé est le suivant :
WindowsIdentity ImpersonateWebPart()
{
IntPtr tokenHandle = new IntPtr(0);
WindowsIdentity windowsIdentity = null ;
string strUserName = "Administrateur" ;
string strDomain = "DOMAIN" ;
string strPassword = "password";
try
{
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;
tokenHandle = IntPtr.Zero ;
// Tentative de connexion, Si login impossible = une
exception
est levée
bool bResult = LogonUser(strUserName, strDomain,
strPassword,
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
if (!bResult)
throw new
Exception(Marshal.GetLastWin32Error().ToString());
windowsIdentity = new WindowsIdentity(tokenHandle);
if (tokenHandle != IntPtr.Zero)
CloseHandle(tokenHandle);
}
catch(Exception ex)
{
throw new Exception(ex.ToString() + " USER : " +
strUserName +
"DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
}
return windowsIdentity ;
}
L'appel à cette méthode se fait de la manière suivante :
// Impersonation
WindowsImpersonationContext windowsContext > ImpersonateWebPart().Impersonate();
// Création de la liste des documents
GestSPS gestSPS = new CGestSPS(SiteUrl);
// On remplit la liste des documents
gestSPS.FillDocToWorkWith(m_lstDoc);
// Fin d'impersonation
if(windowsContext!=null)
windowsContext.Undo() ;
Or ceci ne fonctionne pas ....
Quelqu'un a t-il une idée ??
Merci.
car vous allez presentez des documents à valider a des gens qui n'ont
ensutie l'ensemble des doc serait stocké dans un datatable qui lui serait
Bonjour,
Je developpe une webpart qui a pour objectif de parccourir les
bibliothèques
de documents SPS afin de créer une liste des documents sousmis à
approbation,
non encore traités. Cette webpart permet d'approuver ou de rejeter les
documents.
Si je me connecte en tant qu'administrateur du site : aucun problème,
par
contre si je me connecte avec le login d'un utilisateur ayant droit à
l'approbation, mais non administrateur du site, la propriétés
"AllWebs" ne
permet pas l'accès aux bibliothèques de document (Exception liée à la
sécurité).
L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est pas
satisfaisante car elle ne donne que les sous-sites de premier niveau.
La solution qui permettrait de résoudre ce problème semble donc être
l'"impersonation de code" avec la propriété "AllWebs".
Le problème est que cela ne fonctionne pas ! J'utilise l'impersonation
de
code avec le compte administrateur et j'ai l'exception suivante :
Microsoft.SharePoint.SPException: Impossible de se connecter à la base
de données
En debuggant la webpart je m'aperçois que la méthode utilisée pour le
login fonctionne. De plus j'ai accordé tous les droits à l'assembly de
la web part.
Le code utilisé est le suivant :
WindowsIdentity ImpersonateWebPart()
{
IntPtr tokenHandle = new IntPtr(0);
WindowsIdentity windowsIdentity = null ;
string strUserName = "Administrateur" ;
string strDomain = "DOMAIN" ;
string strPassword = "password";
try
{
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;
tokenHandle = IntPtr.Zero ;
// Tentative de connexion, Si login impossible = une
exception
est levée
bool bResult = LogonUser(strUserName, strDomain,
strPassword,
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
if (!bResult)
throw new
Exception(Marshal.GetLastWin32Error().ToString());
windowsIdentity = new WindowsIdentity(tokenHandle);
if (tokenHandle != IntPtr.Zero)
CloseHandle(tokenHandle);
}
catch(Exception ex)
{
throw new Exception(ex.ToString() + " USER : " +
strUserName +
"DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
}
return windowsIdentity ;
}
L'appel à cette méthode se fait de la manière suivante :
// Impersonation
WindowsImpersonationContext windowsContext > ImpersonateWebPart().Impersonate();
// Création de la liste des documents
GestSPS gestSPS = new CGestSPS(SiteUrl);
// On remplit la liste des documents
gestSPS.FillDocToWorkWith(m_lstDoc);
// Fin d'impersonation
if(windowsContext!=null)
windowsContext.Undo() ;
Or ceci ne fonctionne pas ....
Quelqu'un a t-il une idée ??
Merci.
car vous allez presentez des documents à valider a des gens qui n'ont
ensutie l'ensemble des doc serait stocké dans un datatable qui lui serait
Bonjour,
Je developpe une webpart qui a pour objectif de parccourir les
bibliothèques
de documents SPS afin de créer une liste des documents sousmis à
approbation,
non encore traités. Cette webpart permet d'approuver ou de rejeter les
documents.
Si je me connecte en tant qu'administrateur du site : aucun problème,
par
contre si je me connecte avec le login d'un utilisateur ayant droit à
l'approbation, mais non administrateur du site, la propriétés
"AllWebs" ne
permet pas l'accès aux bibliothèques de document (Exception liée à la
sécurité).
L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est pas
satisfaisante car elle ne donne que les sous-sites de premier niveau.
La solution qui permettrait de résoudre ce problème semble donc être
l'"impersonation de code" avec la propriété "AllWebs".
Le problème est que cela ne fonctionne pas ! J'utilise l'impersonation
de
code avec le compte administrateur et j'ai l'exception suivante :
Microsoft.SharePoint.SPException: Impossible de se connecter à la base
de données
En debuggant la webpart je m'aperçois que la méthode utilisée pour le
login fonctionne. De plus j'ai accordé tous les droits à l'assembly de
la web part.
Le code utilisé est le suivant :
WindowsIdentity ImpersonateWebPart()
{
IntPtr tokenHandle = new IntPtr(0);
WindowsIdentity windowsIdentity = null ;
string strUserName = "Administrateur" ;
string strDomain = "DOMAIN" ;
string strPassword = "password";
try
{
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;
tokenHandle = IntPtr.Zero ;
// Tentative de connexion, Si login impossible = une
exception
est levée
bool bResult = LogonUser(strUserName, strDomain,
strPassword,
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
if (!bResult)
throw new
Exception(Marshal.GetLastWin32Error().ToString());
windowsIdentity = new WindowsIdentity(tokenHandle);
if (tokenHandle != IntPtr.Zero)
CloseHandle(tokenHandle);
}
catch(Exception ex)
{
throw new Exception(ex.ToString() + " USER : " +
strUserName +
"DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
}
return windowsIdentity ;
}
L'appel à cette méthode se fait de la manière suivante :
// Impersonation
WindowsImpersonationContext windowsContext > ImpersonateWebPart().Impersonate();
// Création de la liste des documents
GestSPS gestSPS = new CGestSPS(SiteUrl);
// On remplit la liste des documents
gestSPS.FillDocToWorkWith(m_lstDoc);
// Fin d'impersonation
if(windowsContext!=null)
windowsContext.Undo() ;
Or ceci ne fonctionne pas ....
Quelqu'un a t-il une idée ??
Merci.
Pour la partie impersonnation :
http://www.15seconds.com/issue/040511.htm
Sinon de mon point de vue c'est inutile pour ce cas la ...
>>> car vous allez presentez des documents à valider a des gens qui n'ont
pas acces don probléme
Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et listforcurrentuseronly
ainsi qu'un checkpermission le tout dans une fonction reccursive
>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui serait
utilisé pour le render via une smartpart par exemple
Voila :)
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Bonjour,
>
> Je developpe une webpart qui a pour objectif de parccourir les
> bibliothèques
> de documents SPS afin de créer une liste des documents sousmis à
> approbation,
> non encore traités. Cette webpart permet d'approuver ou de rejeter les
> documents.
> Si je me connecte en tant qu'administrateur du site : aucun problème,
> par
> contre si je me connecte avec le login d'un utilisateur ayant droit à
> l'approbation, mais non administrateur du site, la propriétés
> "AllWebs" ne
> permet pas l'accès aux bibliothèques de document (Exception liée à la
> sécurité).
> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est pas
> satisfaisante car elle ne donne que les sous-sites de premier niveau.
> La solution qui permettrait de résoudre ce problème semble donc être
> l'"impersonation de code" avec la propriété "AllWebs".
> Le problème est que cela ne fonctionne pas ! J'utilise l'impersonation
> de
> code avec le compte administrateur et j'ai l'exception suivante :
> Microsoft.SharePoint.SPException: Impossible de se connecter à la base
> de données
>
> En debuggant la webpart je m'aperçois que la méthode utilisée pour le
> login fonctionne. De plus j'ai accordé tous les droits à l'assembly de
> la web part.
>
> Le code utilisé est le suivant :
>
> WindowsIdentity ImpersonateWebPart()
> {
> IntPtr tokenHandle = new IntPtr(0);
> WindowsIdentity windowsIdentity = null ;
> string strUserName = "Administrateur" ;
> string strDomain = "DOMAIN" ;
> string strPassword = "password";
> try
> {
> const int LOGON32_PROVIDER_DEFAULT = 0;
> const int LOGON32_LOGON_INTERACTIVE = 2;
> tokenHandle = IntPtr.Zero ;
> // Tentative de connexion, Si login impossible = une
> exception
> est levée
> bool bResult = LogonUser(strUserName, strDomain,
> strPassword,
> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
> if (!bResult)
> throw new
> Exception(Marshal.GetLastWin32Error().ToString());
> windowsIdentity = new WindowsIdentity(tokenHandle);
> if (tokenHandle != IntPtr.Zero)
> CloseHandle(tokenHandle);
> }
> catch(Exception ex)
> {
> throw new Exception(ex.ToString() + " USER : " +
> strUserName +
> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
> }
> return windowsIdentity ;
> }
> L'appel à cette méthode se fait de la manière suivante :
>
> // Impersonation
> WindowsImpersonationContext windowsContext > > ImpersonateWebPart().Impersonate();
> // Création de la liste des documents
> GestSPS gestSPS = new CGestSPS(SiteUrl);
> // On remplit la liste des documents
> gestSPS.FillDocToWorkWith(m_lstDoc);
> // Fin d'impersonation
> if(windowsContext!=null)
> windowsContext.Undo() ;
> Or ceci ne fonctionne pas ....
> Quelqu'un a t-il une idée ??
> Merci.
>
Pour la partie impersonnation :
http://www.15seconds.com/issue/040511.htm
Sinon de mon point de vue c'est inutile pour ce cas la ...
>>> car vous allez presentez des documents à valider a des gens qui n'ont
pas acces don probléme
Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et listforcurrentuseronly
ainsi qu'un checkpermission le tout dans une fonction reccursive
>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui serait
utilisé pour le render via une smartpart par exemple
Voila :)
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Bonjour,
>
> Je developpe une webpart qui a pour objectif de parccourir les
> bibliothèques
> de documents SPS afin de créer une liste des documents sousmis à
> approbation,
> non encore traités. Cette webpart permet d'approuver ou de rejeter les
> documents.
> Si je me connecte en tant qu'administrateur du site : aucun problème,
> par
> contre si je me connecte avec le login d'un utilisateur ayant droit à
> l'approbation, mais non administrateur du site, la propriétés
> "AllWebs" ne
> permet pas l'accès aux bibliothèques de document (Exception liée à la
> sécurité).
> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est pas
> satisfaisante car elle ne donne que les sous-sites de premier niveau.
> La solution qui permettrait de résoudre ce problème semble donc être
> l'"impersonation de code" avec la propriété "AllWebs".
> Le problème est que cela ne fonctionne pas ! J'utilise l'impersonation
> de
> code avec le compte administrateur et j'ai l'exception suivante :
> Microsoft.SharePoint.SPException: Impossible de se connecter à la base
> de données
>
> En debuggant la webpart je m'aperçois que la méthode utilisée pour le
> login fonctionne. De plus j'ai accordé tous les droits à l'assembly de
> la web part.
>
> Le code utilisé est le suivant :
>
> WindowsIdentity ImpersonateWebPart()
> {
> IntPtr tokenHandle = new IntPtr(0);
> WindowsIdentity windowsIdentity = null ;
> string strUserName = "Administrateur" ;
> string strDomain = "DOMAIN" ;
> string strPassword = "password";
> try
> {
> const int LOGON32_PROVIDER_DEFAULT = 0;
> const int LOGON32_LOGON_INTERACTIVE = 2;
> tokenHandle = IntPtr.Zero ;
> // Tentative de connexion, Si login impossible = une
> exception
> est levée
> bool bResult = LogonUser(strUserName, strDomain,
> strPassword,
> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
> if (!bResult)
> throw new
> Exception(Marshal.GetLastWin32Error().ToString());
> windowsIdentity = new WindowsIdentity(tokenHandle);
> if (tokenHandle != IntPtr.Zero)
> CloseHandle(tokenHandle);
> }
> catch(Exception ex)
> {
> throw new Exception(ex.ToString() + " USER : " +
> strUserName +
> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
> }
> return windowsIdentity ;
> }
> L'appel à cette méthode se fait de la manière suivante :
>
> // Impersonation
> WindowsImpersonationContext windowsContext > > ImpersonateWebPart().Impersonate();
> // Création de la liste des documents
> GestSPS gestSPS = new CGestSPS(SiteUrl);
> // On remplit la liste des documents
> gestSPS.FillDocToWorkWith(m_lstDoc);
> // Fin d'impersonation
> if(windowsContext!=null)
> windowsContext.Undo() ;
> Or ceci ne fonctionne pas ....
> Quelqu'un a t-il une idée ??
> Merci.
>
Pour la partie impersonnation :
http://www.15seconds.com/issue/040511.htm
Sinon de mon point de vue c'est inutile pour ce cas la ...
>>> car vous allez presentez des documents à valider a des gens qui n'ont
pas acces don probléme
Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et listforcurrentuseronly
ainsi qu'un checkpermission le tout dans une fonction reccursive
>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui serait
utilisé pour le render via une smartpart par exemple
Voila :)
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Bonjour,
>
> Je developpe une webpart qui a pour objectif de parccourir les
> bibliothèques
> de documents SPS afin de créer une liste des documents sousmis à
> approbation,
> non encore traités. Cette webpart permet d'approuver ou de rejeter les
> documents.
> Si je me connecte en tant qu'administrateur du site : aucun problème,
> par
> contre si je me connecte avec le login d'un utilisateur ayant droit à
> l'approbation, mais non administrateur du site, la propriétés
> "AllWebs" ne
> permet pas l'accès aux bibliothèques de document (Exception liée à la
> sécurité).
> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est pas
> satisfaisante car elle ne donne que les sous-sites de premier niveau.
> La solution qui permettrait de résoudre ce problème semble donc être
> l'"impersonation de code" avec la propriété "AllWebs".
> Le problème est que cela ne fonctionne pas ! J'utilise l'impersonation
> de
> code avec le compte administrateur et j'ai l'exception suivante :
> Microsoft.SharePoint.SPException: Impossible de se connecter à la base
> de données
>
> En debuggant la webpart je m'aperçois que la méthode utilisée pour le
> login fonctionne. De plus j'ai accordé tous les droits à l'assembly de
> la web part.
>
> Le code utilisé est le suivant :
>
> WindowsIdentity ImpersonateWebPart()
> {
> IntPtr tokenHandle = new IntPtr(0);
> WindowsIdentity windowsIdentity = null ;
> string strUserName = "Administrateur" ;
> string strDomain = "DOMAIN" ;
> string strPassword = "password";
> try
> {
> const int LOGON32_PROVIDER_DEFAULT = 0;
> const int LOGON32_LOGON_INTERACTIVE = 2;
> tokenHandle = IntPtr.Zero ;
> // Tentative de connexion, Si login impossible = une
> exception
> est levée
> bool bResult = LogonUser(strUserName, strDomain,
> strPassword,
> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
> if (!bResult)
> throw new
> Exception(Marshal.GetLastWin32Error().ToString());
> windowsIdentity = new WindowsIdentity(tokenHandle);
> if (tokenHandle != IntPtr.Zero)
> CloseHandle(tokenHandle);
> }
> catch(Exception ex)
> {
> throw new Exception(ex.ToString() + " USER : " +
> strUserName +
> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
> }
> return windowsIdentity ;
> }
> L'appel à cette méthode se fait de la manière suivante :
>
> // Impersonation
> WindowsImpersonationContext windowsContext > > ImpersonateWebPart().Impersonate();
> // Création de la liste des documents
> GestSPS gestSPS = new CGestSPS(SiteUrl);
> // On remplit la liste des documents
> gestSPS.FillDocToWorkWith(m_lstDoc);
> // Fin d'impersonation
> if(windowsContext!=null)
> windowsContext.Undo() ;
> Or ceci ne fonctionne pas ....
> Quelqu'un a t-il une idée ??
> Merci.
>
Je vais peut etre dire une grosse bétise mais ...
Pourquoi ne pas utiliser le moteur de recherche pour identifier tous ces
documents, ce serait largement plus rapide non ?
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Merci pour cette réponse, je vais pouvoir creuser davantage.
>
> Pour infos :
> Cependant les gens qui devront approuver ont accès à tous les
> documents,
> le problème est que si nous utilisons la propriété "AllWebs", elle ne
> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
> pas
> forcement le cas.
> Nous avons bien pensé à un parcours récursif, mais la quantité de
> sites est telle que les performances sont déplorables, alors qu'avec
> "AllWebs" elles sont tout à fait acceptables.
>
> Merci encore.
>
> "Renaud Comte" a écrit :
>
>> Pour la partie impersonnation :
>> http://www.15seconds.com/issue/040511.htm
>>
>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>
>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>> n'ont
>>>>>
>> pas acces don probléme
>>
>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>> fonction reccursive
>>
>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui
>>>>> serait
>>>>>
>> utilisé pour le render via une smartpart par exemple
>>
>> Voila :)
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Bonjour,
>>>
>>> Je developpe une webpart qui a pour objectif de parccourir les
>>> bibliothèques
>>> de documents SPS afin de créer une liste des documents sousmis à
>>> approbation,
>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>> les
>>> documents.
>>> Si je me connecte en tant qu'administrateur du site : aucun
>>> problème,
>>> par
>>> contre si je me connecte avec le login d'un utilisateur ayant droit
>>> à
>>> l'approbation, mais non administrateur du site, la propriétés
>>> "AllWebs" ne
>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>> la
>>> sécurité).
>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>> pas
>>> satisfaisante car elle ne donne que les sous-sites de premier
>>> niveau.
>>> La solution qui permettrait de résoudre ce problème semble donc être
>>> l'"impersonation de code" avec la propriété "AllWebs".
>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>> l'impersonation
>>> de
>>> code avec le compte administrateur et j'ai l'exception suivante :
>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>> base
>>> de données
>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>> l'assembly de la web part.
>>>
>>> Le code utilisé est le suivant :
>>>
>>> WindowsIdentity ImpersonateWebPart()
>>> {
>>> IntPtr tokenHandle = new IntPtr(0);
>>> WindowsIdentity windowsIdentity = null ;
>>> string strUserName = "Administrateur" ;
>>> string strDomain = "DOMAIN" ;
>>> string strPassword = "password";
>>> try
>>> {
>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>> tokenHandle = IntPtr.Zero ;
>>> // Tentative de connexion, Si login impossible = une
>>> exception
>>> est levée
>>> bool bResult = LogonUser(strUserName, strDomain,
>>> strPassword,
>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>> tokenHandle);
>>> if (!bResult)
>>> throw new
>>> Exception(Marshal.GetLastWin32Error().ToString());
>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>> if (tokenHandle != IntPtr.Zero)
>>> CloseHandle(tokenHandle);
>>> }
>>> catch(Exception ex)
>>> {
>>> throw new Exception(ex.ToString() + " USER : " +
>>> strUserName +
>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>> }
>>> return windowsIdentity ;
>>> }
>>> L'appel à cette méthode se fait de la manière suivante :
>>> // Impersonation
>>> WindowsImpersonationContext windowsContext > >>> ImpersonateWebPart().Impersonate();
>>> // Création de la liste des documents
>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>> // On remplit la liste des documents
>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>> // Fin d'impersonation
>>> if(windowsContext!=null)
>>> windowsContext.Undo() ;
>>> Or ceci ne fonctionne pas ....
>>> Quelqu'un a t-il une idée ??
>>> Merci.
Je vais peut etre dire une grosse bétise mais ...
Pourquoi ne pas utiliser le moteur de recherche pour identifier tous ces
documents, ce serait largement plus rapide non ?
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Merci pour cette réponse, je vais pouvoir creuser davantage.
>
> Pour infos :
> Cependant les gens qui devront approuver ont accès à tous les
> documents,
> le problème est que si nous utilisons la propriété "AllWebs", elle ne
> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
> pas
> forcement le cas.
> Nous avons bien pensé à un parcours récursif, mais la quantité de
> sites est telle que les performances sont déplorables, alors qu'avec
> "AllWebs" elles sont tout à fait acceptables.
>
> Merci encore.
>
> "Renaud Comte" a écrit :
>
>> Pour la partie impersonnation :
>> http://www.15seconds.com/issue/040511.htm
>>
>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>
>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>> n'ont
>>>>>
>> pas acces don probléme
>>
>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>> fonction reccursive
>>
>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui
>>>>> serait
>>>>>
>> utilisé pour le render via une smartpart par exemple
>>
>> Voila :)
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Bonjour,
>>>
>>> Je developpe une webpart qui a pour objectif de parccourir les
>>> bibliothèques
>>> de documents SPS afin de créer une liste des documents sousmis à
>>> approbation,
>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>> les
>>> documents.
>>> Si je me connecte en tant qu'administrateur du site : aucun
>>> problème,
>>> par
>>> contre si je me connecte avec le login d'un utilisateur ayant droit
>>> à
>>> l'approbation, mais non administrateur du site, la propriétés
>>> "AllWebs" ne
>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>> la
>>> sécurité).
>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>> pas
>>> satisfaisante car elle ne donne que les sous-sites de premier
>>> niveau.
>>> La solution qui permettrait de résoudre ce problème semble donc être
>>> l'"impersonation de code" avec la propriété "AllWebs".
>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>> l'impersonation
>>> de
>>> code avec le compte administrateur et j'ai l'exception suivante :
>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>> base
>>> de données
>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>> l'assembly de la web part.
>>>
>>> Le code utilisé est le suivant :
>>>
>>> WindowsIdentity ImpersonateWebPart()
>>> {
>>> IntPtr tokenHandle = new IntPtr(0);
>>> WindowsIdentity windowsIdentity = null ;
>>> string strUserName = "Administrateur" ;
>>> string strDomain = "DOMAIN" ;
>>> string strPassword = "password";
>>> try
>>> {
>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>> tokenHandle = IntPtr.Zero ;
>>> // Tentative de connexion, Si login impossible = une
>>> exception
>>> est levée
>>> bool bResult = LogonUser(strUserName, strDomain,
>>> strPassword,
>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>> tokenHandle);
>>> if (!bResult)
>>> throw new
>>> Exception(Marshal.GetLastWin32Error().ToString());
>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>> if (tokenHandle != IntPtr.Zero)
>>> CloseHandle(tokenHandle);
>>> }
>>> catch(Exception ex)
>>> {
>>> throw new Exception(ex.ToString() + " USER : " +
>>> strUserName +
>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>> }
>>> return windowsIdentity ;
>>> }
>>> L'appel à cette méthode se fait de la manière suivante :
>>> // Impersonation
>>> WindowsImpersonationContext windowsContext > >>> ImpersonateWebPart().Impersonate();
>>> // Création de la liste des documents
>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>> // On remplit la liste des documents
>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>> // Fin d'impersonation
>>> if(windowsContext!=null)
>>> windowsContext.Undo() ;
>>> Or ceci ne fonctionne pas ....
>>> Quelqu'un a t-il une idée ??
>>> Merci.
Je vais peut etre dire une grosse bétise mais ...
Pourquoi ne pas utiliser le moteur de recherche pour identifier tous ces
documents, ce serait largement plus rapide non ?
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Merci pour cette réponse, je vais pouvoir creuser davantage.
>
> Pour infos :
> Cependant les gens qui devront approuver ont accès à tous les
> documents,
> le problème est que si nous utilisons la propriété "AllWebs", elle ne
> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
> pas
> forcement le cas.
> Nous avons bien pensé à un parcours récursif, mais la quantité de
> sites est telle que les performances sont déplorables, alors qu'avec
> "AllWebs" elles sont tout à fait acceptables.
>
> Merci encore.
>
> "Renaud Comte" a écrit :
>
>> Pour la partie impersonnation :
>> http://www.15seconds.com/issue/040511.htm
>>
>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>
>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>> n'ont
>>>>>
>> pas acces don probléme
>>
>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>> fonction reccursive
>>
>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui
>>>>> serait
>>>>>
>> utilisé pour le render via une smartpart par exemple
>>
>> Voila :)
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Bonjour,
>>>
>>> Je developpe une webpart qui a pour objectif de parccourir les
>>> bibliothèques
>>> de documents SPS afin de créer une liste des documents sousmis à
>>> approbation,
>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>> les
>>> documents.
>>> Si je me connecte en tant qu'administrateur du site : aucun
>>> problème,
>>> par
>>> contre si je me connecte avec le login d'un utilisateur ayant droit
>>> à
>>> l'approbation, mais non administrateur du site, la propriétés
>>> "AllWebs" ne
>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>> la
>>> sécurité).
>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>> pas
>>> satisfaisante car elle ne donne que les sous-sites de premier
>>> niveau.
>>> La solution qui permettrait de résoudre ce problème semble donc être
>>> l'"impersonation de code" avec la propriété "AllWebs".
>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>> l'impersonation
>>> de
>>> code avec le compte administrateur et j'ai l'exception suivante :
>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>> base
>>> de données
>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>> l'assembly de la web part.
>>>
>>> Le code utilisé est le suivant :
>>>
>>> WindowsIdentity ImpersonateWebPart()
>>> {
>>> IntPtr tokenHandle = new IntPtr(0);
>>> WindowsIdentity windowsIdentity = null ;
>>> string strUserName = "Administrateur" ;
>>> string strDomain = "DOMAIN" ;
>>> string strPassword = "password";
>>> try
>>> {
>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>> tokenHandle = IntPtr.Zero ;
>>> // Tentative de connexion, Si login impossible = une
>>> exception
>>> est levée
>>> bool bResult = LogonUser(strUserName, strDomain,
>>> strPassword,
>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>> tokenHandle);
>>> if (!bResult)
>>> throw new
>>> Exception(Marshal.GetLastWin32Error().ToString());
>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>> if (tokenHandle != IntPtr.Zero)
>>> CloseHandle(tokenHandle);
>>> }
>>> catch(Exception ex)
>>> {
>>> throw new Exception(ex.ToString() + " USER : " +
>>> strUserName +
>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>> }
>>> return windowsIdentity ;
>>> }
>>> L'appel à cette méthode se fait de la manière suivante :
>>> // Impersonation
>>> WindowsImpersonationContext windowsContext > >>> ImpersonateWebPart().Impersonate();
>>> // Création de la liste des documents
>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>> // On remplit la liste des documents
>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>> // Fin d'impersonation
>>> if(windowsContext!=null)
>>> windowsContext.Undo() ;
>>> Or ceci ne fonctionne pas ....
>>> Quelqu'un a t-il une idée ??
>>> Merci.
Si les sotes sont indexés, il peut les toruver
un peu de SQL freetext et de modele objet et ca tourne
>>> jeter donc un oeil dans le SDK :)
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Ma problématique est de parcourir toutes les bibliothèques de tous les
> sites dans toutes les zones, le moteur de recherche est-il capable de
> réaliser ceci ? Si oui, comment ?
>
> Merci.
>
> "Renaud Comte" a écrit :
>
>> Je vais peut etre dire une grosse bétise mais ...
>>
>> Pourquoi ne pas utiliser le moteur de recherche pour identifier tous
>> ces documents, ce serait largement plus rapide non ?
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Merci pour cette réponse, je vais pouvoir creuser davantage.
>>>
>>> Pour infos :
>>> Cependant les gens qui devront approuver ont accès à tous les
>>> documents,
>>> le problème est que si nous utilisons la propriété "AllWebs", elle
>>> ne
>>> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
>>> pas
>>> forcement le cas.
>>> Nous avons bien pensé à un parcours récursif, mais la quantité de
>>> sites est telle que les performances sont déplorables, alors qu'avec
>>> "AllWebs" elles sont tout à fait acceptables.
>>> Merci encore.
>>>
>>> "Renaud Comte" a écrit :
>>>
>>>> Pour la partie impersonnation :
>>>> http://www.15seconds.com/issue/040511.htm
>>>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>>>
>>>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>>>> n'ont
>>>>>>>
>>>> pas acces don probléme
>>>>
>>>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>>>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>>>> fonction reccursive
>>>>
>>>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui
>>>>>>> lui serait
>>>>>>>
>>>> utilisé pour le render via une smartpart par exemple
>>>>
>>>> Voila :)
>>>>
>>>> Renaud COMTE [MVP]
>>>> ---------------------------------
>>>> http://blogs.developpeur.org/themit/
>>>> http://blog.spsclerics.com/
>>>>> Bonjour,
>>>>>
>>>>> Je developpe une webpart qui a pour objectif de parccourir les
>>>>> bibliothèques
>>>>> de documents SPS afin de créer une liste des documents sousmis à
>>>>> approbation,
>>>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>>>> les
>>>>> documents.
>>>>> Si je me connecte en tant qu'administrateur du site : aucun
>>>>> problème,
>>>>> par
>>>>> contre si je me connecte avec le login d'un utilisateur ayant
>>>>> droit
>>>>> à
>>>>> l'approbation, mais non administrateur du site, la propriétés
>>>>> "AllWebs" ne
>>>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>>>> la
>>>>> sécurité).
>>>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>>>> pas
>>>>> satisfaisante car elle ne donne que les sous-sites de premier
>>>>> niveau.
>>>>> La solution qui permettrait de résoudre ce problème semble donc
>>>>> être
>>>>> l'"impersonation de code" avec la propriété "AllWebs".
>>>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>>>> l'impersonation
>>>>> de
>>>>> code avec le compte administrateur et j'ai l'exception suivante :
>>>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>>>> base
>>>>> de données
>>>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>>>> l'assembly de la web part.
>>>>> Le code utilisé est le suivant :
>>>>>
>>>>> WindowsIdentity ImpersonateWebPart()
>>>>> {
>>>>> IntPtr tokenHandle = new IntPtr(0);
>>>>> WindowsIdentity windowsIdentity = null ;
>>>>> string strUserName = "Administrateur" ;
>>>>> string strDomain = "DOMAIN" ;
>>>>> string strPassword = "password";
>>>>> try
>>>>> {
>>>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>>>> tokenHandle = IntPtr.Zero ;
>>>>> // Tentative de connexion, Si login impossible = une
>>>>> exception
>>>>> est levée
>>>>> bool bResult = LogonUser(strUserName, strDomain,
>>>>> strPassword,
>>>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>>>> tokenHandle);
>>>>> if (!bResult)
>>>>> throw new
>>>>> Exception(Marshal.GetLastWin32Error().ToString());
>>>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>>>> if (tokenHandle != IntPtr.Zero)
>>>>> CloseHandle(tokenHandle);
>>>>> }
>>>>> catch(Exception ex)
>>>>> {
>>>>> throw new Exception(ex.ToString() + " USER : " +
>>>>> strUserName +
>>>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>>>> }
>>>>> return windowsIdentity ;
>>>>> }
>>>>> L'appel à cette méthode se fait de la manière suivante :
>>>>> // Impersonation
>>>>> WindowsImpersonationContext windowsContext > >>>>> ImpersonateWebPart().Impersonate();
>>>>> // Création de la liste des documents
>>>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>>>> // On remplit la liste des documents
>>>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>>>> // Fin d'impersonation
>>>>> if(windowsContext!=null)
>>>>> windowsContext.Undo() ;
>>>>> Or ceci ne fonctionne pas ....
>>>>> Quelqu'un a t-il une idée ??
>>>>> Merci.
Si les sotes sont indexés, il peut les toruver
un peu de SQL freetext et de modele objet et ca tourne
>>> jeter donc un oeil dans le SDK :)
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Ma problématique est de parcourir toutes les bibliothèques de tous les
> sites dans toutes les zones, le moteur de recherche est-il capable de
> réaliser ceci ? Si oui, comment ?
>
> Merci.
>
> "Renaud Comte" a écrit :
>
>> Je vais peut etre dire une grosse bétise mais ...
>>
>> Pourquoi ne pas utiliser le moteur de recherche pour identifier tous
>> ces documents, ce serait largement plus rapide non ?
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Merci pour cette réponse, je vais pouvoir creuser davantage.
>>>
>>> Pour infos :
>>> Cependant les gens qui devront approuver ont accès à tous les
>>> documents,
>>> le problème est que si nous utilisons la propriété "AllWebs", elle
>>> ne
>>> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
>>> pas
>>> forcement le cas.
>>> Nous avons bien pensé à un parcours récursif, mais la quantité de
>>> sites est telle que les performances sont déplorables, alors qu'avec
>>> "AllWebs" elles sont tout à fait acceptables.
>>> Merci encore.
>>>
>>> "Renaud Comte" a écrit :
>>>
>>>> Pour la partie impersonnation :
>>>> http://www.15seconds.com/issue/040511.htm
>>>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>>>
>>>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>>>> n'ont
>>>>>>>
>>>> pas acces don probléme
>>>>
>>>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>>>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>>>> fonction reccursive
>>>>
>>>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui
>>>>>>> lui serait
>>>>>>>
>>>> utilisé pour le render via une smartpart par exemple
>>>>
>>>> Voila :)
>>>>
>>>> Renaud COMTE [MVP]
>>>> ---------------------------------
>>>> http://blogs.developpeur.org/themit/
>>>> http://blog.spsclerics.com/
>>>>> Bonjour,
>>>>>
>>>>> Je developpe une webpart qui a pour objectif de parccourir les
>>>>> bibliothèques
>>>>> de documents SPS afin de créer une liste des documents sousmis à
>>>>> approbation,
>>>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>>>> les
>>>>> documents.
>>>>> Si je me connecte en tant qu'administrateur du site : aucun
>>>>> problème,
>>>>> par
>>>>> contre si je me connecte avec le login d'un utilisateur ayant
>>>>> droit
>>>>> à
>>>>> l'approbation, mais non administrateur du site, la propriétés
>>>>> "AllWebs" ne
>>>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>>>> la
>>>>> sécurité).
>>>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>>>> pas
>>>>> satisfaisante car elle ne donne que les sous-sites de premier
>>>>> niveau.
>>>>> La solution qui permettrait de résoudre ce problème semble donc
>>>>> être
>>>>> l'"impersonation de code" avec la propriété "AllWebs".
>>>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>>>> l'impersonation
>>>>> de
>>>>> code avec le compte administrateur et j'ai l'exception suivante :
>>>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>>>> base
>>>>> de données
>>>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>>>> l'assembly de la web part.
>>>>> Le code utilisé est le suivant :
>>>>>
>>>>> WindowsIdentity ImpersonateWebPart()
>>>>> {
>>>>> IntPtr tokenHandle = new IntPtr(0);
>>>>> WindowsIdentity windowsIdentity = null ;
>>>>> string strUserName = "Administrateur" ;
>>>>> string strDomain = "DOMAIN" ;
>>>>> string strPassword = "password";
>>>>> try
>>>>> {
>>>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>>>> tokenHandle = IntPtr.Zero ;
>>>>> // Tentative de connexion, Si login impossible = une
>>>>> exception
>>>>> est levée
>>>>> bool bResult = LogonUser(strUserName, strDomain,
>>>>> strPassword,
>>>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>>>> tokenHandle);
>>>>> if (!bResult)
>>>>> throw new
>>>>> Exception(Marshal.GetLastWin32Error().ToString());
>>>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>>>> if (tokenHandle != IntPtr.Zero)
>>>>> CloseHandle(tokenHandle);
>>>>> }
>>>>> catch(Exception ex)
>>>>> {
>>>>> throw new Exception(ex.ToString() + " USER : " +
>>>>> strUserName +
>>>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>>>> }
>>>>> return windowsIdentity ;
>>>>> }
>>>>> L'appel à cette méthode se fait de la manière suivante :
>>>>> // Impersonation
>>>>> WindowsImpersonationContext windowsContext > >>>>> ImpersonateWebPart().Impersonate();
>>>>> // Création de la liste des documents
>>>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>>>> // On remplit la liste des documents
>>>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>>>> // Fin d'impersonation
>>>>> if(windowsContext!=null)
>>>>> windowsContext.Undo() ;
>>>>> Or ceci ne fonctionne pas ....
>>>>> Quelqu'un a t-il une idée ??
>>>>> Merci.
Si les sotes sont indexés, il peut les toruver
un peu de SQL freetext et de modele objet et ca tourne
>>> jeter donc un oeil dans le SDK :)
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Ma problématique est de parcourir toutes les bibliothèques de tous les
> sites dans toutes les zones, le moteur de recherche est-il capable de
> réaliser ceci ? Si oui, comment ?
>
> Merci.
>
> "Renaud Comte" a écrit :
>
>> Je vais peut etre dire une grosse bétise mais ...
>>
>> Pourquoi ne pas utiliser le moteur de recherche pour identifier tous
>> ces documents, ce serait largement plus rapide non ?
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Merci pour cette réponse, je vais pouvoir creuser davantage.
>>>
>>> Pour infos :
>>> Cependant les gens qui devront approuver ont accès à tous les
>>> documents,
>>> le problème est que si nous utilisons la propriété "AllWebs", elle
>>> ne
>>> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
>>> pas
>>> forcement le cas.
>>> Nous avons bien pensé à un parcours récursif, mais la quantité de
>>> sites est telle que les performances sont déplorables, alors qu'avec
>>> "AllWebs" elles sont tout à fait acceptables.
>>> Merci encore.
>>>
>>> "Renaud Comte" a écrit :
>>>
>>>> Pour la partie impersonnation :
>>>> http://www.15seconds.com/issue/040511.htm
>>>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>>>
>>>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>>>> n'ont
>>>>>>>
>>>> pas acces don probléme
>>>>
>>>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>>>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>>>> fonction reccursive
>>>>
>>>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui
>>>>>>> lui serait
>>>>>>>
>>>> utilisé pour le render via une smartpart par exemple
>>>>
>>>> Voila :)
>>>>
>>>> Renaud COMTE [MVP]
>>>> ---------------------------------
>>>> http://blogs.developpeur.org/themit/
>>>> http://blog.spsclerics.com/
>>>>> Bonjour,
>>>>>
>>>>> Je developpe une webpart qui a pour objectif de parccourir les
>>>>> bibliothèques
>>>>> de documents SPS afin de créer une liste des documents sousmis à
>>>>> approbation,
>>>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>>>> les
>>>>> documents.
>>>>> Si je me connecte en tant qu'administrateur du site : aucun
>>>>> problème,
>>>>> par
>>>>> contre si je me connecte avec le login d'un utilisateur ayant
>>>>> droit
>>>>> à
>>>>> l'approbation, mais non administrateur du site, la propriétés
>>>>> "AllWebs" ne
>>>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>>>> la
>>>>> sécurité).
>>>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>>>> pas
>>>>> satisfaisante car elle ne donne que les sous-sites de premier
>>>>> niveau.
>>>>> La solution qui permettrait de résoudre ce problème semble donc
>>>>> être
>>>>> l'"impersonation de code" avec la propriété "AllWebs".
>>>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>>>> l'impersonation
>>>>> de
>>>>> code avec le compte administrateur et j'ai l'exception suivante :
>>>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>>>> base
>>>>> de données
>>>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>>>> l'assembly de la web part.
>>>>> Le code utilisé est le suivant :
>>>>>
>>>>> WindowsIdentity ImpersonateWebPart()
>>>>> {
>>>>> IntPtr tokenHandle = new IntPtr(0);
>>>>> WindowsIdentity windowsIdentity = null ;
>>>>> string strUserName = "Administrateur" ;
>>>>> string strDomain = "DOMAIN" ;
>>>>> string strPassword = "password";
>>>>> try
>>>>> {
>>>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>>>> tokenHandle = IntPtr.Zero ;
>>>>> // Tentative de connexion, Si login impossible = une
>>>>> exception
>>>>> est levée
>>>>> bool bResult = LogonUser(strUserName, strDomain,
>>>>> strPassword,
>>>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>>>> tokenHandle);
>>>>> if (!bResult)
>>>>> throw new
>>>>> Exception(Marshal.GetLastWin32Error().ToString());
>>>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>>>> if (tokenHandle != IntPtr.Zero)
>>>>> CloseHandle(tokenHandle);
>>>>> }
>>>>> catch(Exception ex)
>>>>> {
>>>>> throw new Exception(ex.ToString() + " USER : " +
>>>>> strUserName +
>>>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>>>> }
>>>>> return windowsIdentity ;
>>>>> }
>>>>> L'appel à cette méthode se fait de la manière suivante :
>>>>> // Impersonation
>>>>> WindowsImpersonationContext windowsContext > >>>>> ImpersonateWebPart().Impersonate();
>>>>> // Création de la liste des documents
>>>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>>>> // On remplit la liste des documents
>>>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>>>> // Fin d'impersonation
>>>>> if(windowsContext!=null)
>>>>> windowsContext.Undo() ;
>>>>> Or ceci ne fonctionne pas ....
>>>>> Quelqu'un a t-il une idée ??
>>>>> Merci.
Je vais peut etre dire une grosse bétise mais ...
Pourquoi ne pas utiliser le moteur de recherche pour identifier tous ces
documents, ce serait largement plus rapide non ?
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Merci pour cette réponse, je vais pouvoir creuser davantage.
>
> Pour infos :
> Cependant les gens qui devront approuver ont accès à tous les
> documents,
> le problème est que si nous utilisons la propriété "AllWebs", elle ne
> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
> pas
> forcement le cas.
> Nous avons bien pensé à un parcours récursif, mais la quantité de
> sites est telle que les performances sont déplorables, alors qu'avec
> "AllWebs" elles sont tout à fait acceptables.
>
> Merci encore.
>
> "Renaud Comte" a écrit :
>
>> Pour la partie impersonnation :
>> http://www.15seconds.com/issue/040511.htm
>>
>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>
>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>> n'ont
>>>>>
>> pas acces don probléme
>>
>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>> fonction reccursive
>>
>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui
>>>>> serait
>>>>>
>> utilisé pour le render via une smartpart par exemple
>>
>> Voila :)
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Bonjour,
>>>
>>> Je developpe une webpart qui a pour objectif de parccourir les
>>> bibliothèques
>>> de documents SPS afin de créer une liste des documents sousmis à
>>> approbation,
>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>> les
>>> documents.
>>> Si je me connecte en tant qu'administrateur du site : aucun
>>> problème,
>>> par
>>> contre si je me connecte avec le login d'un utilisateur ayant droit
>>> à
>>> l'approbation, mais non administrateur du site, la propriétés
>>> "AllWebs" ne
>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>> la
>>> sécurité).
>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>> pas
>>> satisfaisante car elle ne donne que les sous-sites de premier
>>> niveau.
>>> La solution qui permettrait de résoudre ce problème semble donc être
>>> l'"impersonation de code" avec la propriété "AllWebs".
>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>> l'impersonation
>>> de
>>> code avec le compte administrateur et j'ai l'exception suivante :
>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>> base
>>> de données
>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>> l'assembly de la web part.
>>>
>>> Le code utilisé est le suivant :
>>>
>>> WindowsIdentity ImpersonateWebPart()
>>> {
>>> IntPtr tokenHandle = new IntPtr(0);
>>> WindowsIdentity windowsIdentity = null ;
>>> string strUserName = "Administrateur" ;
>>> string strDomain = "DOMAIN" ;
>>> string strPassword = "password";
>>> try
>>> {
>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>> tokenHandle = IntPtr.Zero ;
>>> // Tentative de connexion, Si login impossible = une
>>> exception
>>> est levée
>>> bool bResult = LogonUser(strUserName, strDomain,
>>> strPassword,
>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>> tokenHandle);
>>> if (!bResult)
>>> throw new
>>> Exception(Marshal.GetLastWin32Error().ToString());
>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>> if (tokenHandle != IntPtr.Zero)
>>> CloseHandle(tokenHandle);
>>> }
>>> catch(Exception ex)
>>> {
>>> throw new Exception(ex.ToString() + " USER : " +
>>> strUserName +
>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>> }
>>> return windowsIdentity ;
>>> }
>>> L'appel à cette méthode se fait de la manière suivante :
>>> // Impersonation
>>> WindowsImpersonationContext windowsContext > >>> ImpersonateWebPart().Impersonate();
>>> // Création de la liste des documents
>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>> // On remplit la liste des documents
>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>> // Fin d'impersonation
>>> if(windowsContext!=null)
>>> windowsContext.Undo() ;
>>> Or ceci ne fonctionne pas ....
>>> Quelqu'un a t-il une idée ??
>>> Merci.
Je vais peut etre dire une grosse bétise mais ...
Pourquoi ne pas utiliser le moteur de recherche pour identifier tous ces
documents, ce serait largement plus rapide non ?
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Merci pour cette réponse, je vais pouvoir creuser davantage.
>
> Pour infos :
> Cependant les gens qui devront approuver ont accès à tous les
> documents,
> le problème est que si nous utilisons la propriété "AllWebs", elle ne
> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
> pas
> forcement le cas.
> Nous avons bien pensé à un parcours récursif, mais la quantité de
> sites est telle que les performances sont déplorables, alors qu'avec
> "AllWebs" elles sont tout à fait acceptables.
>
> Merci encore.
>
> "Renaud Comte" a écrit :
>
>> Pour la partie impersonnation :
>> http://www.15seconds.com/issue/040511.htm
>>
>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>
>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>> n'ont
>>>>>
>> pas acces don probléme
>>
>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>> fonction reccursive
>>
>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui
>>>>> serait
>>>>>
>> utilisé pour le render via une smartpart par exemple
>>
>> Voila :)
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Bonjour,
>>>
>>> Je developpe une webpart qui a pour objectif de parccourir les
>>> bibliothèques
>>> de documents SPS afin de créer une liste des documents sousmis à
>>> approbation,
>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>> les
>>> documents.
>>> Si je me connecte en tant qu'administrateur du site : aucun
>>> problème,
>>> par
>>> contre si je me connecte avec le login d'un utilisateur ayant droit
>>> à
>>> l'approbation, mais non administrateur du site, la propriétés
>>> "AllWebs" ne
>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>> la
>>> sécurité).
>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>> pas
>>> satisfaisante car elle ne donne que les sous-sites de premier
>>> niveau.
>>> La solution qui permettrait de résoudre ce problème semble donc être
>>> l'"impersonation de code" avec la propriété "AllWebs".
>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>> l'impersonation
>>> de
>>> code avec le compte administrateur et j'ai l'exception suivante :
>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>> base
>>> de données
>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>> l'assembly de la web part.
>>>
>>> Le code utilisé est le suivant :
>>>
>>> WindowsIdentity ImpersonateWebPart()
>>> {
>>> IntPtr tokenHandle = new IntPtr(0);
>>> WindowsIdentity windowsIdentity = null ;
>>> string strUserName = "Administrateur" ;
>>> string strDomain = "DOMAIN" ;
>>> string strPassword = "password";
>>> try
>>> {
>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>> tokenHandle = IntPtr.Zero ;
>>> // Tentative de connexion, Si login impossible = une
>>> exception
>>> est levée
>>> bool bResult = LogonUser(strUserName, strDomain,
>>> strPassword,
>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>> tokenHandle);
>>> if (!bResult)
>>> throw new
>>> Exception(Marshal.GetLastWin32Error().ToString());
>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>> if (tokenHandle != IntPtr.Zero)
>>> CloseHandle(tokenHandle);
>>> }
>>> catch(Exception ex)
>>> {
>>> throw new Exception(ex.ToString() + " USER : " +
>>> strUserName +
>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>> }
>>> return windowsIdentity ;
>>> }
>>> L'appel à cette méthode se fait de la manière suivante :
>>> // Impersonation
>>> WindowsImpersonationContext windowsContext > >>> ImpersonateWebPart().Impersonate();
>>> // Création de la liste des documents
>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>> // On remplit la liste des documents
>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>> // Fin d'impersonation
>>> if(windowsContext!=null)
>>> windowsContext.Undo() ;
>>> Or ceci ne fonctionne pas ....
>>> Quelqu'un a t-il une idée ??
>>> Merci.
Je vais peut etre dire une grosse bétise mais ...
Pourquoi ne pas utiliser le moteur de recherche pour identifier tous ces
documents, ce serait largement plus rapide non ?
Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
> Merci pour cette réponse, je vais pouvoir creuser davantage.
>
> Pour infos :
> Cependant les gens qui devront approuver ont accès à tous les
> documents,
> le problème est que si nous utilisons la propriété "AllWebs", elle ne
> fonctionne qui si l'utilisateur est administrateur, or cela ne sera
> pas
> forcement le cas.
> Nous avons bien pensé à un parcours récursif, mais la quantité de
> sites est telle que les performances sont déplorables, alors qu'avec
> "AllWebs" elles sont tout à fait acceptables.
>
> Merci encore.
>
> "Renaud Comte" a écrit :
>
>> Pour la partie impersonnation :
>> http://www.15seconds.com/issue/040511.htm
>>
>> Sinon de mon point de vue c'est inutile pour ce cas la ...
>>
>>>>> car vous allez presentez des documents à valider a des gens qui
>>>>> n'ont
>>>>>
>> pas acces don probléme
>>
>> Honnetement, j'utiliserais GetAllSubSitesForCurrentUser et
>> listforcurrentuseronly ainsi qu'un checkpermission le tout dans une
>> fonction reccursive
>>
>>>>> ensutie l'ensemble des doc serait stocké dans un datatable qui lui
>>>>> serait
>>>>>
>> utilisé pour le render via une smartpart par exemple
>>
>> Voila :)
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Bonjour,
>>>
>>> Je developpe une webpart qui a pour objectif de parccourir les
>>> bibliothèques
>>> de documents SPS afin de créer une liste des documents sousmis à
>>> approbation,
>>> non encore traités. Cette webpart permet d'approuver ou de rejeter
>>> les
>>> documents.
>>> Si je me connecte en tant qu'administrateur du site : aucun
>>> problème,
>>> par
>>> contre si je me connecte avec le login d'un utilisateur ayant droit
>>> à
>>> l'approbation, mais non administrateur du site, la propriétés
>>> "AllWebs" ne
>>> permet pas l'accès aux bibliothèques de document (Exception liée à
>>> la
>>> sécurité).
>>> L'utilisation de la méthode "GetAllSubSitesForCurrentUser()" n'est
>>> pas
>>> satisfaisante car elle ne donne que les sous-sites de premier
>>> niveau.
>>> La solution qui permettrait de résoudre ce problème semble donc être
>>> l'"impersonation de code" avec la propriété "AllWebs".
>>> Le problème est que cela ne fonctionne pas ! J'utilise
>>> l'impersonation
>>> de
>>> code avec le compte administrateur et j'ai l'exception suivante :
>>> Microsoft.SharePoint.SPException: Impossible de se connecter à la
>>> base
>>> de données
>>> En debuggant la webpart je m'aperçois que la méthode utilisée pour
>>> le login fonctionne. De plus j'ai accordé tous les droits à
>>> l'assembly de la web part.
>>>
>>> Le code utilisé est le suivant :
>>>
>>> WindowsIdentity ImpersonateWebPart()
>>> {
>>> IntPtr tokenHandle = new IntPtr(0);
>>> WindowsIdentity windowsIdentity = null ;
>>> string strUserName = "Administrateur" ;
>>> string strDomain = "DOMAIN" ;
>>> string strPassword = "password";
>>> try
>>> {
>>> const int LOGON32_PROVIDER_DEFAULT = 0;
>>> const int LOGON32_LOGON_INTERACTIVE = 2;
>>> tokenHandle = IntPtr.Zero ;
>>> // Tentative de connexion, Si login impossible = une
>>> exception
>>> est levée
>>> bool bResult = LogonUser(strUserName, strDomain,
>>> strPassword,
>>> LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref
>>> tokenHandle);
>>> if (!bResult)
>>> throw new
>>> Exception(Marshal.GetLastWin32Error().ToString());
>>> windowsIdentity = new WindowsIdentity(tokenHandle);
>>> if (tokenHandle != IntPtr.Zero)
>>> CloseHandle(tokenHandle);
>>> }
>>> catch(Exception ex)
>>> {
>>> throw new Exception(ex.ToString() + " USER : " +
>>> strUserName +
>>> "DOMAINE : " + strDomain + "PASSWORD : " + strPassword );
>>> }
>>> return windowsIdentity ;
>>> }
>>> L'appel à cette méthode se fait de la manière suivante :
>>> // Impersonation
>>> WindowsImpersonationContext windowsContext > >>> ImpersonateWebPart().Impersonate();
>>> // Création de la liste des documents
>>> GestSPS gestSPS = new CGestSPS(SiteUrl);
>>> // On remplit la liste des documents
>>> gestSPS.FillDocToWorkWith(m_lstDoc);
>>> // Fin d'impersonation
>>> if(windowsContext!=null)
>>> windowsContext.Undo() ;
>>> Or ceci ne fonctionne pas ....
>>> Quelqu'un a t-il une idée ??
>>> Merci.