Merge branch 'dev' of https://git.verdnatura.es/salix into dev
* 'dev' of https://git.verdnatura.es/salix: new micro-service route: need reinstall all dependencies estructure for new module route bug fixed autocomplete and width dropdown
This commit is contained in:
commit
1301fefe68
|
@ -33,6 +33,10 @@ class Autocomplete extends Component {
|
||||||
this._preLoad = true;
|
this._preLoad = true;
|
||||||
this.getItems();
|
this.getItems();
|
||||||
}
|
}
|
||||||
|
if (value && !this.width) {
|
||||||
|
let rectangle = this.$element[0].getBoundingClientRect();
|
||||||
|
this.width = Math.round(rectangle.width) - 10;
|
||||||
|
}
|
||||||
this._showDropDown = value;
|
this._showDropDown = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,9 +275,6 @@ class Autocomplete extends Component {
|
||||||
this.showDropDown = this.mouseFocus;
|
this.showDropDown = this.mouseFocus;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
let rectangle = this.$element[0].getBoundingClientRect();
|
|
||||||
this.width = Math.round(rectangle.width) - 10;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$onDestroy() {
|
$onDestroy() {
|
||||||
|
@ -301,7 +302,6 @@ module.component('vnAutocomplete', {
|
||||||
itemAs: '@?',
|
itemAs: '@?',
|
||||||
field: '=',
|
field: '=',
|
||||||
label: '@',
|
label: '@',
|
||||||
itemTemplate: '@?',
|
|
||||||
multiple: '@?'
|
multiple: '@?'
|
||||||
},
|
},
|
||||||
transclude: {
|
transclude: {
|
||||||
|
|
|
@ -187,7 +187,6 @@ export default class Watcher extends Component {
|
||||||
if (response === 'ACCEPT') {
|
if (response === 'ACCEPT') {
|
||||||
Object.assign(this.data, this.orgData);
|
Object.assign(this.data, this.orgData);
|
||||||
this.$state.go(this.state);
|
this.$state.go(this.state);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.state = null;
|
this.state = null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"salix": [],
|
||||||
|
"auth": [],
|
||||||
|
"core": [],
|
||||||
|
"client": [],
|
||||||
|
"production": [],
|
||||||
|
"route": []
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
export * from './src/route';
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"module": "route",
|
||||||
|
"name": "Route",
|
||||||
|
|
||||||
|
"validations" : false,
|
||||||
|
"routes": [
|
||||||
|
{
|
||||||
|
"url": "/routes",
|
||||||
|
"state": "routes",
|
||||||
|
"component": "vn-route-index"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
<<mg-ajax path="/client/api/Clients/filter" options="mgIndex"></mg-ajax>
|
||||||
|
<div margin-medium>
|
||||||
|
<div style="max-width: 40em; margin: 0 auto;">
|
||||||
|
<vn-card>
|
||||||
|
<vn-horizontal pad-medium>
|
||||||
|
<vn-searchbar vn-auto
|
||||||
|
index="index"
|
||||||
|
on-search="$ctrl.search(index)"
|
||||||
|
advanced="true"
|
||||||
|
search="$ctrl.model.search"
|
||||||
|
popover="vn-client-search-panel">
|
||||||
|
</vn-searchbar>
|
||||||
|
</vn-horizontal>
|
||||||
|
</vn-card>
|
||||||
|
<vn-card margin-medium-top>
|
||||||
|
<vn-item-route ng-repeat="route in index.model.instances" title="View Route" client="route"></vn-item-route>
|
||||||
|
</vn-card>
|
||||||
|
<vn-paging index="index" total="index.model.count"></vn-paging>
|
||||||
|
</div>
|
||||||
|
<a ui-sref="create" fixed-bottom-right>
|
||||||
|
<vn-float-button icon="add"></vn-float-button>
|
||||||
|
</a>
|
||||||
|
</div>
|
|
@ -0,0 +1,18 @@
|
||||||
|
import ngModule from '../module';
|
||||||
|
import './style.css';
|
||||||
|
import './item-route';
|
||||||
|
|
||||||
|
export default class Controller {
|
||||||
|
constructor() {
|
||||||
|
this.model = {};
|
||||||
|
}
|
||||||
|
search(index) {
|
||||||
|
index.filter.search = this.model.search;
|
||||||
|
index.accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngModule.component('vnRouteIndex', {
|
||||||
|
template: require('./index.html'),
|
||||||
|
controller: Controller
|
||||||
|
});
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
import {ng} from 'vendor';
|
||||||
|
import 'core';
|
||||||
|
|
||||||
|
const ngModule = ng.module('route', []);
|
||||||
|
export default ngModule;
|
|
@ -0,0 +1,4 @@
|
||||||
|
export * from './module';
|
||||||
|
|
||||||
|
// import components
|
||||||
|
import './index/index';
|
|
@ -1,5 +1,5 @@
|
||||||
import './spliting';
|
import './spliting';
|
||||||
import deps from 'spliting/modules.json';
|
import deps from 'client/modules.json';
|
||||||
import ngModule from './module';
|
import ngModule from './module';
|
||||||
import {splitingRegister} from 'core';
|
import {splitingRegister} from 'core';
|
||||||
|
|
||||||
|
|
38
gulpfile.js
38
gulpfile.js
|
@ -17,7 +17,8 @@ var srcDir = './client';
|
||||||
var buildDir = './services/nginx/static';
|
var buildDir = './services/nginx/static';
|
||||||
var langs = ['es', 'en'];
|
var langs = ['es', 'en'];
|
||||||
|
|
||||||
var modules = require('./spliting/modules.json');
|
var modules = require('./client/modules.json');
|
||||||
|
|
||||||
var webpackConfig = require('./webpack.config.js');
|
var webpackConfig = require('./webpack.config.js');
|
||||||
|
|
||||||
// Main tasks
|
// Main tasks
|
||||||
|
@ -41,7 +42,8 @@ gulp.task('services', function() {
|
||||||
'auth',
|
'auth',
|
||||||
'salix',
|
'salix',
|
||||||
'client',
|
'client',
|
||||||
'production'
|
'production',
|
||||||
|
'route'
|
||||||
];
|
];
|
||||||
|
|
||||||
for (var service of lbServices)
|
for (var service of lbServices)
|
||||||
|
@ -69,36 +71,9 @@ gulp.task('install', () => {
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Spliting
|
|
||||||
|
|
||||||
var splitingFiles = './spliting/*';
|
|
||||||
|
|
||||||
gulp.task('spliting', function(cb) {
|
|
||||||
var importTpl = fs.readFileSync('./spliting/import.tpl.js', 'utf8');
|
|
||||||
var requireTpl = fs.readFileSync('./spliting/require.tpl.js', 'utf8');
|
|
||||||
|
|
||||||
for (var modName in modules) {
|
|
||||||
var deps = modules[modName];
|
|
||||||
var splitFile = `${srcDir}/${modName}/src/spliting.js`;
|
|
||||||
|
|
||||||
try {
|
|
||||||
fs.unlinkSync(splitFile);
|
|
||||||
} catch (e) {}
|
|
||||||
|
|
||||||
fs.appendFileSync(splitFile, importTpl);
|
|
||||||
|
|
||||||
var i = deps.length;
|
|
||||||
while (i--)
|
|
||||||
fs.appendFileSync(splitFile,
|
|
||||||
requireTpl.replace(/\$module/g, deps[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
cb();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Webpack
|
// Webpack
|
||||||
|
|
||||||
gulp.task('webpack', ['spliting'], function(cb) {
|
gulp.task('webpack', function(cb) {
|
||||||
var configCopy = Object.create(webpackConfig);
|
var configCopy = Object.create(webpackConfig);
|
||||||
var compiler = webpack(configCopy);
|
var compiler = webpack(configCopy);
|
||||||
|
|
||||||
|
@ -109,7 +84,7 @@ gulp.task('webpack', ['spliting'], function(cb) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('webpack-dev-server', ['spliting'], function() {
|
gulp.task('webpack-dev-server', function() {
|
||||||
var configCopy = Object.create(webpackConfig);
|
var configCopy = Object.create(webpackConfig);
|
||||||
|
|
||||||
for (var entry in configCopy.entry) {
|
for (var entry in configCopy.entry) {
|
||||||
|
@ -170,7 +145,6 @@ gulp.task('routes', function() {
|
||||||
// Watch
|
// Watch
|
||||||
|
|
||||||
gulp.task('watch', function() {
|
gulp.task('watch', function() {
|
||||||
gulp.watch(splitingFiles, ['spliting']);
|
|
||||||
gulp.watch(routeFiles, ['routes']);
|
gulp.watch(routeFiles, ['routes']);
|
||||||
gulp.watch(localeFiles, ['locales']);
|
gulp.watch(localeFiles, ['locales']);
|
||||||
});
|
});
|
||||||
|
|
|
@ -40,6 +40,9 @@ http {
|
||||||
location ~ ^/production(?:/(.*))?$ {
|
location ~ ^/production(?:/(.*))?$ {
|
||||||
proxy_pass http://127.0.0.1:3004/$1$is_args$args;
|
proxy_pass http://127.0.0.1:3004/$1$is_args$args;
|
||||||
}
|
}
|
||||||
|
location ~ ^/route(?:/(.*))?$ {
|
||||||
|
proxy_pass http://127.0.0.1:3005/$1$is_args$args;
|
||||||
|
}
|
||||||
# Este tiene que ser el último
|
# Este tiene que ser el último
|
||||||
location ~ ^(?:/(.*))?$ {
|
location ~ ^(?:/(.*))?$ {
|
||||||
proxy_pass http://127.0.0.1:3001/$1$is_args$args;
|
proxy_pass http://127.0.0.1:3001/$1$is_args$args;
|
||||||
|
|
|
@ -35,6 +35,9 @@ http {
|
||||||
location ~ ^/production(?:/(.*))?$ {
|
location ~ ^/production(?:/(.*))?$ {
|
||||||
proxy_pass http://production:3004/$1$is_args$args;
|
proxy_pass http://production:3004/$1$is_args$args;
|
||||||
}
|
}
|
||||||
|
location ~ ^/route(?:/(.*))?$ {
|
||||||
|
proxy_pass http://route:3005/$1$is_args$args;
|
||||||
|
}
|
||||||
# Este tiene que ser el último
|
# Este tiene que ser el último
|
||||||
location ~ ^(?:/(.*))?$ {
|
location ~ ^(?:/(.*))?$ {
|
||||||
proxy_pass http://salix:3001/$1$is_args$args;
|
proxy_pass http://salix:3001/$1$is_args$args;
|
||||||
|
|
|
@ -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
|
|
@ -0,0 +1 @@
|
||||||
|
/client/
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"extends": "loopback"
|
||||||
|
}
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"generator-loopback": {}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
FROM node:6.9.1
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
RUN npm -g install pm2
|
||||||
|
|
||||||
|
CMD ["pm2-docker", "."]
|
||||||
|
|
||||||
|
EXPOSE 3005
|
|
@ -0,0 +1,3 @@
|
||||||
|
# My Application
|
||||||
|
|
||||||
|
The project is generated by [LoopBack](http://loopback.io).
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"name": "Route",
|
||||||
|
"base": "MyModel",
|
||||||
|
"validateUpsert": true,
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "Number",
|
||||||
|
"id": true,
|
||||||
|
"description": "Identifier"
|
||||||
|
},
|
||||||
|
"date": {
|
||||||
|
"type": "date"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"acls": [
|
||||||
|
{
|
||||||
|
"accessType": "READ",
|
||||||
|
"principalType": "ROLE",
|
||||||
|
"principalId": "$everyone",
|
||||||
|
"permission": "ALLOW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"accessType": "WRITE",
|
||||||
|
"principalType": "ROLE",
|
||||||
|
"principalId": "$everyone",
|
||||||
|
"permission": "DENY"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"name": "vn-route",
|
||||||
|
"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",
|
||||||
|
"i18n": "^0.8.3",
|
||||||
|
"loopback": "^3.8.0",
|
||||||
|
"loopback-boot": "^2.24.0",
|
||||||
|
"loopback-component-explorer": "^4.2.0",
|
||||||
|
"loopback-connector-mysql": "^3.0.0",
|
||||||
|
"loopback-connector-remote": "^3.1.1",
|
||||||
|
"loopback-context": "^3.1.0",
|
||||||
|
"serve-favicon": "^2.0.1",
|
||||||
|
"strong-error-handler": "^2.1.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"nsp": "^2.1.0"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.verdnatura.es/salix"
|
||||||
|
},
|
||||||
|
"license": "GPL-3.0",
|
||||||
|
"description": "vn-route"
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = function enableAuthentication(server) {
|
||||||
|
// enable authentication
|
||||||
|
server.enableAuth();
|
||||||
|
};
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
module.exports = function(server) {
|
||||||
|
require ('../../../service/boot/root.js')(server);
|
||||||
|
};
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"loopback-component-explorer": {
|
||||||
|
"mountPath": "/explorer"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"restApiRoot": "/api",
|
||||||
|
"host": "0.0.0.0",
|
||||||
|
"port": 3005,
|
||||||
|
"remoting": {
|
||||||
|
"context": false,
|
||||||
|
"rest": {
|
||||||
|
"normalizeHttpPath": false,
|
||||||
|
"xml": false
|
||||||
|
},
|
||||||
|
"json": {
|
||||||
|
"strict": false,
|
||||||
|
"limit": "100kb"
|
||||||
|
},
|
||||||
|
"urlencoded": {
|
||||||
|
"extended": true,
|
||||||
|
"limit": "100kb"
|
||||||
|
},
|
||||||
|
"cors": false,
|
||||||
|
"handleErrors": false
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"db": {
|
||||||
|
"name": "db",
|
||||||
|
"connector": "memory",
|
||||||
|
"file": "db.json"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"name": "mysql",
|
||||||
|
"connector": "mysql",
|
||||||
|
"database": "salix",
|
||||||
|
"debug": false,
|
||||||
|
"host": "localhost",
|
||||||
|
"port": 3306,
|
||||||
|
"username": "root",
|
||||||
|
"password": "",
|
||||||
|
"connectTimeout": 20000,
|
||||||
|
"acquireTimeout": 20000
|
||||||
|
},
|
||||||
|
"vn": {
|
||||||
|
"name": "mysql",
|
||||||
|
"connector": "mysql",
|
||||||
|
"database": "salix",
|
||||||
|
"debug": false,
|
||||||
|
"host": "localhost",
|
||||||
|
"port": 3306,
|
||||||
|
"username": "root",
|
||||||
|
"password": "",
|
||||||
|
"connectTimeout": 20000,
|
||||||
|
"acquireTimeout": 20000
|
||||||
|
},
|
||||||
|
"client": {
|
||||||
|
"name": "client",
|
||||||
|
"connector": "remote",
|
||||||
|
"url": "http://localhost:3002/api"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"db":
|
||||||
|
{
|
||||||
|
"name": "db",
|
||||||
|
"connector": "memory",
|
||||||
|
"file": "db.json"
|
||||||
|
},
|
||||||
|
"auth":
|
||||||
|
{
|
||||||
|
"name": "mysql",
|
||||||
|
"connector": "mysql",
|
||||||
|
"database": "salix",
|
||||||
|
"debug": false,
|
||||||
|
"host": "localhost",
|
||||||
|
"port": 3306,
|
||||||
|
"username": "root",
|
||||||
|
"password": ""
|
||||||
|
},
|
||||||
|
"vn": {
|
||||||
|
"name": "mysql",
|
||||||
|
"connector": "mysql",
|
||||||
|
"database": "salix",
|
||||||
|
"debug": false,
|
||||||
|
"host": "localhost",
|
||||||
|
"port": 3306,
|
||||||
|
"username": "root",
|
||||||
|
"password": "",
|
||||||
|
"connectTimeout": 20000,
|
||||||
|
"acquireTimeout": 20000
|
||||||
|
},
|
||||||
|
"client": {
|
||||||
|
"name": "client",
|
||||||
|
"connector": "remote",
|
||||||
|
"url": "http://localhost:3002/api"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"final:after": {
|
||||||
|
"strong-error-handler": {
|
||||||
|
"params": {
|
||||||
|
"debug": true,
|
||||||
|
"log": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"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
|
||||||
|
},
|
||||||
|
"loopback-context#per-request": {
|
||||||
|
"params": {
|
||||||
|
"enableHttpContext": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"session": {},
|
||||||
|
"auth": {
|
||||||
|
"loopback#token": {}
|
||||||
|
},
|
||||||
|
"auth:after": {
|
||||||
|
"./middleware/currentUser": {}
|
||||||
|
},
|
||||||
|
"parse": {},
|
||||||
|
"routes": {
|
||||||
|
"loopback#rest": {
|
||||||
|
"paths": [
|
||||||
|
"${restApiRoot}"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"files": {},
|
||||||
|
"final": {
|
||||||
|
"loopback#urlNotFound": {}
|
||||||
|
},
|
||||||
|
"final:after": {
|
||||||
|
"strong-error-handler": {}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
module.exports = function(options) {
|
||||||
|
return function storeCurrentUser(req, res, next) {
|
||||||
|
if (!req.accessToken) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
let LoopBackContext = require('loopback-context');
|
||||||
|
let loopbackContext = LoopBackContext.getCurrentContext();
|
||||||
|
if (loopbackContext) {
|
||||||
|
loopbackContext.set('currentUser', req.accessToken.userId);
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"sources": [
|
||||||
|
"loopback/common/models",
|
||||||
|
"loopback/server/models",
|
||||||
|
"../../service/models",
|
||||||
|
"../common/models",
|
||||||
|
"./models"
|
||||||
|
],
|
||||||
|
"mixins": [
|
||||||
|
"loopback/common/mixins",
|
||||||
|
"loopback/server/mixins",
|
||||||
|
"../common/mixins",
|
||||||
|
"./mixins"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"dataSource": "auth"
|
||||||
|
},
|
||||||
|
"AccessToken": {
|
||||||
|
"dataSource": "auth",
|
||||||
|
"relations": {
|
||||||
|
"user": {
|
||||||
|
"type": "belongsTo",
|
||||||
|
"model": "user",
|
||||||
|
"foreignKey": "userId"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ACL": {
|
||||||
|
"dataSource": "auth",
|
||||||
|
"public": false
|
||||||
|
},
|
||||||
|
"RoleMapping": {
|
||||||
|
"dataSource": "auth",
|
||||||
|
"public": false
|
||||||
|
},
|
||||||
|
"Role": {
|
||||||
|
"dataSource": "auth",
|
||||||
|
"public": false
|
||||||
|
},
|
||||||
|
"Account": {
|
||||||
|
"dataSource": "auth"
|
||||||
|
},
|
||||||
|
"Route": {
|
||||||
|
"dataSource": "vn",
|
||||||
|
"public": true
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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();
|
||||||
|
});
|
|
@ -1 +0,0 @@
|
||||||
import * as core from 'core';
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"salix": ["client", "production"],
|
|
||||||
"auth": [],
|
|
||||||
"core": [],
|
|
||||||
"client": [],
|
|
||||||
"production": []
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
export const $module = () => {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
require.ensure([], () => {
|
|
||||||
require('$module');
|
|
||||||
resolve('$module');
|
|
||||||
}, '$module');
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
core.splitingRegister.register('$module', $module);
|
|
Loading…
Reference in New Issue