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