Exemplo n.º 1
0
        public static void CreateAccessSecurity()
        {
            using (var transaction = Services.session.BeginTransaction())
            {
                Assembly assembly = typeof(Security).GetTypeInfo().Assembly;

                SecurityDescription attribute     = null;
                MenuDescription     menuAttribute = null;

                Dictionary <string, Gq_perfiles>     roles  = new Dictionary <string, Gq_perfiles>();
                Dictionary <MenuDescription, object> menues = new Dictionary <MenuDescription, object>();
                ArrayList items = new ArrayList();

                Gq_accesosDto itemClass  = null;
                Gq_accesosDto itemMethod = null;

                #region CREACION DE ROLES

                if (ROLES.Length > 0)
                {
                    for (int i = 0; i < ROLES.Length; i++)
                    {
                        if (roles.ContainsKey(ROLES[i]) == false)
                        {
                            roles.Add(ROLES[i], null);
                        }
                    }
                }

                for (int i = 0; i < roles.Keys.Count; i++)
                {
                    string key = roles.Keys.ElementAt(i);
                    var    rol = Services.Get <ServGq_perfiles>().findBy(x => x.KeyName == key).FirstOrDefault();

                    if (rol == null)
                    {
                        rol               = new Gq_perfiles();
                        rol.Nombre        = key;
                        rol.KeyName       = key;
                        rol.Estado        = Constantes.ESTADO_ACTIVO;
                        rol.Creado        = DateTime.Now;
                        rol.Modificado    = DateTime.Now;
                        rol.CreadoPor     = -1;
                        rol.ModificadoPor = -1;

                        Services.Get <ServGq_perfiles>().Agregar(rol);

                        rol = Services.Get <ServGq_perfiles>().findBy(x => x.KeyName == key).FirstOrDefault();
                    }

                    roles[key] = rol;
                }
                #endregion

                #region CREACION DE ACCESOS

                var elementsType = (from iface in assembly.GetTypes()
                                    where iface.Namespace != null && iface.Namespace.Contains("Controllers")
                                    select iface);

                foreach (Type item in elementsType)
                {
                    menuAttribute = (MenuDescription)item.GetTypeInfo().GetCustomAttribute(typeof(MenuDescription), false);
                    if (menuAttribute != null)
                    {
                        menues.Add(menuAttribute, item);
                    }
                    attribute = (SecurityDescription)item.GetTypeInfo().GetCustomAttribute(typeof(SecurityDescription), false);

                    if (attribute != null)
                    {
                        itemClass       = new Gq_accesosDto();
                        itemClass.Clase = getNameObject(item);

                        if (attribute.Estado == SecurityDescription.SeguridadEstado.Activo)
                        {
                            itemClass.Metodo      = null;
                            itemClass.Nombre      = attribute.Name;
                            itemClass.extra       = attribute;
                            itemClass.Descripcion = "Class :" + attribute.Name;

                            //obtenerProfiles(attribute, roles);

                            items.Add(itemClass);
                        }

                        foreach (MethodInfo method in item.GetMethods())
                        {
                            menuAttribute = (MenuDescription)method.GetCustomAttribute(typeof(MenuDescription), true);
                            if (menuAttribute != null)
                            {
                                menues.Add(menuAttribute, method);
                            }

                            attribute = (SecurityDescription)method.GetCustomAttribute(typeof(SecurityDescription), true);
                            if (attribute != null && attribute.Estado == SecurityDescription.SeguridadEstado.Activo)
                            {
                                itemMethod             = new Gq_accesosDto();
                                itemMethod.Clase       = itemClass.Clase;
                                itemMethod.Metodo      = method.Name;
                                itemMethod.Nombre      = attribute.Name;
                                itemMethod.Descripcion = "Method :" + attribute.Name;
                                itemMethod.extra       = attribute;

                                //obtenerProfiles(attribute, roles);

                                items.Add(itemMethod);
                            }
                        }
                    }
                }

                foreach (Gq_accesosDto ii in items)
                {
                    var data = Services.Get <ServGq_accesos>().findBy(x => x.Clase == ii.Clase && x.Metodo == ii.Metodo).FirstOrDefault();
                    if (data == null)
                    {
                        data             = new Gq_accesos();
                        data.Clase       = ii.Clase;
                        data.Metodo      = ii.Metodo;
                        data.Descripcion = ii.Descripcion;
                        data.Nombre      = ii.Nombre;

                        Services.Get <ServGq_accesos>().Agregar(data);


                        data = Services.Get <ServGq_accesos>().findBy(x => x.Clase == ii.Clase && x.Metodo == ii.Metodo).FirstOrDefault();
                    }
                    else
                    {
                        data.Nombre = ii.Nombre;

                        Services.Get <ServGq_accesos>().Actualizar(data);
                    }

                    attribute = (SecurityDescription)ii.extra;
                    if (attribute.Perfiles != null && attribute.Perfiles.Length > 0)
                    {
                        for (int i = 0; i < attribute.Perfiles.Length; i++)
                        {
                            var dataPerfiles = Services.Get <ServGq_perfiles_accesos>().findBy(x => x.AccesoId == data.AccesoId && x.PerfilId == roles[attribute.Perfiles[i]].PerfilId).FirstOrDefault();
                            if (dataPerfiles == null)
                            {
                                dataPerfiles                = new Gq_perfiles_accesos();
                                dataPerfiles.AccesoId       = data.AccesoId.Value;
                                dataPerfiles.PerfilId       = roles[attribute.Perfiles[i]].PerfilId.Value;
                                dataPerfiles.GrantPermition = "1";
                                dataPerfiles.Estado         = "A";
                                dataPerfiles.Creado         = DateTime.Now;
                                dataPerfiles.Modificado     = DateTime.Now;
                                dataPerfiles.CreadoPor      = dataPerfiles.ModificadoPor = -1;

                                Services.Get <ServGq_perfiles_accesos>().Agregar(dataPerfiles);
                            }
                        }
                    }
                }


                #endregion

                #region CREACION DE USUARIO ADMINISTRADOR

                var usuario = Services.Get <ServGq_usuarios>().findBy(x => x.Usuario == "admin").FirstOrDefault();

                if (usuario == null)
                {
                    usuario = new Gq_usuarios
                    {
                        Nombre        = "Admin",
                        Apellido      = "Admin",
                        Usuario       = "admin",
                        Clave         = Encriptacion.Encriptar("admin1234", Constantes.CLAVE_ENCRIPTACION),
                        Email         = "",
                        Estado        = Constantes.ESTADO_ACTIVO,
                        PerfilId      = roles[ROL_ADMI].PerfilId.Value,
                        Creado        = DateTime.Now,
                        Modificado    = DateTime.Now,
                        CreadoPor     = -1,
                        ModificadoPor = -1,
                        RequiereClave = "N",
                    };

                    Services.Get <ServGq_usuarios>().Agregar(usuario);
                }


                #endregion

                #region CREACION DE MENUES

                var menu = Services.Get <ServGq_menu>().findBy(x => x.KeyName == MENU_CONFIG_ID).FirstOrDefault();

                if (menu == null)
                {
                    menu = new Gq_menu();
                    menu.MenuPosition  = MENU_CONFIG_ID;
                    menu.KeyName       = MENU_CONFIG_ID;
                    menu.Nombre        = "Menu";
                    menu.MenuIcono     = "fa fa-fw fa-cogs";
                    menu.Creado        = DateTime.Now;
                    menu.Modificado    = DateTime.Now;
                    menu.CreadoPor     = -1;
                    menu.ModificadoPor = -1;
                    menu.Estado        = Constantes.ESTADO_ACTIVO;

                    Services.Get <ServGq_menu>().Agregar(menu);
                }

                foreach (var m in menues.Keys)
                {
                    menu = Services.Get <ServGq_menu>().findBy(x => x.KeyName == m.Id).FirstOrDefault();
                    if (menu == null)
                    {
                        var obj = menues[m];

                        menu = new Gq_menu();
                        menu.MenuPosition  = m.Id;
                        menu.Nombre        = m.Description;
                        menu.KeyName       = m.Id;
                        menu.MenuIcono     = "";
                        menu.MenuPadre     = m.IdParent;
                        menu.Creado        = DateTime.Now;
                        menu.Modificado    = DateTime.Now;
                        menu.CreadoPor     = -1;
                        menu.ModificadoPor = -1;
                        menu.Estado        = Constantes.ESTADO_ACTIVO;

                        if (obj is Type)
                        {
                            menu.MenuUrl = ((Type)obj).Name.Replace("Controller", "");
                        }
                        else if (obj is MethodInfo)
                        {
                            menu.MenuUrl = ((MethodInfo)obj).DeclaringType.Name.Replace("Controller", "") + @"/" + ((MethodInfo)obj).Name;
                        }

                        Services.Get <ServGq_menu>().Agregar(menu);
                    }
                }
                #endregion

                transaction.Commit();
            }
        }
Exemplo n.º 2
0
 public Gq_menuDto(Gq_menu value) : base(value)
 {
 }