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