Skip to content

Instantly share code, notes, and snippets.

@philographer
Created April 18, 2019 09:31
Show Gist options
  • Save philographer/69febee9c02f7c5c7fd716742ee118ad to your computer and use it in GitHub Desktop.
Save philographer/69febee9c02f7c5c7fd716742ee118ad to your computer and use it in GitHub Desktop.
Monitor User With Permission Query
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