123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- const authsettings = require('./settings')
- const SEA = require('./sea');
- const Gun = SEA.Gun;
-
-
- const updateStorage = (proof, key, pin) => async (props) => {
- if (!Gun.obj.has(props, 'alias')) {
- return
- }
- if (authsettings.validity && proof && Gun.obj.has(props, 'iat')) {
- props.proof = proof
- delete props.remember
- const alias = props.alias
- const id = props.alias
- const remember = { alias: alias, pin: pin }
- try {
- const signed = await SEA.sign(JSON.stringify(remember), key)
- sessionStorage.setItem('user', alias)
- sessionStorage.setItem('remember', signed)
- const encrypted = await SEA.encrypt(props, pin)
- if (encrypted) {
- const auth = await SEA.sign(encrypted, key)
- await seaIndexedDb.wipe()
- await seaIndexedDb.put(id, { auth: auth })
- }
- return props
- } catch (err) {
- throw { err: 'Session persisting failed!' }
- }
- }
-
- await seaIndexedDb.wipe()
-
- sessionStorage.removeItem('user')
- sessionStorage.removeItem('remember')
- return props
- }
- module.exports = updateStorage
-
|