public static void onNewMessage(byte[] body, string listenerName) { var core = COREobject.i; DBEntities context = core.Context; TCPSocketListener listener = context.TCPListeners.Where(l => l.Name == listenerName).FirstOrDefault(); if (listener != null) { Block block = GetBlockWithWF(context, listener.ApplicationId, listener.BlockName.RemoveDiacritics()); if (block != null) { core.Application = listener.Application; try { PersonaAppRole role = context.AppRoles.FirstOrDefault(r => r.Name == "System" && r.ApplicationId == listener.ApplicationId); core.User = context.Users.FirstOrDefault(u => u.Users_Roles.Any(r => r.RoleName == role.Name && r.ApplicationId == role.ApplicationId)); } catch (Exception e) { OmniusInfo.Log($"Chyba při zpracování socketu: {listenerName} ({e})", OmniusLogSource.Nexus, null, null); } OmniusInfo.Log($"Začátek zpracování socketu: {listener.Name} / Blok {listener.BlockName} / Button {listener.WorkflowName}", OmniusLogSource.Nexus, listener.Application, core.User); FormCollection fc = new FormCollection(); Dictionary <string, object> vars = new Dictionary <string, object>(); vars.Add("__SocketRequestBody__", body); var runResult = new Modules.Tapestry.Tapestry(core).run(block, listener.WorkflowName, -1, fc, 0, null, vars); OmniusInfo.Log($"Konec zpraconání mailu: {listener.Name} / Blok {listener.BlockName} / Button {listener.WorkflowName}", OmniusLogSource.Hermes, listener.Application, core.User); } } }
private void BuildPersona() { progressHandler.SetActiveSection(EModule.Persona); if (masterContext != context) { progressHandler.SetMessage(message: "Copying user roles to app database", type: MessageType.InProgress); // copy Persona_AppRoles foreach (PersonaAppRole role in masterApp.Roles) { PersonaAppRole newRole = context.AppRoles.SingleOrDefault(r => r.ApplicationId == app.Id && r.Name == role.Name); if (newRole == null) { newRole = new PersonaAppRole { Name = role.Name, Priority = role.Priority }; app.Roles.Add(newRole); } else { newRole.Priority = role.Priority; } } context.SaveChanges(); progressHandler.SetMessage(message: "User roles copied", type: MessageType.Success); } else { progressHandler.SetMessage(message: "User roles is not necessary to copy", type: MessageType.Info); } }
public override void InnerRun(Dictionary <string, object> vars, Dictionary <string, object> outputVars, Dictionary <string, object> InvertedInputVars, Message message) { COREobject core = COREobject.i; DBEntities context = core.Context; int userId = Convert.ToInt32(vars["UserId"]); int groupId = Convert.ToInt32(vars["GroupId"]); PersonaAppRole role = context.AppRoles.Find(groupId); if (context.Users_Roles.Any(c => c.UserId == userId && c.RoleName == role.Name)) { context.Users_Roles.Remove(context.Users_Roles.SingleOrDefault(c => c.UserId == userId && c.RoleName == role.Name)); context.SaveChanges(); } }
private static void onNewMessage(object sender, IdleMessageEventArgs e, string incomingMailboxName) { COREobject core = COREobject.i; MailMessage mail = e.Client.GetMessage(e.MessageUID, FetchOptions.Normal); IncomingEmail email = core.Context.IncomingEmail.SingleOrDefault(m => m.Name == incomingMailboxName); if (email != null && email.IncomingEmailRule.Count() > 0) { foreach (IncomingEmailRule rule in email.IncomingEmailRule) { bool result = EvaluateRule(rule, mail); if (result) { Block block = GetBlockWithWF(core.Context, rule.ApplicationId, rule.BlockName.RemoveDiacritics()); if (block != null) { core.Application = rule.Application; try { PersonaAppRole role = core.Context.AppRoles.FirstOrDefault(r => r.Name == "System" && r.ApplicationId == rule.ApplicationId); core.User = core.Context.Users.FirstOrDefault(u => u.Users_Roles.Any(r => r.RoleName == role.Name && r.ApplicationId == role.ApplicationId)); } catch (Exception) { } OmniusInfo.Log($"Začátek zpracování mailu: {email.Name} / Pravidlo {rule.Name} / Blok {rule.BlockName} / Button {rule.WorkflowName}", OmniusLogSource.Hermes, rule.Application, core.User); FormCollection fc = new FormCollection(new NameValueCollection() { { "MailFrom", mail.From.Address }, { "MailCC", string.Join(";", mail.CC.Select(cc => cc.Address).ToList()) }, { "MailSubject", mail.Subject }, { "MailBody", mail.Body }, }); var runResult = new Tapestry.Tapestry(core).run(block, rule.WorkflowName, -1, fc, 0); OmniusInfo.Log($"Konec zpraconání mailu: {email.Name} / Pravidlo {rule.Name} / Blok {rule.BlockName} / Button {rule.WorkflowName}", OmniusLogSource.Hermes, rule.Application, core.User); } } } } }
public static void RemoveUserFromGroup(COREobject core, int?UserId = null, int?GroupId = null, int?RecordId = null) { var context = core.AppContext; if (RecordId != null) { UserId = RecordId.Value % 10000; GroupId = RecordId.Value / 10000; } PersonaAppRole role = context.AppRoles.Find(GroupId); if (context.Users_Roles.Any(c => c.UserId == UserId && c.RoleName == role.Name)) { context.Users_Roles.Remove(context.Users_Roles.SingleOrDefault(c => c.UserId == UserId && c.RoleName == role.Name)); context.SaveChanges(); } }
public static void onNewMessage(object model, BasicDeliverEventArgs args) { var body = args.Body; var message = Encoding.UTF8.GetString(body); var core = COREobject.i; DBEntities context = core.Context; Entitron.Entity.Nexus.RabbitMQ listener = context.RabbitMQs.Where(q => q.Name == args.ConsumerTag).FirstOrDefault(); if (listener != null) { Block block = GetBlockWithWF(context, listener.ApplicationId.Value, listener.BlockName.RemoveDiacritics()); if (block != null) { core.Application = listener.Application; try { PersonaAppRole role = context.AppRoles.FirstOrDefault(r => r.Name == "System" && r.ApplicationId == listener.ApplicationId); core.User = context.Users.FirstOrDefault(u => u.Users_Roles.Any(r => r.RoleName == role.Name && r.ApplicationId == role.ApplicationId)); OmniusInfo.Log($"Začátek zpracování RabbitMQ: {listener.Name} / Blok {listener.BlockName} / Button {listener.WorkflowName}", OmniusLogSource.Nexus, listener.Application, core.User); FormCollection fc = new FormCollection(); Dictionary <string, object> vars = new Dictionary <string, object>(); vars.Add("__RabbitMQMessage__", message); var runResult = new Modules.Tapestry.Tapestry(core).run(block, listener.WorkflowName, -1, fc, 0, null, vars); OmniusInfo.Log($"Konec zpracování RabbitMQ: {listener.Name} / Blok {listener.BlockName} / Button {listener.WorkflowName}", OmniusLogSource.Hermes, listener.Application, core.User); if (runResult.Item1.Errors.Count == 0) { listeners[args.ConsumerTag].Channel.BasicAck(args.DeliveryTag, false); } } catch (Exception e) { OmniusInfo.Log($"Chyba při zpracování RabbitMQ: {args.ConsumerTag} ({e})", OmniusLogSource.Nexus, null, null); } } } }
private ActionResult saveModel(AjaxPersonaAppRolesForTable model) { #region Column headers validation foreach (ColumnHeaderAppRolesForTable colHeader in model.ColHeaders) { colHeader.Name = colHeader.Name.Trim(); if (String.IsNullOrWhiteSpace(colHeader.Name)) { ViewBag.BadNameRole = true; ViewBag.Saved = false; return(View("App", model)); } } for (int i = 0; i < model.ColHeaders.Count; i++) { ColumnHeaderAppRolesForTable currHeader = model.ColHeaders[i]; for (int j = i + 1; j < model.ColHeaders.Count; j++) { if (model.DeletedCols == null || (!model.DeletedCols.Contains(i) && !model.DeletedCols.Contains(j))) { if (currHeader.Name == model.ColHeaders[j].Name) { ViewBag.RolesAreEqual = true; ViewBag.Saved = false; return(View("App", model)); } } } if (String.IsNullOrEmpty(currHeader.Priority.ToString()) || currHeader.Priority == 0) { ViewBag.BadPriorityRole = true; ViewBag.Saved = false; return(View("App", model)); } } #endregion #region Save model var context = COREobject.i.Context; Application app = context.Applications.Find(model.AppID); #region Column headers + data IQueryable <PersonaAppRole> roles = context.AppRoles.Where(c => c.ApplicationId == app.Id); #region Save columns int x = 0; foreach (ColumnHeaderAppRolesForTable colHeader in model.ColHeaders) { if (model.DeletedCols == null || !model.DeletedCols.Contains(x)) { #region Add or update column #region New users IDs - Data for this column List <int> NewUsersIDsList = new List <int>(); for (int y = 0; y < model.RowHeaders.Count; y++) { if (model.Data[x][y] == true) { NewUsersIDsList.Add(model.RowHeaders[y].Id); } } #endregion if (colHeader.Id != -1) { #region Update role PersonaAppRole realRole = roles.FirstOrDefault(a => a.Id == colHeader.Id); if (realRole != null) { #region Role name if (realRole.Name != colHeader.Name) { realRole.Name = colHeader.Name; } if (realRole.Priority != colHeader.Priority) { realRole.Priority = colHeader.Priority; } #endregion context.Users_Roles.RemoveRange(context.Users_Roles.Where(r => r.RoleName == realRole.Name && r.ApplicationId == realRole.ApplicationId)); foreach (int id in NewUsersIDsList) { context.Users_Roles.Add(new User_Role() { RoleName = realRole.Name, Application = realRole.Application, UserId = id }); } context.SaveChanges(); } #endregion } else { #region New role PersonaAppRole realRole = new PersonaAppRole(); realRole.Application = app; realRole.Name = colHeader.Name; realRole.Priority = colHeader.Priority; if (realRole.Name == "New role") { } #region Fill realRole with users foreach (int id in NewUsersIDsList) { context.Users_Roles.Add(new User_Role() { RoleName = realRole.Name, Application = realRole.Application, UserId = id }); } #endregion realRole = context.AppRoles.Add(realRole); try { context.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { string text = "Entity of type \"" + eve.Entry.Entity.GetType().Name + "\" in state \"" + eve.Entry.State + "\" has the following validation errors:"; foreach (var ve in eve.ValidationErrors) { string message = "- Property: \"" + ve.PropertyName + "\", Error: \"" + ve.ErrorMessage + "\""; } } throw; } #endregion colHeader.Id = realRole.Id; #endregion } #endregion } else { #region Delete column (role) if (colHeader.Id != -1) { PersonaAppRole role = context.AppRoles.First(a => a.Id == colHeader.Id); context.AppRoles.Remove(role); context.SaveChanges(); } #endregion } x++; } #endregion try { context.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { string text = "Entity of type \"" + eve.Entry.Entity.GetType().Name + "\" in state \"" + eve.Entry.State + "\" has the following validation errors:"; foreach (var ve in eve.ValidationErrors) { string message = "- Property: \"" + ve.PropertyName + "\", Error: \"" + ve.ErrorMessage + "\""; } } throw; } #endregion ViewBag.Saved = true; return(RedirectToAction("App", "Roles", new { @Id = model.AppID }));//App(model.AppID); }
private List <User> GetUserList() { /// INIT COREobject core = COREobject.i; DBEntities context = core.Context; // NexusWSService webService = new NexusWSService(); object[] parameters = new[] { "Auction_User" }; JToken results = webService.CallWebService("RWE_WSO_SOAP", "getUserListOfRole", parameters); var x = results.Children().First().Value <String>(); //get the list of users names and add it to the list. IEnumerable <String> usersNames = results.Children().Values().Select(y => y.Value <String>()); List <User> listUsers = new List <User>(); //iterate list of usersNames and make USerObject foreach (string userName in usersNames) { object[] param = new[] { userName, null }; JToken userClaim = webService.CallWebService("RWE_WSO_SOAP", "getUserClaimValues", param); User newUser = new User(); newUser.AuthTypeId = Id; newUser.localExpiresAt = DateTime.Today;//for test newUser.LastLogin = DateTime.Today; newUser.CurrentLogin = DateTime.Today; newUser.EmailConfirmed = false; newUser.PhoneNumberConfirmed = false; newUser.TwoFactorEnabled = false; newUser.LockoutEnabled = false; newUser.AccessFailedCount = 0; newUser.isActive = true; foreach (JToken property in userClaim.Children()) { var a = (property.Children().Single(c => (c as JProperty).Name == "claimUri") as JProperty).Value.ToString(); switch (a) { case "email": var email = (property.Children().Single(c => (c as JProperty).Name == "value") as JProperty).Value.ToString(); newUser.Email = email; newUser.UserName = email; break; case "http://wso2.org/claims/mobile": var mobile = (property.Children().Single(c => (c as JProperty).Name == "value") as JProperty).Value.ToString(); newUser.MobilPhone = mobile; break; case "http://wso2.org/claims/organization": var organization = (property.Children().Single(c => (c as JProperty).Name == "value") as JProperty).Value.ToString(); newUser.Company = organization; break; case "fullname": var fullname = (property.Children().Single(c => (c as JProperty).Name == "value") as JProperty).Value.ToString(); newUser.DisplayName = fullname; break; //SET ROLES FOR this newly created USER case "http://wso2.org/claims/role": var roles = (property.Children().Single(c => (c as JProperty).Name == "value") as JProperty).Value.ToString().Split(',').Where(r => r.Substring(0, 8) == "Auction_").Select(e => e.Remove(0, 8)); foreach (string role in roles) { PersonaAppRole approle = context.AppRoles.SingleOrDefault(r => r.Name == role && r.ApplicationId == core.Application.Id); if (approle == null) { context.AppRoles.Add(new PersonaAppRole() { Name = role, Application = core.Application, Priority = 0 }); context.SaveChanges(); } //User_Role userRole = newUser.Roles.SingleOrDefault(ur => ur.AppRole == approle && ur.User == newUser); if (approle != null && !newUser.Users_Roles.Contains(new User_Role { RoleName = approle.Name, Application = approle.Application, User = newUser })) { newUser.Users_Roles.Add(new User_Role { RoleName = approle.Name, Application = approle.Application, User = newUser }); } } break; } } listUsers.Add(newUser); } return(listUsers); }