Skip to content

Instantly share code, notes, and snippets.

@philographer
Last active May 3, 2019 03:46
Show Gist options
  • Save philographer/079847dc2cb02764b394ab50248585ab to your computer and use it in GitHub Desktop.
Save philographer/079847dc2cb02764b394ab50248585ab to your computer and use it in GitHub Desktop.
Monitor User With Permission Query
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