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 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