WebDav (UB Enterprise Edition) #

Add @ub-e/web-dav module to your app:

npm i --save @ub-e/web-dav

And use it in your model main file with appropriate provider:

const WebDav = require('@ub-e/web-dav')
const WebDavBlobStoreProvider = require('@ub-e/web-dav/providers/webDavBlobStoreProvider')
const WebDavFsProvider = require('@ub-e/web-dav/providers/webDavFileSystemProvider')
WebDav.registerEndpoint('folders')
  .addProvider(new WebDavBlobStoreProvider({
    name: 'doc',
    entities: ['tst_document']
  }))
  .addProvider(new WebDavFsProvider({
    name: 'fs',
    path: process.configPath
  }))

WebDavFsProvider expose a folder process.coonfigPath as WebDav root (do not do such on production!!)

To access files use URL:

  • on Windows \\localhost@8881\folders\fs in Explorer
  • on Linux dav://localhost:8881/folders/fs into Files -> Other locations

WebDavBlobStoreProvider expose all BLOB attributes for tst_document entity. Content can be opened directly by Word, Excel, Notepad etc. using URL \\localhost@8881\folders\doc\tst_document\fileStoreSimple\332468137394197\0.docx, where:

  • tst_document - entity code
  • fileStoreSimple - BLOB attribute code
  • 332468137394197 - instance ID
  • 0 - reserved for version. Current implementation support only 0
  • docx - file extension

Editable content #

  • WebDavBlobStoreProvider allow to save BLOB to server in case entity support locking (softLock mixin is added to entity)
  • WebDavFsProvider allow to save files back to server for ANY authorised user

Authentication #

Current implementation support ONLY Negotiate authentication, so Negotiate must be present in the security.authenticationMethods of the application config.

Implementing your provider #

Every provider should be inherited from CustomWebDavProvider and implement all abstract method of base class