12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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
-
|