checkin, with customer model

This commit is contained in:
2017-01-21 14:32:40 -07:00
commit 07202a8c60
21 changed files with 2667 additions and 0 deletions

13
.editorconfig Normal file
View File

@@ -0,0 +1,13 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

1
.eslintignore Normal file
View File

@@ -0,0 +1 @@
/client/

3
.eslintrc Normal file
View File

@@ -0,0 +1,3 @@
{
"extends": "loopback"
}

19
.gitignore vendored Normal file
View File

@@ -0,0 +1,19 @@
*.csv
*.dat
*.iml
*.log
*.out
*.pid
*.seed
*.sublime-*
*.swo
*.swp
*.tgz
*.xml
.DS_Store
.idea
.project
.strong-pm
coverage
node_modules
npm-debug.log

3
.yo-rc.json Normal file
View File

@@ -0,0 +1,3 @@
{
"generator-loopback": {}
}

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# My Application
The project is generated by [LoopBack](http://loopback.io).

3
client/README.md Normal file
View File

@@ -0,0 +1,3 @@
## Client
This is the place for your application front-end files.

View File

@@ -0,0 +1,5 @@
'use strict';
module.exports = function(Customer) {
};

View File

@@ -0,0 +1,45 @@
{
"name": "Customer",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"id": {
"type": "String",
"required": false,
"length": 64,
"precision": null,
"scale": null
},
"firstname": {
"type": "string",
"required": true
},
"lastname": {
"type": "string",
"required": true
},
"email": {
"type": "string",
"required": true
},
"address": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zipcode": {
"type": "number"
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}

20
demodata.json Normal file
View File

@@ -0,0 +1,20 @@
{
"ids": {
"User": 1,
"AccessToken": 1,
"ACL": 1,
"RoleMapping": 1,
"Role": 1,
"Customer": 2
},
"models": {
"User": {},
"AccessToken": {},
"ACL": {},
"RoleMapping": {},
"Role": {},
"Customer": {
"1": "{\"firstname\":\"Demo\",\"lastname\":\"User\",\"email\":\"demo@user.com\",\"id\":1}"
}
}
}

31
package.json Normal file
View File

@@ -0,0 +1,31 @@
{
"name": "02-customer-portal",
"version": "1.0.0",
"main": "server/server.js",
"scripts": {
"lint": "eslint .",
"start": "node .",
"posttest": "npm run lint && nsp check"
},
"dependencies": {
"compression": "^1.0.3",
"cors": "^2.5.2",
"helmet": "^1.3.0",
"loopback": "^3.0.0",
"loopback-boot": "^2.6.5",
"loopback-component-explorer": "^4.0.0",
"serve-favicon": "^2.0.1",
"strong-error-handler": "^1.0.1"
},
"devDependencies": {
"eslint": "^2.13.1",
"eslint-config-loopback": "^4.0.0",
"nsp": "^2.1.0"
},
"repository": {
"type": "",
"url": ""
},
"license": "UNLICENSED",
"description": "02-customer-portal"
}

View File

@@ -0,0 +1,6 @@
'use strict';
module.exports = function enableAuthentication(server) {
// enable authentication
server.enableAuth();
};

8
server/boot/root.js Normal file
View File

@@ -0,0 +1,8 @@
'use strict';
module.exports = function(server) {
// Install a `/` route that returns server status
var router = server.loopback.Router();
router.get('/', server.loopback.status());
server.use(router);
};

View File

@@ -0,0 +1,5 @@
{
"loopback-component-explorer": {
"mountPath": "/explorer"
}
}

22
server/config.json Normal file
View File

@@ -0,0 +1,22 @@
{
"restApiRoot": "/api",
"host": "0.0.0.0",
"port": 3000,
"remoting": {
"context": false,
"rest": {
"handleErrors": false,
"normalizeHttpPath": false,
"xml": false
},
"json": {
"strict": false,
"limit": "100kb"
},
"urlencoded": {
"extended": true,
"limit": "100kb"
},
"cors": false
}
}

7
server/datasources.json Normal file
View File

@@ -0,0 +1,7 @@
{
"db": {
"name": "db",
"connector": "memory",
"file": "demodata.json"
}
}

View File

@@ -0,0 +1,10 @@
{
"final:after": {
"strong-error-handler": {
"params": {
"debug": true,
"log": true
}
}
}
}

50
server/middleware.json Normal file
View File

@@ -0,0 +1,50 @@
{
"initial:before": {
"loopback#favicon": {}
},
"initial": {
"compression": {},
"cors": {
"params": {
"origin": true,
"credentials": true,
"maxAge": 86400
}
},
"helmet#xssFilter": {},
"helmet#frameguard": {
"params": [
"deny"
]
},
"helmet#hsts": {
"params": {
"maxAge": 0,
"includeSubdomains": true
}
},
"helmet#hidePoweredBy": {},
"helmet#ieNoOpen": {},
"helmet#noSniff": {},
"helmet#noCache": {
"enabled": false
}
},
"session": {},
"auth": {},
"parse": {},
"routes": {
"loopback#rest": {
"paths": [
"${restApiRoot}"
]
}
},
"files": {},
"final": {
"loopback#urlNotFound": {}
},
"final:after": {
"strong-error-handler": {}
}
}

39
server/model-config.json Normal file
View File

@@ -0,0 +1,39 @@
{
"_meta": {
"sources": [
"loopback/common/models",
"loopback/server/models",
"../common/models",
"./models"
],
"mixins": [
"loopback/common/mixins",
"loopback/server/mixins",
"../common/mixins",
"./mixins"
]
},
"User": {
"dataSource": "db"
},
"AccessToken": {
"dataSource": "db",
"public": false
},
"ACL": {
"dataSource": "db",
"public": false
},
"RoleMapping": {
"dataSource": "db",
"public": false
},
"Role": {
"dataSource": "db",
"public": false
},
"Customer": {
"dataSource": "db",
"public": true
}
}

29
server/server.js Normal file
View File

@@ -0,0 +1,29 @@
'use strict';
var loopback = require('loopback');
var boot = require('loopback-boot');
var app = module.exports = loopback();
app.start = function() {
// start the web server
return app.listen(function() {
app.emit('started');
var baseUrl = app.get('url').replace(/\/$/, '');
console.log('Web server listening at: %s', baseUrl);
if (app.get('loopback-component-explorer')) {
var explorerPath = app.get('loopback-component-explorer').mountPath;
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
}
});
};
// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
if (err) throw err;
// start the server if `$ node server.js`
if (require.main === module)
app.start();
});

2345
yarn.lock Normal file

File diff suppressed because it is too large Load Diff