2.0.2 • Published 7 years ago

the-resource-user v2.0.2

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

the-resource-user

Build Status npm Version JS Standard

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

PropertyDescriptionTypeRequiredUnique
nameName to identify the user"cly:string"truetrue
emailUser email"cly:string"true
profileUse profile"cly:entity"
signUser signature"cly:entity"
rolesUse roles"cly:entity"

TheUserProfileResource Policy

PropertyDescriptionTypeRequiredUnique
user"cly:entity"true
name"cly:string"
image"cly:string"

TheUserRoleResource Policy

PropertyDescriptionTypeRequiredUnique
userPointer to user entity"cly:entity"true
codeRole code"cly:string"true

TheUserSignResource Policy

PropertyDescriptionTypeRequiredUnique
userPointer to user entity"cly:entity"true
passwordPassword string"cly:string"
passwordHashSign code"cly:string"
saltSalt of password"cly:string"
algorithmDigest algorithm"cly:string"

TheUserVerifyResource Policy

PropertyDescriptionTypeRequiredUnique
userPointer to user entity"cly:entity"true
targetVerify target"cly:string"true
tokenVerify token"cly:string"truetrue
expiredAtDate expire"cly:date"
doneDone or not"cly:boolean"

API Guide

License

This software is released under the MIT License.

Links

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago