2.0.2 • Published 7 years ago
the-resource-user
User resource for the-db
Installation
$ npm install the-resource-user --save
Usage
'use strict'
const theDb = require('the-db')
const {
TheUserResource
} = require('the-resource-user')
async function tryExample () {
// Create a db instance
let db = theDb({
dialect: 'memory'
})
db.load(class extends TheUserResource { /* ... */ }, 'User')
db.load(class extends TheUserResource.Sign { /* ... */ }, 'UserSign')
db.load(class extends TheUserResource.Profile { /* ... */ }, 'UserProfile')
db.load(class extends TheUserResource.Role { /* ... */ }, 'UserRole')
let {
User,
UserSign,
UserProfile,
UserRole
} = db.resources
let session = {}
// Signup an user
async function signup (username, password, options = {}) {
let { email = null, profile = {}, roles = [] } = options
let user = await User.create({ username, email })
user.sign = await UserSign.create({ user, password })
user.profile = await UserProfile.create({ user, profile })
user.roles = await UserRole.createBulk(roles.map((code) => ({ user, code })))
await user.save()
return user
}
// Start user session
async function signin (username, password, options = {}) {
let { agent } = options
let user = await User.only({ username })
let sign = user && await UserSign.only({ user })
let valid = sign && await sign.testPassword(password)
if (!valid) {
throw new Error('Signin failed!')
}
await user.sync()
session.signed = user
return user
}
// Finish session
async function signout (token) {
delete session.signed
}
// Call the functions
{
await signup('user01', 'xxxxxxxx', {
roles: [ 'OPERATOR', 'CONSUMER' ]
})
let { token } = signin('user01', 'xxxxxxxx')
/* ... */
await signout(token)
}
}
tryExample().catch((err) => console.error(err))
Policies
TheUserResource Policy
Property | Description | Type | Required | Unique |
---|
name | Name to identify the user | "cly:string" | true | true |
email | User email | "cly:string" | | true |
profile | Use profile | "cly:entity" | | |
sign | User signature | "cly:entity" | | |
roles | Use roles | "cly:entity" | | |
TheUserProfileResource Policy
Property | Description | Type | Required | Unique |
---|
user | | "cly:entity" | true | |
name | | "cly:string" | | |
image | | "cly:string" | | |
TheUserRoleResource Policy
Property | Description | Type | Required | Unique |
---|
user | Pointer to user entity | "cly:entity" | true | |
code | Role code | "cly:string" | true | |
TheUserSignResource Policy
Property | Description | Type | Required | Unique |
---|
user | Pointer to user entity | "cly:entity" | true | |
password | Password string | "cly:string" | | |
passwordHash | Sign code | "cly:string" | | |
salt | Salt of password | "cly:string" | | |
algorithm | Digest algorithm | "cly:string" | | |
TheUserVerifyResource Policy
Property | Description | Type | Required | Unique |
---|
user | Pointer to user entity | "cly:entity" | true | |
target | Verify target | "cly:string" | true | |
token | Verify token | "cly:string" | true | true |
expiredAt | Date expire | "cly:date" | | |
done | Done or not | "cly:boolean" | | |
API Guide
License
This software is released under the MIT License.
Links