Tags:
create new tag
, view all tags

API du serveur CDSLoginInternal

Les points d'entrées de ce projet sont essentiellement utilisés par CdsLoginApi.

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments obligatoires : username est soit le nom de l'utilisateur, soit son mail et password est son mot de passe. Le 3e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Le 2e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument usernames est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cette valeur est stockée dans le champ lastLoginIp de la table users.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur, c'est soit son username, soit son email. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. L'argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

Cette commande est différente de newEmail, qui permet à un utilisateur de demander le changement de son adresse mail.

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré, ce qui fait un trou de sécurité. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :

{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

newEmail

Cette commande lance une demande de changement de mail pour un utilisateur. Elle prend en arguments username pour identifier l'utilisateur concerné, newEmail qui est la nouvelle adresse mail demandée, et password qui doit être le mot de passe correct de l'utilisateur. Un mail d'information est envoyé à l'adresse email courante, et un mail de confirmation de changement est envoyé à la nouvelle adresse. L'adresse actuelle est celle qui reste valide tant que la confirmation n'a pas eu lieu. La demande est effacée dans la nuit qui suit les 24h de la demande. La confirmation se fait avec la commande confirmEmail. Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

Cette commande est différente de la commande updateMail, qui permet de changer une adresse mail unilatéralement, par un administrateur.

confirmEmail

Cette commande permet la confirmation d'un changement d'email. Elle prend comme seul argument key, qui est la clé qui a été envoyée dans le message de confirmation, qui a été envoyé lors de la commande newEmail. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

-- PascalWassong - 2017-01-10

Topic revision: r14 - 2017-02-22 - PascalWassong
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback