2012-04-20 14 views
5

Qualcuno sa se è possibile per me cambiare una password in couchdb 1.2? Per creare un utente Ho una forma che ottiene le informazioni di un utente e quindi i messaggi al database _users come questo ('utenti' nella URL di seguito viene proxy):Cambia password in couchdb 1.2 tramite l'api?

// Create a user 
var userObj = { 
    _id: "org.couchdb.user:test", 
    type: "user", 
    name: "test", 
    roles: ["user"], 
    emailAddress: "[email protected]", 
    firstName: "Test", 
    lastName: "Test", 
    password: "password" 
}; 
$.ajax({ 
    url: "https://stackoverflow.com/users/org.couchdb.user:test", 
    type: "PUT", 
    dataType: "json", 
    contentType:"application/json", 
    data: JSON.stringify(userObj) 
}); 

CouchDB 1.2 genera l'hash della password e sale per me e memorizza l'utente. Funziona alla grande. Per aggiornare la password, ho provato a recuperare l'utente, eliminando i campi password_sha e salt, aggiungendo un campo password e quindi ripubblicando il documento. Speravo che Couch ricalcoli i campi password_sha e salt per me e aggiorni il documento, ma non lo fa. I campi password_sha e salt non sono aggiornati.

// Update a user 
$.get("https://stackoverflow.com/users/org.couchdb.user:test") 
.done(function(userDoc){ 
    delete userDoc.password_sha; 
    delete userDoc.salt 
    userDoc.password = "test"; 
    $.ajax({ 
    url: "https://stackoverflow.com/users/org.couchdb.user:test", 
    type: "PUT", 
    dataType: "json", 
    contentType:"application/json", 
    data: userDoc 
    }); 
}); 

Sospetto che il divano genererà solo i campi password_sha e sali quando viene creato il documento. In tal caso, dovrei semplicemente generare i miei campi password_sha e salt e postarli invece nel documento aggiornato? Mi sto perdendo qualcosa qui?

Grazie!

+1

Non importa. Stavo cercando di aggiornare una stringa JSON ... doh! È sufficiente analizzare userDoc, aggiungere una password e inviare nuovamente. – Troy

+1

Fantastico! Potresti rispondere alla tua stessa domanda con quel commento ("aggiungi un valore per la password e invia nuovamente") e segna la risposta corretta. Questo potrebbe essere molto utile ad altre persone che cercano questo in futuro. Grazie! – JasonSmith

+0

@Troy Si prega di inviare il tuo commento come una risposta alla tua stessa domanda in modo da poter accettare e farla fuori dalla lista delle domande senza risposta. Grazie. –

risposta

2

Non importa. Stavo cercando di aggiornare una stringa JSON ... doh! È sufficiente analizzare userDoc, aggiungere una password e quindi inviare di nuovo.