Last active
May 3, 2019 03:46
-
-
Save philographer/079847dc2cb02764b394ab50248585ab to your computer and use it in GitHub Desktop.
Monitor User With Permission Query
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
db.getCollection("users").aggregate([ | |
{ | |
$lookup: { | |
localField: 'group.admin.fk', | |
as: 'admin', | |
from: 'permission_group', | |
foreignField: 'groupName' | |
} | |
}, | |
{ $project: { 'admin.groupName': false, 'admin._id': false } }, | |
{ | |
$lookup: { | |
localField: 'group.emergencyHead.fk', | |
as: 'emergencyHead', | |
from: 'permission_group', | |
foreignField: 'groupName' | |
} | |
}, | |
{ | |
$project: { 'emergencyHead.groupName': false, 'emergencyHead._id': false } | |
}, | |
{ | |
$lookup: { | |
localField: 'group.normalUser.fk', | |
as: 'normalUser', | |
from: 'permission_group', | |
foreignField: 'groupName' | |
} | |
}, | |
{ $project: { 'normalUser.groupName': false, 'normalUser._id': false } }, | |
{ | |
$lookup: { | |
localField: 'group.IC.fk', | |
as: 'IC', | |
from: 'permission_group', | |
foreignField: 'groupName' | |
} | |
}, | |
{ $project: { 'IC._id': false, 'IC.groupName': false } }, | |
{ | |
$lookup: { | |
localField: 'group.Scribe.fk', | |
as: 'Scribe', | |
from: 'permission_group', | |
foreignField: 'groupName' | |
} | |
}, | |
{ $project: { 'Scribe.groupName': false, 'Scribe._id': false } }, | |
{ | |
$lookup: { | |
localField: 'group.emergencyUser.fk', | |
as: 'emergencyUser', | |
from: 'permission_group', | |
foreignField: 'groupName' | |
} | |
}, | |
{ | |
$project: { 'emergencyUser.groupName': false, 'emergencyUser._id': false } | |
}, | |
{ $unwind: '$admin' }, | |
{ $unwind: '$emergencyHead' }, | |
{ $unwind: '$normalUser' }, | |
{ $unwind: '$IC' }, | |
{ $unwind: '$Scribe' }, | |
{ $unwind: '$emergencyUser' }, | |
{ | |
$addFields: { | |
alarmReception: { | |
adminSignal: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.alarmReception.adminSignal', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.alarmReception.adminSignal', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.alarmReception.adminSignal', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ $and: ['$IC.alarmReception.adminSignal', '$group.IC.isIC'] }, | |
{ | |
$and: [ | |
'$Scribe.alarmReception.adminSignal', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.alarmReception.adminSignal', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
}, | |
emergencySignal: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.alarmReception.emergencySignal', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.alarmReception.emergencySignal', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.alarmReception.emergencySignal', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ $and: ['$IC.alarmReception.emergencySignal', '$group.IC.isIC'] }, | |
{ | |
$and: [ | |
'$Scribe.alarmReception.emergencySignal', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.alarmReception.emergencySignal', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
actionPermission: { | |
emergency1: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.actionPermission.emergency1', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.actionPermission.emergency1', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.actionPermission.emergency1', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ $and: ['$IC.actionPermission.emergency1', '$group.IC.isIC'] }, | |
{ | |
$and: [ | |
'$Scribe.actionPermission.emergency1', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.actionPermission.emergency1', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
}, | |
emergency2: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.actionPermission.emergency2', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.actionPermission.emergency2', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.actionPermission.emergency2', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ $and: ['$IC.actionPermission.emergency2', '$group.IC.isIC'] }, | |
{ | |
$and: [ | |
'$Scribe.actionPermission.emergency2', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.actionPermission.emergency2', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
screenPermission: { | |
predictor: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.predictor.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.predictor.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.predictor.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.predictor.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.predictor.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.predictor.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
monitor: { | |
detailByGroup: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.monitor.detailByGroup.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.monitor.detailByGroup.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.monitor.detailByGroup.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.monitor.detailByGroup.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.monitor.detailByGroup.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.monitor.detailByGroup.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
monitorBot: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.monitor.monitorBot.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.monitor.monitorBot.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.monitor.monitorBot.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.monitor.monitorBot.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.monitor.monitorBot.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.monitor.monitorBot.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.monitor.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.monitor.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.monitor.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.monitor.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.monitor.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.monitor.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
}, | |
detailByService: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.monitor.detailByService.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.monitor.detailByService.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.monitor.detailByService.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.monitor.detailByService.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.monitor.detailByService.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.monitor.detailByService.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
admin: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.monitor.admin.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.monitor.admin.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.monitor.admin.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.monitor.admin.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.monitor.admin.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.monitor.admin.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
totalSummary: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.monitor.totalSummary.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.monitor.totalSummary.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.monitor.totalSummary.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.monitor.totalSummary.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.monitor.totalSummary.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.monitor.totalSummary.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
driBotSubscribe: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.monitor.driBotSubscribe.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.monitor.driBotSubscribe.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.monitor.driBotSubscribe.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.monitor.driBotSubscribe.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.monitor.driBotSubscribe.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.monitor.driBotSubscribe.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
}, | |
report: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.monitor.report.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.monitor.report.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.monitor.report.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.monitor.report.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.monitor.report.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.monitor.report.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
} | |
}, | |
emergency: { | |
canAccess: { | |
$or: [ | |
{ | |
$and: [ | |
'$admin.screenPermission.emergency.canAccess', | |
'$group.admin.isAdmin' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyHead.screenPermission.emergency.canAccess', | |
'$group.emergencyHead.isEmergencyHead' | |
] | |
}, | |
{ | |
$and: [ | |
'$normalUser.screenPermission.emergency.canAccess', | |
'$group.normalUser.isNormalUser' | |
] | |
}, | |
{ | |
$and: [ | |
'$IC.screenPermission.emergency.canAccess', | |
'$group.IC.isIC' | |
] | |
}, | |
{ | |
$and: [ | |
'$Scribe.screenPermission.emergency.canAccess', | |
'$group.Scribe.isScribe' | |
] | |
}, | |
{ | |
$and: [ | |
'$emergencyUser.screenPermission.emergency.canAccess', | |
'$group.emergencyUser.isEmergencyUser' | |
] | |
} | |
] | |
} | |
} | |
} | |
} | |
}, | |
{ $match: { empNo: 'KR00000' } } | |
]); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment