Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— |
engine:procedures:mi_changedstoreuserpassword_ad [11.01.2016 ] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== mi_ChangedStoreUserPassword_Ad ===== | ||
+ | |||
+ | Ändert das Paßwort des zu einem "dStore"-Benutzer (s. [[dstoreproc>mi_GetUserInfo_Ad]]) zugehörigen Datenbank-Logins.\\ | ||
+ | |||
+ | |||
+ | |||
+ | Anmerkungen zum Parameter "EncryptedPassword" :\\ | ||
+ | |||
+ | 1.) Bei Angabe von "NULL" ermittelt die Prozedur den SHA1-Wert von "NewPassword" (um die "Password"-Eigenschaft der zu "UserName" zugehörigen Person des Typs "dStoreUser" - s. "Settings"-Eintrag zum Schlüssel "PersonTypeID_dStoreUser" - zu speichern). I.d.R. wird dabei ein (geheimer) "salt" verwendet, s. "PersonTypeSettings"-Eintrag zum Schlüssel "DefaultEncryptionAlgorithm".\\ | ||
+ | |||
+ | 2.) Wenn "EncryptedPassword" angegeben ist, sollte dies natürlich "NewPassword" entsprechen - nur eben verschlüsselt !\\ Genauer muß "EncryptedPassword" die Form...\\ {<Verschl.-Algorithmus (max. 10 Zeichen)>}<verschlüsseltes NewPassword, mind. 5 Zeichen, nur Zahlen/Buchst.>\\ ... haben (s.a. [[dstoreproc>pm_GetEncryptionAlgorithm_Pu]]).\\ Falls "EncryptedPassword" nicht diese Form hat oder andere Zeichen außer Buchstaben, Zahlen, "-", "{" und "}" enthält, gibt es einen Fehler !\\ | ||
+ | |||
+ | 3.) Die Aktion der Änderung der Passwort-Eigenschaft kann aufgrund von Beschränkungen im ASE leider nicht zusammen mit der eigentlichen Änderung (des Datenbank-Login-Kennworts) in einer Transaktion ausgeführt werden. Wir versuchen aber, alle möglichen Fehler VORHER festzustellen (die "-500"-Fehler z.B.), so daß diese Situation hoffentlich eher selten vorkommt.\\ | ||
+ | |||
+ | |||
+ | |||
+ | Anmerkungen zum Parameter "CreatedStoreUserIfNotExists" :\\ | ||
+ | |||
+ | 1.) Sollte es keine Person zum Typ "dStoreUser" für "UserName" geben, wird eine solche angelegt, falls für den optionalen Parameter "CreatedStoreUserIfNotExists" der Wert "1" angegeben wurde (Standardbelegung für diesen Parameter ist "0").\\ Hintergrund : Die Konstellation, daß keine zugehörige Person existiert, kann bei Installationen vor Version 6.5.0 vorliegen, weil erst ab dieser Version bei Anlage eines neuen Benutzers (durch [[dstoreproc>mi_CreatedStoreUser_Ad]]) auch immer eine korrespondierende Person erstellt wird.\\ | ||
+ | |||
+ | 2.) Im Falle der Neu-Anlage der Person (wenn also "CreatedStoreUserIfNotExists = 1" ist UND keine Person des Typs "dStoreUser" zu "UserName" gefunden wurde) wird [[dstoreproc>mi_CreatedStoreUser_Ad]] aufgerufen, um gleichzeitig sicherzustellen, daß auch ein entsprechender Datensatz in "UserInfo" (mit "UserName") existiert. Diese wiederum setzt voraus, daß das zugehörige ASE-Login des Benutzers, der diese Prozedur hier aufruft, die sogenante "sso_role" besitzt.\\ => Daher kann es zum Fehler "-518" kommen !\\ | ||
+ | |HTTP-Method|POST | | ||
+ | |HTTP-Auth|Optional | | ||
+ | |Tags|{{tag>[mi Changed Store User Password Ad]}}| | ||
+ | |Engine-Kategorie|basics | | ||
+ | |Engine-Typ|Daten-Änderung | | ||
+ | |Letzte Aktualisierung|7.0.7 (2015-01-29)| | ||
+ | |||
+ | ==== Parameter ==== | ||
+ | |||
+ | ^Name ((Pflichtparameter sind unterstrichen)) ^Standard-Wert ^Beschreibung ((siehe [[webservice:engine_parameterconventions|Parameter-Konventionen engine/<Prozedur-Name>]])) ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^ab Version ^ | ||
+ | |__UserName__| |Name des "dStore"-Benutzers, dessen Paßwort des zugehörigen DB-Logins (-> "DBLogin") auf "NewPassword" gesetzt werden soll\\ |varchar(50)|5.1.5| | ||
+ | |DBLogin|NULL |Zum Benutzer "UserName" zugehöriges Datenbank-Login (falls "NULL", wird davon ausgegangen, daß das Login identisch mit "UserName" ist), dessen Paßwort auf "NewPassword" gesetzt werden sol\\ |varchar(50)|5.1.5| | ||
+ | |__CallerPassword__| |Hier muß das AKTUELLE Paßwort des Benutzers, der diese Prozedur aufruft, übergeben werden (falls es der Benutzer "UserName" selbst ist, handelt es sich logischerweise um das ALTE Kennwort)\\ |varchar(30)|5.1.5| | ||
+ | |__NewPassword__| |Das neue Paßwort. Hinweis : Es muß mindestens 6 Zeichen (ohne Leertasten) enthalten, sonst gibt es einen Fehler !\\ |varchar(30)|5.1.5| | ||
+ | |EncryptedPassword|NULL |Die Eigenschaft "Password" der zu "UserName" zugehörige Person des Typs "dStoreUser" wird auf diesen Wert gesetzt (Format : {<Verschl.-Algor., max. 10 Zei.)>}<NewPassword, verschl.>). Bei "NULL" hinterlegen wir den SHA1-Wert von "NewPassword".\\ |varchar(100)|5.1.5| | ||
+ | |CreatedStoreUserIfNotExists|0 |Wird nur beachtet, wenn "EncryptedPassword" angegeben ist. Sofern in diesem Parameter "1" übergeben wird und die zu "UserName" zugehörige Person des Typs "dStoreUser" NICHT existiert, wird eine neue Person angelegt\\ |bit|6.0.3| | ||
+ | |IgnoreErrorNewPasswdSameAsOld|0 |Falls altes und neues Kennwort identisch sind, gibt es einen Fehler - sofern man hier nicht "1" übergibt\\ |bit|7.0.7| | ||
+ | ==== Rückgabe ==== | ||
+ | |||
+ | Die Prozedur hat keine Rückgaben. | ||
+ | ==== Output-Parameter ==== | ||
+ | |||
+ | Die Prozedur hat keine Output-Parameter.==== Mögliche Return-Codes ==== | ||
+ | |||
+ | ^Code ^Beschreibung ^Quelle ((direkt meint "von der Prozedur selber" und indirekt meint "von intern aufgerufenen Unterprozeduren")) ^ | ||
+ | |-697|Aktion kann nicht durchgeführt werden, da für ein Merkmal eine Zugriffsbeschränkung besteht|direkt und indirekt| | ||
+ | |-674|Die Personendaten können nicht bearbeitet werden, da der entsprechende Personen-Typ gesperrt ist|nur indirekt| | ||
+ | |-650|Es sind nicht alle Pflichtmerkmale vorhanden|nur indirekt| | ||
+ | |-642|Inkrementelle Änderung konnte aufgrund paralleler Änderungen nicht durchgeführt werden|nur indirekt| | ||
+ | |-641|Die "Unique"-Eigenschaft mindestens eines Merkmals ist verletzt - Prozedur wurde abgebrochen|nur indirekt| | ||
+ | |-640|Einige Personendaten sind ungültig|nur indirekt| | ||
+ | |-630|Personendaten konnten nicht angelegt werden|nur indirekt| | ||
+ | |-621|Fehlender oder falscher Eintrag in PersonTypeSettings|nur indirekt| | ||
+ | |-610|Fehlende oder falsche Daten in PersonMetaInformation|nur indirekt| | ||
+ | |-602|Zur defaultUniqueID ("VisitorID = -2") können keinerlei Daten gespeichert oder verändert werden|nur indirekt| | ||
+ | |-572|Die Prozedur darf nur innerhalb einer Transaktion ausgeführt werden|nur indirekt| | ||
+ | |-569|Der Benutzer hat kein Ausführungsrecht für die Prozedur|nur indirekt| | ||
+ | |-567|Die Prozedur darf z. Zt. nicht ausgeführt werden|nur indirekt| | ||
+ | |-566|Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden|nur indirekt| | ||
+ | |-550|Fehlender oder falscher Eintrag in Settings|direkt und indirekt| | ||
+ | |-540|Falsches Format|nur indirekt| | ||
+ | |-535|Das Datum liegt nicht in der Vergangenheit|nur indirekt| | ||
+ | |-530|Der Wert ist nicht konvertierbar|nur indirekt| | ||
+ | |-518|Es ist eine bestimte ASE-Rolle erforderlich, die der Benutzer aber nicht besitzt|direkt und indirekt| | ||
+ | |-517|Nicht-Super-Admins dürfen Benutzer-Gruppen-Zuordnungen nur für Gruppen verwalten denen sie angehören|nur indirekt| | ||
+ | |-514|Anlegen des Benutzers fehlgeschlagen, da der Aufruf einer ASE-Prozedur fehlschlug (s. standard out)|direkt und indirekt| | ||
+ | |-513|Ein Benutzer kann maximal 256 Gruppen zugeordnet werden|nur indirekt| | ||
+ | |-510|Der Benutzer ist nicht registriert|nur indirekt| | ||
+ | |-504|Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen|direkt und indirekt| | ||
+ | |-502|Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)|nur indirekt| | ||
+ | |-500|Falsche Parameter|direkt und indirekt| | ||
+ | ==== XML-Schema ==== | ||
+ | |||
+ | Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema [[http://resources.dstore.de/xsd/webservice_SmartGate/Response/EngineProcedure_v1_0.xsd|Response/EngineProcedure_v1_0.xsd]] validiert. | ||
+ | ==== Historie ==== | ||
+ | |||
+ | |7.0.7 |2015-01-29|1. Neuer Parameter "IgnoreErrorNewPasswdSameAsOld"\\ 2. Fehler behoben ("CallerPassword" und "NewPassword" wurden ggf. im Klartext protokolliert)\\ 3. Interne Änderung (bzgl. Variable "ReferenceKey")\\ | | ||
+ | |6.5.4 |2013-04-29|1. Fehler bzgl. Prüfung von "EncryptedPassword" behoben (im "Verschlüsselungs-Algorithmus" muß auch "+" erlaubt sein)\\ 2. Implementierung des neuen Merkmal-Zugriffsbeschränkungen-Features\\ | | ||
+ | |6.5.1 |2012-11-02|Ab jetzt wird bei Angabe von "NULL" für "EncryptedPassword" der SHA1-Wert [evtl. mit "salt"] von "NewPassword" gebildet und zur entsprechenden Person [des Typs "dStoreUser"] hinterlegt\\ | | ||
+ | |6.0.3 |2011-09-07|Neuer Parameter "CreatedStoreUserIfNotExists" und bei Belegung mit "1", Aufruf von [[dstoreproc>mi_CreatedStoreUser_Ad]]\\ | | ||
+ | |5.5.0 |2008-01-07|Fehler : Im Fall "EncryptedPassword" wurde nach den Merkmal-Bezeichnungen "UserName" und "Password" case-sensitive gesucht\\ | | ||
+ | |5.1.10 |2007-03-12|1. Da die Merkmal-IDs für "UserName" bzw. "Password" bei einigen Installationen schon vergeben waren, sind diese IDs ab jetzt nicht mehr "hart codiert".\\ 2. "print"-Ausgabe im Fehler-Fall "-500" und "-550"\\ | | ||
+ | |5.1.5 |2006-08-29|Erstmalig in dieser Version erstellt\\ | | ||
+ | |||
+ | ==== Code-Snippets ==== | ||
+ | |||
+ | == Engine Playground == | ||
+ | Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist: | ||
+ | * [[http://playground.dstore.de/index.php?proc=mi_ChangedStoreUserPassword_Ad|mi_ChangedStoreUserPassword_Ad im Engine Playground öffnen]] | ||
+ | == cURL == | ||
+ | Unformatierte Ausgabe: | ||
+ | <code bash> | ||
+ | curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/mi_ChangedStoreUserPassword_Ad?UserName=<value>&CallerPassword=<value>&NewPassword=<value>'</code>Mit xmllint ((I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org)) formatierte Ausgabe: | ||
+ | <code bash> | ||
+ | curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/mi_ChangedStoreUserPassword_Ad?UserName=<value>&CallerPassword=<value>&NewPassword=<value>' | xmllint --format -</code>== dStore_php == | ||
+ | <code php> | ||
+ | use dStore_php\WebService; | ||
+ | |||
+ | $service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80); | ||
+ | |||
+ | $request = new WebService\Requests\Engine\Procedure\Request( | ||
+ | new WebService\Requests\AccessData('default'), | ||
+ | 'mi_ChangedStoreUserPassword_Ad', | ||
+ | array( | ||
+ | 'UserName' => '<value>', | ||
+ | 'CallerPassword' => '<value>', | ||
+ | 'NewPassword' => '<value>', | ||
+ | // 'DBLogin' => NULL, | ||
+ | // 'EncryptedPassword' => NULL, | ||
+ | // 'CreatedStoreUserIfNotExists' => 0, | ||
+ | // 'IgnoreErrorNewPasswdSameAsOld' => 0 | ||
+ | ) | ||
+ | ); | ||
+ | |||
+ | $service->execute($request); | ||
+ | |||
+ | $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); | ||
+ | $ResultSet = $xml_result->getRowsAsArray(); | ||
+ | |||
+ | </code> | ||
+ | == engine/execute == | ||
+ | XML zur Ausführung mit der Methode [[:webservice:engine:execute|engine/execute]], z.B. per | ||
+ | curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>' | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <ListOfBatches> | ||
+ | <Batch No="0"> | ||
+ | <Procedure Name="mi_ChangedStoreUserPassword_Ad"> | ||
+ | <Parameters> | ||
+ | <Parameter Name="UserName"><!-- varchar value --></Parameter> | ||
+ | <Parameter Name="CallerPassword"><!-- varchar value --></Parameter> | ||
+ | <Parameter Name="NewPassword"><!-- varchar value --></Parameter> | ||
+ | <!-- <Parameter Name="DBLogin">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="EncryptedPassword">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="CreatedStoreUserIfNotExists">0</Parameter> --> | ||
+ | <!-- <Parameter Name="IgnoreErrorNewPasswdSameAsOld">0</Parameter> --> | ||
+ | </Parameters> | ||
+ | </Procedure> | ||
+ | </Batch> | ||
+ | </ListOfBatches></code> | ||