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

Commit

Permalink
website wise role and resource save
Browse files Browse the repository at this point in the history
  • Loading branch information
Chirag Patel committed Feb 19, 2018
1 parent ac1d728 commit 24db6e8
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 28 deletions.
2 changes: 1 addition & 1 deletion Utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ let CachedRP = (options, {key, timeout}) => {
Cache[key] = {'result': result, 'timestamp': Date.now()}
resolve(result)
})
.catch((err) => resolve(null))
.catch((err) => { console.log(err); resolve(null) })
})
}

Expand Down
63 changes: 37 additions & 26 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const timeouts = {
if (process.env['NODE_ENV'] !== 'production') {
protocol = 'http'
}
protocol = 'http'
// protocol = 'http'

let defaultConfig = {
'subscriptionURL': '/subscriptionlist',
Expand Down Expand Up @@ -103,42 +103,42 @@ let getUserPackage = async function (authorization) {
})
}

async function registeredAppModulesRole () {
async function registeredAppModulesRole (isWebSite = false) {
// console.log('==================moduleName========', moduleResource.moduleName)
if (moduleResource.moduleName === '') {
if (this.moduleResource.moduleName === '') {
console.log('Please enter module name')
process.exit()
if (isWebSite) process.exit()
}
// console.log('==================moduleName========', moduleResource.registerAppModule)
if (Object.keys(moduleResource.registerAppModule).length === 0) {
if (Object.keys(this.moduleResource.registerAppModule).length === 0) {
console.log('Please register your modules in "registerAppModule"')
process.exit()
if (isWebSite) process.exit()
}
for (let resourceName in moduleResource.registerAppModule) {
for (let resourceName in this.moduleResource.registerAppModule) {
let newActionValue = {}
let actionValue = moduleResource.registerAppModule[resourceName]
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(moduleResource.moduleName, resourceName, newActionValue)
moduleResource.registerdIds[resourceName] = resourceData.id
let resourceData = await registerToMainService(this.moduleResource.moduleName, resourceName, newActionValue)
this.moduleResource.registerdIds[resourceName] = resourceData.id
}

if (moduleResource.appRoles === undefined || moduleResource.appRoles.length === 0) {
if (this.moduleResource.appRoles === undefined || this.moduleResource.appRoles.length === 0) {
console.log('Please register your role in "registerAppModule"')
process.exit()
if (isWebSite) process.exit()
}
await registerToMainRole(moduleResource.moduleName, moduleResource.appRoles)
for (let rolekey in moduleResource.appRoles) {
let roleId = await getRegisterRole(moduleResource.moduleName, moduleResource.appRoles[rolekey])
moduleResource.registerdRoleIds[moduleResource.appRoles[rolekey].toLowerCase()] = roleId['data'][0].id
await registerToMainRole(this.moduleResource.moduleName, this.moduleResource.appRoles)
for (let rolekey in this.moduleResource.appRoles) {
let roleId = await getRegisterRole(this.moduleResource.moduleName, this.moduleResource.appRoles[rolekey])
this.moduleResource.registerdRoleIds[this.moduleResource.appRoles[rolekey].toLowerCase()] = roleId['data'][0].id
}
// console.log("registed Ids=", moduleResource.registerdIds)
// console.log("registed role Ids=", moduleResource.registerdRoleIds)
// console.log("registed Ids=", this.moduleResource.registerdIds)
// console.log("registed role Ids=", this.moduleResource.registerdRoleIds)
}
module.exports.registeredAppModulesRole = registeredAppModulesRole

Expand Down Expand Up @@ -225,6 +225,7 @@ let commonActionValidation = async (context) => {
console.log('==================Subscription Start==============')
let subscriptionId = ''
let userDetails = ''
let isSite = false
if (context.params.headers.subscriptionid) {
// console.log('==called direct subscription=>')
subscriptionId = context.params.headers.subscriptionid
Expand All @@ -233,6 +234,7 @@ let commonActionValidation = async (context) => {
console.log('==called site wise subscription=>')
let siteDetails = await subscription.getSiteInfo(context.params.headers.siteid)
subscriptionId = siteDetails && siteDetails.subscriptionId !== undefined ? siteDetails.subscriptionId : ''
isSite = context.params.headers.siteid
} else if (context.params.userPackageDetails) {
// get if from website settings
userDetails = context.params.userPackageDetails
Expand All @@ -253,7 +255,7 @@ let commonActionValidation = async (context) => {
let moduleName = context.params.moduleName
let userRole = subscription.getUserRole(context, subscriptionId)
console.log('=============userRole=', userRole)
if (await subscription.isUserHasActionPermission(context, userRole) === false) {
if (await subscription.isUserHasActionPermission(context, userRole, isSite) === false) {
context.result = {status: 403, message: 'Access denied for action'}
throw new errors.Forbidden('Permission not available for action', {errorCode: 'ERR-PERMISSION'})
// return context
Expand All @@ -266,9 +268,14 @@ let commonActionValidation = async (context) => {
if (userPackageDetails[moduleName]) {
if (userPackageDetails[moduleName][serviceName] !== undefined &&
userPackageDetails[moduleName][serviceName][context.method] !== undefined) {
let data = await context.service.find({
let findObj = {
query: {'subscriptionId': subscriptionId}
})
}
if (isSite !== false) {
findObj.query.siteId = context.params.headers.siteid
}
console.log('=============find Obj==', findObj)
let data = await context.service.find(findObj)
if (data.total !== undefined &&
data.total >= userPackageDetails[moduleName][serviceName][context.method]) {
throw new errors.Forbidden('Access denied, your subscription limit over', {errorCode: 'ERR-LIMIT-OVER'})
Expand Down Expand Up @@ -354,15 +361,15 @@ let getUserRole = (context, subscriptionId) => {
}
module.exports.getUserRole = getUserRole

let isUserHasActionPermission = async (context, userRole) => {
let isUserHasActionPermission = async (context, userRole, siteId) => {
try {
let serviceName = context.path
let resourceIds = context.params.resourceIds
let registerdRoleIds = context.params.registerdRoleIds

let roleId = registerdRoleIds[userRole] ? registerdRoleIds[userRole] : 'Anonymous'
userRole = userRole.toLowerCase()
let resourcePermission = await checkResourcePermission(resourceIds[serviceName] + '_' + context.method, 'global', roleId)
let resourcePermission = await checkResourcePermission(resourceIds[serviceName] + '_' + context.method, 'global', roleId, siteId)

// console.log('=============resourcePermission=', resourcePermission)
if (resourcePermission['data'] && resourcePermission['data']['accessValue'] > 0) {
Expand All @@ -375,12 +382,16 @@ let isUserHasActionPermission = async (context, userRole) => {
}
module.exports.isUserHasActionPermission = isUserHasActionPermission

let checkResourcePermission = async function (resourceId, tasktype, roleId) {
let checkResourcePermission = async function (resourceId, tasktype, roleId, siteId) {
return new Promise(async (resolve, reject) => {
let KeyValue = resourcePermissionURL + '/' + moduleResource.moduleName + '/' + tasktype + '/' + roleId + '/' + resourceId
let modulename = moduleResource.moduleName
if (siteId !== false) {
modulename = 'website_' + siteId
}
let KeyValue = resourcePermissionURL + '/' + modulename + '/' + tasktype + '/' + roleId + '/' + resourceId
var options = {
method: 'get',
uri: resourcePermissionURL + '/' + moduleResource.moduleName + '/' + tasktype + '/' + roleId + '/' + resourceId
uri: resourcePermissionURL + '/' + modulename + '/' + tasktype + '/' + roleId + '/' + resourceId
// headers: {
// 'authorization': authorization
// }
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.1.5",
"version": "0.1.7",
"description": "to secure your service ",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit 24db6e8

Please sign in to comment.