@arcblock/did-auth-storage
v1.7.1
Published
Storage interface for did-auth
Downloads
1,678
Readme
@arcblock/did-auth-storage
Interface for define a storage class that can be used by [@arcblock/did-auth].
Table of Contents
Motivation & Spec
Since tokens are used everywhere make achieve better QR code experience, we should allow users to customize how to generate/store/update token records.
Basic APIs that a token storage should support:
async init()
, optional, should be called before creating any instance, open a database connection, creating a embed database on file systemasync create(token, status = created)
, create a new token record, persist in data storeasync exist?(token, did)
, check for token existenseasync read(token)
, read a token from database,async update(token, updates)
, update token recordasync delete(token)
, remove a token recordasync gc()
, optional, run garbage collection on the token storage
Plan to support:
- token-storage-mongo
- token-storage-psql
- token-storage-nedb
- token-storage-memory
Install
npm install @arcblock/did-auth-storage
// or
yarn add @arcblock/did-auth-storage
Usage
const StorageInterface = require('@arcblock/did-auth-storage');
const keystone = require('keystone');
module.exports = class KeystoneStorage extends StorageInterface {
constructor() {
this.model = keystone.list('LoginToken').model;
}
create(token, status = 'created') {
const LoginToken = this.model;
const item = new LoginToken({ token, status });
return item.save();
}
read(token) {
return this.model.findOne({ token });
}
update(token, updates) {
return this.model.findOneAndUpdate({ token }, updates);
}
delete(token) {
return this.model.remove({ token });
}
exist(token, did) {
return this.model.findOne({ token, did });
}
};
Contributors
| Name | Website | | -------------- | -------------------------- | | wangshijun | https://ocap.arcblock.io |