PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Groupware via Webservice.
Groupware via Webservice.
Iniciado por damien.monoyer, 15,oct. 2019 13:09 - 7 respuestas
Publicado el 15,octubre 2019 - 13:09
Bonjour,

Ayant utilisé le groupware pour sécuriser l’accès à certaines applications.
Je souhaiterais à présent utiliser ce groupware pour contrôler le droit à l'utilisation d'un web service et générer un Token.

Cela semble "impossible" à première vue.

Les passwords sont bien entendus crypter et actuellement la procédure gpwvérifiemotdepasse(login, motsdepasse) renvoie toujours faux malgré la connexion préalable au GPW.

Ne sachant pas exactement ce qui sa passe via la fonction gpwcryptemotdepasse(login, motsdepasse) Il n'est pas possible de créer une procédure maison de vérification.

Quelqu'un aurait déjà trouvé une solution technique à ce problème?
Publicado el 17,octubre 2019 - 18:46
Personne n'aurait une idée?
Miembro registrado
1.330 mensajes
Publicado el 18,octubre 2019 - 09:06
Salut Damien,

Tu dois utiliser la fonction gpwVérifieUtilisateur()

nRes est un entier = gpwVérifieUtilisateur(Login, MotPasse)
// Si le login a échoué
SI nRes <> gpwOk ALORS
SELON nRes
CAS gpwErreur : Erreur("Erreur à l'initialisation du groupware.")
CAS gpwUtilisateurInconnu : Erreur("Utilisateur inconnu.")
CAS gpwMotPasseInvalide : Erreur("Mot de passe invalide.")
FIN
FinProgramme()
FIN


Bon Dev
Daryl

--
http://www.concept4u2.com
Publicado el 21,octubre 2019 - 16:49
Bonjour,

J'avais déjà effectué cette fonction.

Le GroupWare étant grisé lors de la création d'un projet Webservice. Je pense qu'Il n'est pas possible de se connecter via les procédure standard.

Le code suivant fonctionne via une Page webdev mais pas via un webservice.
J'ai pourtant accès aux tables GPU via la variable de connections.

Voici le code utiliser actuellement

CONNEC est une Connexion
CONNEC..Utilisateur = "*******"
CONNEC..MotDePasse = "*******"
CONNEC..Serveur = "*******"
CONNEC..Source = "*******"
CONNEC..Accès = 3
CONNEC..Compression = 0
CONNEC..InfosEtendues = "CRYPTAGE=RC5_16"
CONNEC..Cryptage = hCryptageRC5_16
CONNEC..Libellé = "RHTIME"
CONNEC..BaseDeDonnées = "*******"
CONNEC..OptionsCurseur = ""
CONNEC..Provider ="WinDevClientServeurHF"
CONNEC..ActiveDirectory = "0"
CONNEC..TailleCache = "-2"


IF HOuvreConnexion(CONNEC) = Faux THEN
Erreur(ErreurInfo())
FinProgramme()
SINON
HChangeConnexion("*",CONNEC)
gpwOuvreConnexion(CONNEC)
END



nRes est un entier= gpwVérifieUtilisateur("*******","*******") --> Groupeware n'est pas initialiser ou pas activé.

// Si le login a échoué
SI nRes<>gpwOk ALORS
SELON nRes
CAS gpwErreur : Erreur("Erreur à l'initialisation du groupware.")
CAS gpwUtilisateurInconnu : Erreur("Utilisateur inconnu.")
CAS gpwMotPasseInvalide : Erreur("Mot de passe invalide.")
FIN
FinProgramme()
FIN
Miembro registrado
1.330 mensajes
Publicado el 22,octubre 2019 - 10:23
Salut Damien,

Je vois que tu essayes d'activer la connexion avec la fonction HOuvreConnexion() mais pour le groupware tu devrais utiliser gpwOuvreConnexion()

Voir: https://doc.pcsoft.fr/fr-FR/?3041007

As-tu déjà essayé avec cette fonction ?

Cordialement
Daryl

--
http://www.concept4u2.com
Publicado el 22,octubre 2019 - 17:04
Salut Daryl,

Je viens de tester à l'instant

Cela me renvoie le message erreur suivant : Le groupware utilisateur n'est initialisé ou activé.
L'objectif étant de l'activer :-) le message d'erreur n'est pas d'un grand aide

Merci
Miembro registrado
139 mensajes
Publicado el 23,octubre 2019 - 09:30
Bonjour,
Le Groupware utilisateur n'est effectivement pas accessible depuis un webservice et c'est bien dommage (ou alors il faut faire du HDecritExterne et tout reprogrammer, bref sans intérêt)
J'avais fait remonter l'information à PCSoft, il y a quelques années déjà (mai 2017 après recherche)

Voici deux extraits de la réponse qui m'avait été apportée :

[...]
"Dans l'attente d'une évolution sur ce point, la seule alternative qu'il semble y avoir est de réaliser un exécutable avec WINDEV qui effectue cet vérification. Il faudra donc, dans le code du WebService, lancer cet exécutable. "
[...]
Votre idée est intéressante. Je l’ai transmise en tant que suggestion à notre équipe de développement pour qu’ils étudient son implémentation dans une prochaine version.
Miembro registrado
9 mensajes
Publicado el 23,octubre 2019 - 12:38
Dominique,

J'avoue ne pas voir l'intérêt exact du HDecritExterne dans ce cas précis.

Quelle solution as-tu utilisé?


Actuellement dans mon cas les APPs ont accès uniquement aux tables GPU et les autres données transitent via un web service.
Si je rajoute l’accès à la table token via les apps je résous le problème.