checkin, with customer model
This commit is contained in:
13
.editorconfig
Normal file
13
.editorconfig
Normal 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
1
.eslintignore
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/client/
|
||||||
19
.gitignore
vendored
Normal file
19
.gitignore
vendored
Normal 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
3
.yo-rc.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"generator-loopback": {}
|
||||||
|
}
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# My Application
|
||||||
|
|
||||||
|
The project is generated by [LoopBack](http://loopback.io).
|
||||||
3
client/README.md
Normal file
3
client/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
## Client
|
||||||
|
|
||||||
|
This is the place for your application front-end files.
|
||||||
5
common/models/customer.js
Normal file
5
common/models/customer.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = function(Customer) {
|
||||||
|
|
||||||
|
};
|
||||||
45
common/models/customer.json
Normal file
45
common/models/customer.json
Normal 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
20
demodata.json
Normal 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
31
package.json
Normal 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"
|
||||||
|
}
|
||||||
6
server/boot/authentication.js
Normal file
6
server/boot/authentication.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = function enableAuthentication(server) {
|
||||||
|
// enable authentication
|
||||||
|
server.enableAuth();
|
||||||
|
};
|
||||||
8
server/boot/root.js
Normal file
8
server/boot/root.js
Normal 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);
|
||||||
|
};
|
||||||
5
server/component-config.json
Normal file
5
server/component-config.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"loopback-component-explorer": {
|
||||||
|
"mountPath": "/explorer"
|
||||||
|
}
|
||||||
|
}
|
||||||
22
server/config.json
Normal file
22
server/config.json
Normal 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
7
server/datasources.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"db": {
|
||||||
|
"name": "db",
|
||||||
|
"connector": "memory",
|
||||||
|
"file": "demodata.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
10
server/middleware.development.json
Normal file
10
server/middleware.development.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"final:after": {
|
||||||
|
"strong-error-handler": {
|
||||||
|
"params": {
|
||||||
|
"debug": true,
|
||||||
|
"log": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
server/middleware.json
Normal file
50
server/middleware.json
Normal 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
39
server/model-config.json
Normal 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
29
server/server.js
Normal 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();
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user