Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Commit

Permalink
resource issue resolved
Browse files Browse the repository at this point in the history
  • Loading branch information
chiragob committed Sep 12, 2018
1 parent 9938bbc commit 2b4e7cc
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 75 deletions.
114 changes: 76 additions & 38 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ let Utils = require('./Utils.js')
let domainKey = 'localhost'
let protocol = 'https'
let socketPort = 4042
let userSocketPort = 4043
if (process.env['domainKey'] !== undefined && process.env['domainKey'] !== '') {
domainKey = process.env['domainKey']
}


const timeouts = {
'checkResourcePermission': 0,
'getUserPackage': 0,
'chechUserToken': 7200,
'getUserPackage': 86400,
'getRegisterRole': 86400,
'getRegisterResource': 86400,
'getUserSubscription': 0,
Expand All @@ -23,8 +25,10 @@ if (process.env['NODE_ENV'] !== 'production') {

let defaultConfig = {
'subscriptionURL': '/subscriptionlist',
'checkUserToken': protocol + '://api.' + domainKey + '/auth/api/validatetoken',
'userDetailURL': protocol + '://api.' + domainKey + '/auth/api/userdetails',
'registerModuleURL': protocol + '://api.' + domainKey + '/subscription/register-resource',
// 'registerModuleURL': 'http://localhost:3030/register-resource',
'registerRoleURL': protocol + '://api.' + domainKey + '/subscription/register-roles',
// 'registerRoleURL': 'http://localhost:3030/register-roles',
'userSubscriptionURL': protocol + '://api.' + domainKey + '/subscription/user-subscription',
Expand All @@ -34,37 +38,31 @@ let defaultConfig = {

var socket = require('socket.io-client')(`https://api.${domainKey}:${socketPort}`);

var userSocket = require('socket.io-client')(`https://api.${domainKey}:${userSocketPort}`);

let cacheRoleResource = {};
socket.on('connect', function(){});
socket.on('permissionChanged', function(data){
let cacheKey = `${data.app}_${data.taskType}_${data.roleId}_${data.resourceId}`;
delete cacheRoleResource[cacheKey];
});

let cacheUser = {};
userSocket.on('connect', function(){});
userSocket.on('updateduserdetails', function(data) {
let cacheKey = `${data._id}`;
delete cacheUser[cacheKey];
});

let subscriptionURL = defaultConfig['subscriptionURL']
let userDetailURL = defaultConfig['userDetailURL']
let checkUserToken = defaultConfig['checkUserToken']
let registerModuleURL = defaultConfig['registerModuleURL']
let registerRoleURL = defaultConfig['registerRoleURL']
let userSubscription = defaultConfig['userSubscriptionURL']
let userSiteURL = defaultConfig['userSiteURL']
let resourcePermissionURL = defaultConfig['resourcePermissionURL']

// if (process.env['subscriptionURL'] !== undefined && process.env['subscriptionURL'] !== '') {
// subscriptionURL = process.env['subscriptionURL']
// }
// if (process.env['userDetailURL'] !== undefined && process.env['userDetailURL'] !== '') {
// userDetailURL = process.env['userDetailURL']
// }
// if (process.env['registerModuleURL'] !== undefined && process.env['registerModuleURL'] !== '') {
// registerModuleURL = process.env['registerModuleURL']
// }
// if (process.env['registerRoleURL'] !== undefined && process.env['registerRoleURL'] !== '') {
// registerRoleURL = process.env['registerRoleURL']
// }
// if (process.env['userSubscription'] !== undefined && process.env['userSubscription'] !== '') {
// userSubscription = process.env['userSubscription']
// }

let userArr = []
// console.log(userArr)
let moduleResource = {
Expand Down Expand Up @@ -102,16 +100,45 @@ let isValidAuthToken = async (authToken) => {

let getUserPackage = async function (authorization) {
return new Promise(async (resolve, reject) => {
let KeyValue = userDetailURL + authorization
let KeyValue = checkUserToken + authorization
var options = {
uri: userDetailURL,
uri: checkUserToken,
method: 'post',
headers: {
'authorization': authorization
}
}
let userDetail = await Utils.CachedRP(options, {key: KeyValue, timeout: timeouts['getUserPackage']})
// console.log(userDetail)
resolve(JSON.parse(userDetail))
let userTokenDetail = await Utils.CachedRP(options, {key: KeyValue, timeout: timeouts['chechUserToken']})
if(!userTokenDetail) {
resolve(null)
return
}
userTokenDetail = JSON.parse(userTokenDetail)
let userDetails = getUserDetails(authorization, userTokenDetail.id)
resolve(userDetails)
})
}

let getUserDetails = async function (authorization, userId) {
return new Promise(async (resolve, reject) => {
let cacheKey = `${userId}`;
if(cacheUser[cacheKey]) {
resolve(cacheUser[cacheKey])
} else {
let KeyValue = userDetailURL + authorization
var options = {
uri: userDetailURL,
headers: {
'authorization': authorization
}
}
let userDetail = await Utils.CachedRP(options, {key: KeyValue, timeout: timeouts['userDetailURL']})
if(!userDetail) {
resolve(null)
}
cacheUser[cacheKey] = JSON.parse(userDetail)
resolve(cacheUser[cacheKey])
}
})
}

Expand All @@ -126,18 +153,15 @@ async function registeredAppModulesRole (isWebSite = false) {
console.log('Please register your modules in "registerAppModule"')
if (isWebSite) process.exit()
}
for (let resourceName in this.moduleResource.registerAppModule) {
let newActionValue = {}
let actionValue = this.moduleResource.registerAppModule[resourceName]
for (let actionKey in actionValue) {
if (typeof parseInt(actionKey) === 'number') {
newActionValue[actionValue[actionKey]] = actionValue[actionKey]
} else {
newActionValue[actionKey] = actionValue[actionKey]
}
}
let resourceData = await registerToMainService(this.moduleResource.moduleName, resourceName, newActionValue)
this.moduleResource.registerdIds[resourceName] = resourceData.id
await registerToMainService(this.moduleResource.moduleName, this.moduleResource.registerAppModule)
let resourceData = await getAllRegisterResource(this.moduleResource.moduleName)
if (resourceData.data.length === 0) {
console.log('Please register your modules in "registerAppModule"')
if (isWebSite) process.exit()
}
resourceData = resourceData.data
for (let resourceName in resourceData) {
this.moduleResource.registerdIds[resourceData[resourceName]['service']] = resourceData[resourceName]['id']
}

if (this.moduleResource.appRoles === undefined || this.moduleResource.appRoles.length === 0) {
Expand All @@ -154,16 +178,15 @@ async function registeredAppModulesRole (isWebSite = false) {
}
module.exports.registeredAppModulesRole = registeredAppModulesRole

async function registerToMainService (modulename, resource, actions, authorization) {
async function registerToMainService (modulename, resource) {
return new Promise(async (resolve, reject) => {
let KeyValue = registerModuleURL + modulename + resource + actions + authorization
let KeyValue = registerModuleURL + modulename + resource
var options = {
method: 'post',
uri: registerModuleURL,
body: {
'module': modulename,
'service': resource,
'actions': [actions]
'services': resource
},
json: true
// headers: {
Expand Down Expand Up @@ -210,6 +233,21 @@ async function getRegisterResource (modulename, resource, authorization) {
})
}

async function getAllRegisterResource (modulename, authorization) {
return new Promise(async (resolve, reject) => {
let KeyValue = registerModuleURL + '?module=' + modulename
var options = {
method: 'get',
uri: registerModuleURL + '?module=' + modulename
// headers: {
// 'authorization': authorization
// }
}
let resourceRole = await Utils.CachedRP(options, {key: KeyValue, timeout: 0})
resolve(JSON.parse(resourceRole))
})
}

async function getRegisterRole (modulename, roles, authorization) {
return new Promise(async (resolve, reject) => {
let KeyValue = registerRoleURL + '?module=' + modulename + '&role=' + roles.toLowerCase()
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "flowz-subscription",
"version": "0.2.8",
"version": "0.2.10",
"description": "to secure your service ",
"main": "index.js",
"scripts": {
Expand Down
73 changes: 37 additions & 36 deletions service/src/services/register-resource/register-resource.hooks.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

/*eslint no-console: ["error", { allow: ["warn","log"] }] */
let async = require('asyncawait/async');
let await = require('asyncawait/await');

Expand Down Expand Up @@ -41,53 +41,54 @@ module.exports = {
}
};

var modify = async(function(hook){
// console.log('***********hook',hook.data);
// console.log('***********hook',hook.params);
let obj = {};
let action_obj = {};
let id = '';

var modify = async(function(hook) {
let obj = [];
let oldObj = [];
// let id = [];
// let flag = true;
let module = hook.data.module.toLowerCase();
let service = hook.data.service.toLowerCase();
// console.log("++++++++++++++++++",module,service)
obj['module'] = module;
obj['service'] = service;
obj['actions'] = [];
for(let key in hook.data.actions[0]) {
let key1 = key.toLowerCase();
let action1 = hook.data.actions[0][key].toLowerCase();
// console.log('key1.action1',key1,action1);
action_obj[key1] = action1;
}
obj['actions'].push(action_obj);

// console.log('module======', module);
var tdata = await(hook.app.service('/register-resource').find({
'query':{'module': module}
query: {
$limit: 50,
module: module
}
}));

// console.log('tdata', tdata);
let resourceData = tdata.data;
for(let key in hook.data.services) {
key = key.toLowerCase();
let regExpmainPlan = new RegExp('^' + key, 'i');
let findObj = resourceData.find((o) => { return regExpmainPlan.test(o.service); });
let actionKey = hook.data.services[key].map((obj) => { return {[obj]:obj};});
if (!findObj) {
obj.push({'module':module,'service':key,'actions': actionKey });
} else {
oldObj.push({'module':module,'service':key,'actions': actionKey});
}
}

if(tdata.data.length != 0){
for(let [i, mObj] of tdata.data.entries()) { // eslint-disable-line no-unused-vars
if(mObj.module == module && mObj.service == service){
id = mObj.id;
hook.app.service('/register-resource').update(id,obj).then(result => {
console.log('result....',result); // eslint-disable-line no-console
if(tdata.data.length != 0) {
for(let i=0;i<tdata.data.length;i++) {
let regExpmainPlan = new RegExp('^' + tdata.data[i].service, 'i');
let findObj = oldObj.find((o) => { return regExpmainPlan.test(o.service); });
if (!findObj) {
hook.app.service('/register-resource').remove(tdata.data[i].id).then(result => {
console.log('result....',result); //eslint-disable-line no-console
});
} else {
hook.app.service('/register-resource').patch(tdata.data[i].id,findObj).then(result => {
console.log('result....',result); //eslint-disable-line no-console
});
hook.data = [];
hook.result = {'data':'updated','id':id};
}
else{
hook.data = obj;
}
}
}
else{
hook.data = obj;
}
console.log('=======',obj);
hook.data = obj;
});


var find2 = async(function(hook) {
if (hook.params.query.module === undefined) {
hook.params.query.module = {$in: ['uploader', 'webbuilder', 'crm', 'subscription','vshopdata', 'vmail', 'dbetl', 'mom', 'workflow']};
Expand Down

0 comments on commit 2b4e7cc

Please sign in to comment.