Created
April 18, 2019 09:31
-
-
Save philographer/69febee9c02f7c5c7fd716742ee118ad 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([ | |
| { | |
| "$match": { "empNo": "KR00000" } | |
| }, | |
| { | |
| "$lookup": { | |
| "from": "permission_group", | |
| "localField": "group.admin.fk", | |
| "foreignField": "groupName", | |
| "as": "admin" | |
| } | |
| }, | |
| { | |
| "$lookup": { | |
| "from": "permission_group", | |
| "localField": "group.emergencyHead.fk", | |
| "foreignField": "groupName", | |
| "as": "emergencyHead" | |
| } | |
| }, | |
| { | |
| "$lookup": { | |
| "from": "permission_group", | |
| "localField": "group.normalUser.fk", | |
| "foreignField": "groupName", | |
| "as": "normalUser" | |
| } | |
| }, | |
| { | |
| "$lookup": { | |
| "from": "permission_group", | |
| "localField": "group.IC.fk", | |
| "foreignField": "groupName", | |
| "as": "IC" | |
| } | |
| }, | |
| { | |
| "$lookup": { | |
| "from": "permission_group", | |
| "localField": "group.Scribe.fk", | |
| "foreignField": "groupName", | |
| "as": "Scribe" | |
| } | |
| }, | |
| { | |
| "$unwind": "$admin" | |
| }, | |
| { | |
| "$unwind": "$emergencyHead" | |
| }, | |
| { | |
| "$unwind": "$normalUser" | |
| }, | |
| { | |
| "$unwind": "$IC" | |
| }, | |
| { | |
| "$unwind": "$Scribe" | |
| }, | |
| { | |
| "$addFields": { | |
| "alarmReception": { | |
| "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" | |
| ] | |
| } | |
| ] | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "screenPermission": { | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "monitor": { | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| }, | |
| "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" | |
| ] | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| ]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment