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);
                }
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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);
                        }
                    }
                }
            }
        }
Exemple #5
0
        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);
        }
Exemple #8
0
        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);
        }