mirror of
https://github.com/amark/gun.git
synced 2025-06-24 15:02:33 +00:00
49 lines
2.0 KiB
JavaScript
49 lines
2.0 KiB
JavaScript
|
|
const authPersist = require('./persist')
|
|
// This internal func finalizes User authentication
|
|
const finalizeLogin = async (alias, key, gunRoot, opts) => {
|
|
const user = gunRoot._.user
|
|
// add our credentials in-memory only to our root gun instance
|
|
var tmp = user._.tag;
|
|
var opt = user._.opt;
|
|
user._ = gunRoot.get('~'+key.pub)._;
|
|
user._.opt = opt;
|
|
var tags = user._.tag;
|
|
/*Object.values && Object.values(tmp).forEach(function(tag){
|
|
// TODO: This is ugly & buggy code, it needs to be refactored & tested into a event "merge" utility.
|
|
var t = tags[tag.tag];
|
|
console.log("hm??", tag, t);
|
|
if(!t){
|
|
tags[tag.tag] = tag;
|
|
return;
|
|
}
|
|
if(tag.last){
|
|
tag.last.to = t.to;
|
|
t.last = tag.last = t.last || tag.last;
|
|
}
|
|
t.to = tag.to;
|
|
})*/
|
|
//user._.tag = tmp || user._.tag;
|
|
// so that way we can use the credentials to encrypt/decrypt data
|
|
// that is input/output through gun (see below)
|
|
const pub = key.pub
|
|
const priv = key.priv
|
|
const epub = key.epub
|
|
const epriv = key.epriv
|
|
user._.is = user.is = {alias: alias, pub: pub};
|
|
Object.assign(user._, { alias: alias, pub: pub, epub: epub, sea: { pub: pub, priv: priv, epub: epub, epriv: epriv } })
|
|
//console.log("authorized", user._);
|
|
// persist authentication
|
|
//await authPersist(user._, key.proof, opts) // temporarily disabled
|
|
// emit an auth event, useful for page redirects and stuff.
|
|
try {
|
|
gunRoot._.on('auth', user._) // TODO: Deprecate this, emit on user instead! Update docs when you do.
|
|
//user._.on('auth', user._) // Arrgh, this doesn't work without event "merge" code, but "merge" code causes stack overflow and crashes after logging in & trying to write data.
|
|
} catch (e) {
|
|
console.log('Your \'auth\' callback crashed with:', e)
|
|
}
|
|
// returns success with the user data credentials.
|
|
return user._
|
|
}
|
|
module.exports = finalizeLogin
|
|
|