Page 1 of 1

API - GET /clients/name/{name} liefert nicht den Adminusernamen zurück  [GELÖST]

Posted: Tue 26. May 2020, 13:52
by space2place
Hi KeyHelp Team,
ich schreibe zur Zeit ein Migrationsscript um die Daten von i-MSCP zu KeyHelp zu migrieren.
Dabei greife ich auf die API von KeyHelp zurück um alles anzulegen bevor ich die Daten auf den Server hole.

Bei meinem Script (ist in Python) frage ich am Anfang verschiedene Dinge ab, die ich auch gegen die API prüfen lassen.
So auch den Usernamen der angelegt werden soll. Hier nutze ich folgende Abfrage

Code: Select all

def checkExistKeyhelpUsername(self, kUsername):
		if(len(kUsername) > 0):
			responseApi = requests.get(apiUrl+apiEndpointClients+'/name/'+kUsername, headers=headers, timeout=apiTimeout, verify=apiServerFqdnVerify)
			apiGetData = responseApi.json()
			if responseApi.status_code == 404:
				write_log('Debug KeyHelp informations:\nKeyHelp panel username: "'+kUsername+'"\n')
				print('KeyHelp username is ok.')
				self.keyhelpData['kusername'] = kUsername
				self.complete = False
				return True
			else:
				print("KeyHelp username allready exists: Code: %i - %s, Id: %s" % (responseApi.status_code, apiGetData['username'], apiGetData['id']))
				return False
		else:
			print('Your Keyhelp username is empty!')
			return False
Gebe ich den Usernamen des Admins ein erhalte ich trotzdem einen 404 von der API.
Auch der Versuch den User mit der ID 1 abzufragen, brachte mir auch einen 404

Code: Select all

responseApi = requests.get(apiUrl+apiEndpointClients+'/id/1', headers=headers, timeout=apiTimeout, verify=apiServerFqdnVerify)
Ist das so gewollt das der Administrator nicht per API abgefragt werden darf?

Gruß
Sascha

Re: API - GET /clients/name/{name} liefert nicht den Adminusernamen zurück

Posted: Tue 26. May 2020, 14:49
by Alexander
Hallo,

Es ist in dem Sinne korrekt, dass über den /clients/ Endpoint sich nur Benutzeraccounts (keine Admins) abfragen lassen, das ist Beabsichtigt.
Das man so natürlich nicht prüfen kann, ob ein Benutzernamen von einem Admin belegt ist, ist natürlich ungünstig. Zumal es aktuell keinen Endpoint zur Abfrage von Admin-Accounts gibt. Aber selbst wenn es ihn gäbe, wäre man noch nicht 100% sicher. Zum Beispiel könnte es auch bereits einen Systembenutzer mit dem gewünschten Namen geben.

Aktuell bleibt dir nur, nachdem du den Request zum Anlegen eines Benutzers abgesetzt hast, dessen Response auszuwerten, ob der Name ggf. schon belegt ist.

In der kommenden Version wird ohnehin das ein oder andere API Feature dazu kommen, da ergänze ich in diesem Zusammenhang dann noch eine entsprechende Abfragemöglichkeit zur Prüfung auf freie Benutzernamen.

Re: API - GET /clients/name/{name} liefert nicht den Adminusernamen zurück

Posted: Tue 26. May 2020, 15:09
by space2place
Das ist ok für mich. Danke Dir. Wollte nur sicher gehen das ich keinen Fehler in meiner Programierung habe.
Beim POST erhält man dann eine Fehlermeldung falls der Username schon vom Admin benutzt wird.