Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:mi_changedstoreuserpassword_ad

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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>​
  
engine/procedures/mi_changedstoreuserpassword_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)