add overwrite param to #store
This commit is contained in:
parent
0afc5f2c0c
commit
77a01370cb
5 changed files with 141 additions and 33 deletions
|
|
@ -123,7 +123,7 @@ Identity.prototype.validate = function(authcode, cb) {
|
|||
*/
|
||||
Identity.open = function(email, password, opts, cb) {
|
||||
var iden = new Identity(email, password, opts);
|
||||
iden.read(function(err){
|
||||
iden.read(function(err) {
|
||||
return cb(err, iden);
|
||||
});
|
||||
};
|
||||
|
|
@ -143,8 +143,21 @@ Identity.isAvailable = function(email, opts, cb) {
|
|||
|
||||
|
||||
Identity.prototype.store = function(opts, cb) {
|
||||
console.log('[Identity.js.142] TODO .store'); //TODO
|
||||
return cb();
|
||||
var self = this;
|
||||
self.profile.store(function() {
|
||||
var l = self.wallets.length,
|
||||
i = 0;
|
||||
if (!l) return cb();
|
||||
|
||||
_.each(self.wallets, function(w) {
|
||||
w.store(function(err) {
|
||||
if (err) return cb(err);
|
||||
|
||||
if (++i == l)
|
||||
return cb();
|
||||
})
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -155,8 +168,8 @@ Identity.prototype.store = function(opts, cb) {
|
|||
*/
|
||||
Identity.prototype.obtainNetworkName = function(obj) {
|
||||
return obj.networkName ||
|
||||
obj.opts.networkName ||
|
||||
obj.publicKeyRing.networkName ||
|
||||
(obj.opts ? obj.opts.networkName : null) ||
|
||||
(obj.publicKeyRing ? obj.publicKeyRing.networkName :null) ||
|
||||
obj.privateKey.networkName;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -10,34 +10,57 @@ function Profile(info, password, storage) {
|
|||
preconditions.checkArgument(storage);
|
||||
preconditions.checkArgument(storage.getItem);
|
||||
|
||||
this.email = info.email;
|
||||
this.email = info.email;
|
||||
this.extra = info.extra;
|
||||
this.hash = bitcore.util.sha256ripe160(this.email + this.password).toString('hex');
|
||||
this.hash = Profile.hash(this.email, password);
|
||||
this.storage = storage;
|
||||
};
|
||||
|
||||
Profile.hash = function(email, password) {
|
||||
return bitcore.util.sha256ripe160(email + password).toString('hex');
|
||||
};
|
||||
|
||||
Profile.fromObj = function(obj, password, storage) {
|
||||
var o = _.clone(obj);
|
||||
return new Profile(obj, password, storage);
|
||||
};
|
||||
|
||||
|
||||
Profile.prototype.key = function() {
|
||||
return 'identity::' + this.hash + '_' + this.email;
|
||||
};
|
||||
|
||||
Profile.prototype.toObj = function() {
|
||||
var obj = _.clone(this);
|
||||
delete obj['hash'];
|
||||
return JSON.parse(JSON.stringify(obj));
|
||||
};
|
||||
|
||||
Profile.open = function(storage, cb) {
|
||||
var key = this.key();
|
||||
this.storage.getGlobal(key, function(err, val) {
|
||||
if (!val) return cb(new Error('PNOTFOUND: Profile not found'));
|
||||
return cb(Profile.fromObj(val, password, storage));
|
||||
});
|
||||
};
|
||||
|
||||
Profile.prototype.store = function(cb) {
|
||||
var val = this.toObj();
|
||||
var key = 'identity::' + this.hash + '_' + this.email;
|
||||
Profile.prototype.store = function(opts, cb) {
|
||||
var self = this;
|
||||
var val = self.toObj();
|
||||
var key = self.key();
|
||||
|
||||
this.storage.setFromObj(key, val, function(err) {
|
||||
log.debug('Identity stored');
|
||||
if (cb)
|
||||
cb(err);
|
||||
self.storage.get(key, function(val2) {
|
||||
if (val2 && !opts.overwrite) {
|
||||
if (cb)
|
||||
return cb(new Error('PEXISTS: Profile already exist'))
|
||||
} else {
|
||||
self.storage.set(key, val, function(err) {
|
||||
log.debug('Identity stored');
|
||||
if (cb)
|
||||
cb(err);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = Profile;
|
||||
|
||||
|
|
|
|||
|
|
@ -876,7 +876,7 @@ Wallet.prototype.store = function(cb) {
|
|||
|
||||
var val = this.toObj();
|
||||
var key = 'wallet::' + this.id + ((val.opts && val.opts.name) ? '_' + obj.opts.name : '');
|
||||
this.storage.setFromObj(key, val, function(err) {
|
||||
this.storage.set(key, val, function(err) {
|
||||
log.debug('Wallet stored');
|
||||
if (cb)
|
||||
cb(err);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue