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

Locked
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

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

Post 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
User avatar
Alexander
Keyweb AG
Posts: 3810
Joined: Wed 20. Jan 2016, 02:23

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

Post 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.
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

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

Post 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.
Locked