/// <summary> /// main logic for access control, and store results in event log. If access is valid then open object. /// </summary> public List <string> objectIO(data.Json.TriggerAccessDto inputs) { List <string> objectIOs = new List <string>(); UserTrigger usTrg = _userService.getUserByTriggerType(inputs.Value, inputs.TriggerTypeName); List <AcObject> objs = _objectService.getObjects(inputs.TriggerTypeName, inputs.ObjectName); if (usTrg == null) { throw new AppException("Trigger type not found."); } else if (usTrg.TrgActivity == null) { _logger.InsertEventLog(inputs.Value, usTrg.TrgtId, null, 1); throw new AppException("Unknown phone number."); } else if (usTrg.TrgActivity == 0) { _logger.InsertEventLog(inputs.Value, usTrg.TrgtId, null, 3); throw new AppException("Trigger not active."); } else if (usTrg.UsrActivity == 0) { _logger.InsertEventLog(inputs.Value, usTrg.TrgtId, null, 4); throw new AppException("User not found."); } else if (objs.Count == 0) { _logger.InsertEventLog(inputs.Value, usTrg.TrgtId, null, 5); throw new AppException("Object not found."); } foreach (AcObject obj in objs) { if (obj.ObjActivity == 0) { _logger.InsertEventLog(inputs.Value, usTrg.TrgtId, obj.ObjId, 6, usTrg.UsrId); continue; } List <AcAccess> acs = _accessService.checkAccess(usTrg.UsrId, obj.ObjId); if (acs.Count != 0) { _logger.InsertEventLog(inputs.Value, usTrg.TrgtId, obj.ObjId, 10, usTrg.UsrId); objectIOs.Add(obj.ObjAction); } else { _logger.InsertEventLog(inputs.Value, usTrg.TrgtId, obj.ObjId, 7, usTrg.UsrId); } } if (objectIOs.Count == 0) { throw new AppException("User has no access."); } return(objectIOs); }
public List <string> closeAll(List <TriggerAccessDto> inputs) { List <string> objectIOs = new List <string>(); for (int i = 0; i < inputs.Count; i++) { UserTrigger usTrg = _userService.getUserByTriggerType(inputs[i].Value, inputs[i].TriggerTypeName); List <AcObject> objs = _objectService.getObjects(inputs[i].TriggerTypeName, inputs[i].ObjectName); foreach (AcObject obj in objs) { _logger.InsertEventLog(inputs[i].Value, usTrg.TrgtId, obj.ObjId, 11, usTrg.UsrId); objectIOs.Add(obj.ObjAction); } } return(objectIOs); }
public UserTrigger getUserByTriggerType(string value, string type) { UserTrigger userTrigger = ( from trgt in _context.AcTriggerType join trg in _context.AcTrigger on new { Key1 = trgt.TrtId, Key2 = value } equals new { Key1 = trg.TrgTrtId, Key2 = trg.TrgValue } into AcTrigger from q in AcTrigger.DefaultIfEmpty() join us in _context.AcUser on q.TrgUsrId equals us.UsrId into AcUser from l in AcUser.DefaultIfEmpty() where trgt.TrtName == type select new UserTrigger { TrgtId = trgt.TrtId, UsrId = q.TrgUsrId, TrgActivity = q.TrgActivity, UsrActivity = l.UsrActivity } ).SingleOrDefault(); return(userTrigger); }