npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ts3d.hc.caas.usermanagement

v0.6.72

Published

* Various improvements and bugfixes * Requires CaaS version 0.11.89 or later

Downloads

16

Readme

CaaS User Management (beta)

Version (0.6.68)

  • Various improvements and bugfixes
  • Requires CaaS version 0.11.89 or later

Version (0.6.50)

  • Version update for CaaS Server Depolyment Release
  • Various improvements and bugfixes
  • Requires CaaS version 0.9.5 or later

Version Update (0.3.8)

  • Direct S3 Upload Support (single file and zip upload only)
  • Requires CaaS Version 0.9.12 or later

Version Update (0.3.6)

  • Direct S3 Upload Support (single file upload only)

Version Update (0.3.0)

  • ZIP File Support in UI

Version Update (0.2.7)

  • Support for multi-file upload for assemblies
  • Upload UI redone

Introduction

This library implements user management on top of the CaaS library, which is a conversion and streaming backend for HOOPS Communicator. It provides a straightforward REST API for managing user accounts and their associated data, including Hubs and Projects with different access levels per user. By connecting this library to CaaS, you essentially get the framework for a CAD oriented SaaS application "out of the box", with a few lines of server-side code, ideal for prototyping and testing or as the starting point for your own development.

The library consists of three components, the server-side node.js library you can add to your project via npm as well as a client-side library for communicating with the server. It also comes with an easily extendable bootstrap based front-end that uses the client-side library.

Feedback

For questions/feedback please send an email to [email protected] or post in our forum. For a 60 day trial of the HOOPS Web Platform go to https://www.techsoft3d.com/products/hoops/web-platform.

Roadmap

  • Assembly Upload Support for direct S3 upload
  • Email Flow for Signup
  • Oauth2 Support
  • More modular UI Design

Documentation

Live Documentation for the client-side library can be found here: https://techsoft3d.github.io/hc-caas-usermanagement/

Disclaimer

This library is not an officially supported part of HOOPS Communicator and provided as-is.

Quick Start

To quickly test out CaaS User Management with the provided UI, follow the steps below.

  1. Clone the repository
  2. Install all dependencies with npm install
  3. Ensure CaaS is running on port 3001. If not, follow the instructions here
  4. Start the server with npm start
  5. Open a browser and navigate to http://localhost:3000
  6. Register at least one user account, create a hub, project. You can then convert and view files, etc.

Integrate with your own Node-Based Application

Server Side

To integrate CaaS User Management into your own server application as a node module, follow the steps below.

  1. Install the module with npm install ts3d.hc.caas.usermanagement
  2. Import the module with const caasUserManagementServer = require('ts3d.hc.caas.usermanagement');
  3. If you want to override any of the default settings, create a config directory and an empty file called local.json and specifiy any setting you want to override. Here are the default settings:
{
  "hc-caas-um": {
    "mongodbURI": "mongodb://127.0.0.1:27017/caas_demo_app",
    "conversionServiceURI": "http://localhost:3001",
    "publicURL": "http://localhost:3000",
    "useDirectFetch": false,
    "useStreaming": false,
    "demoMode": false,
    "assignDemoHub": false,
    "demoProject": ""
  }
}
  1. Start the CaasUserManagementServer with caasUserManagementServer.start(), providing your express app as a parameter as well as other configuration settings. See below for a minimal example:

const express = require('express');
const path = require('path');
const app = express();

app.use(express.static(path.join(__dirname, 'public')));

const caasUserManagementServer = require('ts3d.hc.caas.usermanagement');
caasUserManagementServer.start(app, null,{createSession:true, sessionSecret:"12345"});

app.listen(3000);

Client Side

  1. Add 'caasu.min.js' to your client-side project. The client-side library is included in the /dist folder of this repository.
    <script type="text/javascript" src="js/caasu.min.js"></script>
  2. Create a new CaasUserManagementClient object, specifying your server address.
    myUserManagmentClient = new CaasU.CaasUserManagementClient("http://localhost:3000");
  3. See the frontend code in the public folder of this project and the reference manual for further API usage. Alternatively, feel free to copy the content of the public folder from this repository to your own project and use the provided reference implementation as a starting point for your own application.

Frontend

The frontend is a straightforward bootstrap based implementation that uses the client-side library to communicate with the server. The emphasis is on simplicity, the goal during development was to make it easy to understand and extend, not to provide a fully production ready implementation.

Additional Details on the Server

By default the CaaS User Management server will add its own REST end-points to your express app, which are all prefixed with /caas_um_api. It will also start its own database session as well as create a user-session for cookie management. If you are already using mongoose as your database you can provide its connection as the second parameter to the start function. In addition, the User Management Server can create its own session store for cookie based session management but you can choose to provide your own as well. In this case the user management library will expect a session to be present on the request object for all its REST API calls. If you allow the User Management server to create its own session store, you should provide an "unguessable" sessionSecret string for the session store, which will be used to sign the session cookies.

Security and User Accounts

Account management is provided out of the box, with a simple registration and login process, utilizing a straightforward encrypted password scheme. However it is easy to use the library with your own account management. To allow for this, the server-side library has a function to retrieve all user account data, which gives you the ability to create and query accounts directly server-side via mongoose, thereyby bypassing the REST API. This approach allows you to handle all account creation while still leveraging the library for managing the connection to CaaS as well as Hubs and Project. See below for an example on how to retrieve all user account data and add the user to the session object:

app.put('/myLogin', async function (req, res, next) {
    //perform custom login procedure
    //...    

    let usersDB = caasUserManagementServer.getDatabaseObjects().users;
    let user = await usersDB.findOne({email:loggedinuser});
    req.session.caasUser = users2;
});

If you use this approach, it is advisable to do additional authentication on the REST API calls to the User Management server to prevent unauthorized access to the user data and login endpoints.

Running CaaS User Management on a separate server

If you want to use the User Management node module on a separate server from your main application, you can do so by simply proxying its REST API calls (which are all prefixed with /caas_um_api) from your web-server. In this scenario you might want to add an extra layer to the server to handle authentication and authorization if desired.

Running CaaS and CaaS User Management from the same project

You can easily run both CaaS and the CaaS User Management together. See below for a minimal example that initializes both libraries fromt the same Node application:

const express = require('express');
const path = require('path');
const app = express();

app.use(express.static(path.join(__dirname, 'public')));

const conversionserver = require('ts3d.hc.caas');
conversionserver.start();

const caasUserManagementServer = require('ts3d.hc.caas.usermanagement');
caasUserManagementServer.start(app, null,{createSession:true, sessionSecret:"12345"});

app.listen(3000);

In this case, you want to make sure to have a local.json file in the config folder of your application which configures the two libraries following the pattern in the example below:


{
    "hc-caas-um": {
      //local settings for CaaS User Management
    },
    "hc-caas": {      
      //local settings for CaaS
      }
}