@acastellon/graphql

GraphQL (throw HTTPS) based in Express

Usage no npm install needed!

<script type="module">
  import acastellonGraphql from 'https://cdn.skypack.dev/@acastellon/graphql';
</script>

README

Graphql

Module to encapsulate the common configuration of a base WS based in GraphQL (HTTPS/Express)


Example Code to use this module:

const SERVER = require('./config.server.js');
const AUTH = require('./config.auth.js');

const graphql = require('@acastellon/graphql')(SERVER, AUTH);
graphql.run(); 

you can pass a function to be executed after the initialization of the server

rest.run(callback())

rest.run(() => { .. })

Example of configuration files required:

- config.server.js

module.exports = {
    /* where are stored the certificate files */
    CERTIFICATION_PATH : '/opt/<project>/Certificate'
    
    /* listener port */ 
    ,PORT : 7000
    
    /* file used by CORS to allows requst to the server */
    ,WHITELIST : './whitelist'

    /* location of the static files if is needed */
    ,STATIC_PATH : '/html'         //null = no static files where associated
    
    /* location of the Schema & resolvers required by graphql */
    ,SCHEMA_PATH : './graphql/schema/'
}

- config.auth.js

module.exports = {
    url: 'ldap://<address>:389'
    ,DOMAIN: '<domain>'
    ,baseDN: 'DC=<>,DC=<>>'
    ,username: '<username>'
    ,password: '<password>'

    ,hostNames: {
        'DEV' : '<dev-server.ip.dns.name>'
        ,'QA' : '<QA-server.ip.dns.name>'
        ,'PROD' : '<production-server.ip.dns.name>'
    }
    ,passToken: '<passphrase-optional>'  /* if doesn't exists the module generates ones automatically */
    ,EXPIRES: 86400                     /* expires in 24 hours */

    , AUTH_TYPE : 'NTLM'  /* NTLM, JWT or NONE */

    ,MOCKUP_USERS : ['acastellon']
    ,MOCKUP_ROLES : ['User','Admin']
    ,ROLES : {                          /* LDAP Roles to match */
        'User': '<LDAP> USER '          
        , 'Admin': '<LDAP> ADMINISTRATOR '
        , 'Viewer': '<LDAP> VIEWER '
    }
}
- api.js
- See the api.template.js as a reference to implement the logic.

Security files required:

- privateKey.pem
- publicCert.pem
- passphrase

Other files required:

- whitelist : used by CORS