Beispiel #1
0
        /// <summary>
        /// Returns a user List that are contained in the requested role.
        /// </summary>
        /// <param name="applicationName"></param>
        /// <param name="applicationPassword"></param>
        /// <param name="roleName"></param>
        /// <param name="userList"></param>
        /// <returns></returns>
        public Response GetUserListByRole(string applicationName, string applicationPassword, string roleName, out List <User> userList)
        {
            var response = new Response {
                Message = "Not initilizated", Result = false
            };

            userList = new List <User>();
            try
            {
                //1.-GetApplication Id
                var applicationLogic  = new ApplicationLogic(_configuration);
                var applicationDbList = applicationLogic.GetApplicationList();
                applicationLogic.Dispose();
                var appFinded = applicationDbList.Find(app => app.ApplicationName == applicationName);
                if (appFinded == null)
                {
                    response.Message = string.Format("La aplicación  {0} especificada no está registrada en esquema de seguridad. {1}", applicationName, DateTime.Now.ToString());
                    return(response);
                }


                if (applicationPassword.Trim() != appFinded.ApplicationPassword.Trim())
                {
                    response.Message = string.Format("La contraseña de aplicación especificada no es válida. {0}", DateTime.Now.ToString());
                    return(response);
                }

                //var applicationPasswordResult = Cryptographer.CompareHash("SecurityAlgorithim", applicationPassword, appFinded.ApplicationPassword);
                //if (!applicationPasswordResult)
                //{
                //    response.Message = string.Format("La contraseña de aplicación especificada no es válida. {0}", DateTime.Now.ToString());
                //    return response;
                //}
                var         roleLogic           = new RoleLogic(_configuration);
                List <Role> applicationRoleList = roleLogic.GetRoleList(appFinded);
                roleLogic.Dispose();
                var roleFinded = applicationRoleList.Find(rolfinded => rolfinded.RoleName == roleName);
                if (roleFinded == null)
                {
                    response.Message = string.Format("El rol {0} no pudo ser encontrado en la aplicacion {1}", roleName,
                                                     appFinded.ApplicationName);
                    return(response);
                }

                var         usersApplicationsRoleLogic = new UsersApplicationsRolesLogic(_configuration);
                List <User> listRoleUsers         = usersApplicationsRoleLogic.FindRoleUsers(roleFinded, appFinded);
                List <User> listaRoleUserVigentes = new List <User>();
                foreach (var roleUser in listRoleUsers)
                {
                    DateTime declineDate    = Convert.ToDateTime(roleUser.DeclineDate);
                    DateTime declineDateSIO = Convert.ToDateTime(roleUser.DeclineDateSIO);
                    if (declineDate > DateTime.Now && declineDateSIO > DateTime.Now)
                    {
                        listaRoleUserVigentes.Add(roleUser);
                    }
                }

                usersApplicationsRoleLogic.Dispose();

                if (listaRoleUserVigentes.Count == 0)
                {
                    response.Message =
                        string.Format("No pudo ser encontrado ningun usuario para el rol {0} de la aplicación {1}",
                                      roleFinded.RoleName, appFinded.ApplicationName);
                    return(response);
                }

                userList         = listaRoleUserVigentes;
                response.Message = string.Format("Se encontraron {0} usuarios para el rol {1} de la aplicacion {2}",
                                                 userList.Count.ToString(), roleFinded.RoleName,
                                                 appFinded.ApplicationName);
                response.Result = true;
                return(response);

                //UsersApplicationsRolesLogic.GetApplicationsRoleList()
            }
            catch (Exception exception)
            {
                response.Message = string.Format("Ocurrió un error al obtener la lista de usuarios por rol. Error {0}",
                                                 exception.Message);
                response.Result = false;
                return(response);
            }
        }
        public Response AddNewUsersApplicationsRoles(UsersApplicationsRoles usersApplicationsRoles, User registerUser)
        {
            var response = new Response {
                Message = "Sin inicializar", Result = false
            };

            try
            {
                #region AddUserDataValidation
                if (string.IsNullOrEmpty(usersApplicationsRoles.UserId))
                {
                    response.Message = "El usuario no puede estar vacío";
                    return(response);
                }

                //Se valida que no exista previamente el rol asignado al usuario
                var usersApplicationsRoleLogic = new UsersApplicationsRolesLogic(_configuration);
                var lstprofileFull             = usersApplicationsRoleLogic.GetApplicationsRoleList(new User()
                {
                    UserId = usersApplicationsRoles.UserId
                }, registerUser);
                usersApplicationsRoleLogic.Dispose();

                var roleFinded = lstprofileFull.Find(a => a.ApplicationName == usersApplicationsRoles.ApplicationName && a.RoleName == usersApplicationsRoles.RoleName);
                if (roleFinded != null)
                {
                    response.Message = "El rol ya ha sido asignado previamente al usuario.";
                    return(response);
                }



                //Se valida que no exista la prohibición de combinacion de roles
                EntityLibrary.ApplicationPMX application = new ApplicationPMX()
                {
                    ApplicationId = usersApplicationsRoles.ApplicationId
                };
                User usertoAdd = new User()
                {
                    UserId = usersApplicationsRoles.UserId
                };
                var roleLogic = new RoleLogic(_configuration);
                List <EntityLibrary.Role> roles = roleLogic.GetRoleList(application, usertoAdd);


                Role roleB = new Role()
                {
                    RoleId = usersApplicationsRoles.RoleId
                };

                foreach (var roleA in roles)
                {
                    var resultExist = roleLogic.RoleNotAllowedCombinationExistAndDate(application, roleA, roleB);
                    if (resultExist.Result)
                    {
                        response.Message =
                            "No se puede agregar el rol al usuario, ya que no está permitida en la combinación de roles";
                        return(response);
                    }
                }
                roleLogic.Dispose();

                if (string.IsNullOrEmpty(usersApplicationsRoles.ApplicationId.ToString()))
                {
                    response.Message = "El campo IdAplicacion no puede estar vacío";
                    return(response);
                }

                if (string.IsNullOrEmpty(usersApplicationsRoles.RoleId.ToString()))
                {
                    response.Message = "El campo IdRole no puede estar vacío";
                    return(response);
                }

                var dateRole = Convert.ToDateTime(usersApplicationsRoles.DeclineDate);
                if (Convert.ToDateTime(string.Format("{0:yyyy/MM/dd}", dateRole)) < Convert.ToDateTime(string.Format("{0:yyyy/MM/dd}", DateTime.Now)))
                {
                    response.Message = "La fecha ingresada no puede ser menor a la fecha actual, favor de verificar.";
                    return(response);
                }

                if (registerUser == null)
                {
                    response.Message = "No se ha especificado el usuario con permisos para registrar";
                    return(response);
                }
                #endregion

                var usersApplicationsRoleDa = new UsersApplicationsRoleDA(_configuration);
                usersApplicationsRoleDa.AddNewUsersApplicationsRoles(usersApplicationsRoles, registerUser);
                usersApplicationsRoleDa.Dispose();
                #region logRegister

                var log = new Log
                {
                    Application = new ApplicationPMX
                    {
                        ApplicationName = _applicationName
                    },
                    EventUser      = registerUser,
                    EventTypeId    = LogTypeEnum.Notification,
                    LogDescription = string.Format("Agregó el rol {0}-{1} de la aplicación {2}-{3} al usuario {4}  Vigente hasta: {5}.",
                                                   usersApplicationsRoles.RoleId, usersApplicationsRoles.RoleName, usersApplicationsRoles.ApplicationId, usersApplicationsRoles.ApplicationName, usersApplicationsRoles.UserId, usersApplicationsRoles.DeclineDate)
                };
                #endregion
                var loglogic = new LogLogic(_configuration);
                loglogic.InsertLogEvent(log);
                loglogic.Dispose();


                response.Message = "Se registró correctamente el rol {0} de la aplicación {1} al userId {2} - {3}.";
                response.Result  = true;
            }
            catch (Exception err)
            {
                if (err.Message.Substring(0, 35) == "Violation of PRIMARY KEY constraint")
                {
                    var log = new Log
                    {
                        EventUser      = registerUser,
                        EventTypeId    = LogTypeEnum.Notification,
                        LogDescription = string.Format("Se intentó agregar al usuario {0} al esquema de seguridad, pero ya existe previamente", registerUser.UserId),
                        Application    = new ApplicationPMX
                        {
                            ApplicationName =
                                _applicationName
                        }
                    };
                    var loglogic = new LogLogic(_configuration);
                    loglogic.InsertLogEvent(log);
                    loglogic.Dispose();
                    response.Message = "El usuario ya cuenta con el role seleccionado.";
                    return(response);
                }
                response.Message = string.Format("Ocurrio un error al intentar agregar el usuario. {0} {1}", err.Message, DateTime.Now.ToString(CultureInfo.InvariantCulture));
                return(response);
            }
            return(response);
        }
Beispiel #3
0
        /// <summary>
        /// Returns a user List that are contained in an application
        /// </summary>
        /// <param name="applicationName"></param>
        /// <param name="applicationPassword"></param>
        /// <param name="userList"></param>
        /// <returns></returns>
        public Response GetUserListByApplication(string applicationName, string applicationPassword, out List <User> userList)
        {
            var response = new Response {
                Message = "Not initilizated", Result = false
            };

            userList = new List <User>();
            try
            {
                //1.-GetApplication Id
                var applicationLogic  = new ApplicationLogic(_configuration);
                var applicationDbList = applicationLogic.GetApplicationList();
                applicationLogic.Dispose();
                var appFinded = applicationDbList.Find(app => app.ApplicationName == applicationName);
                if (appFinded == null)
                {
                    response.Message = string.Format("La aplicación  {0} especificada no está registrada en esquema de seguridad. {1}", applicationName, DateTime.Now.ToString());
                    return(response);
                }

                if (string.IsNullOrEmpty(applicationPassword))
                {
                    response.Message = string.Format("No ha sido proporcionado un password de aplicacion. {0}",
                                                     DateTime.Now);
                    return(response);
                }

                //RS | 01/12/2015
                //DateTime declineDate = new DateTime(Convert.ToInt32(appFinded.DeclineDate.Substring(6, 4))
                //    ,Convert.ToInt32(appFinded.DeclineDate.Substring(0, 2))
                //    ,Convert.ToInt32(appFinded.DeclineDate.Substring(3, 2)) );

                //if (declineDate <= DateTime.Now)
                //{
                //    response.Message = string.Format("702 - La aplicación {0} no es vigente en SeguridadApp. {1}", applicationName, DateTime.Now.ToString());
                //    return response;
                //}

                if (appFinded.DeclineDateDF <= DateTime.Now)
                {
                    response.Message = string.Format("702 - La aplicación {0} no es vigente en SeguridadApp. {1}", applicationName, DateTime.Now.ToString());
                    return(response);
                }


                if (applicationPassword.Trim() != appFinded.ApplicationPassword.Trim())
                {
                    response.Message = string.Format("701 - La contraseña de la aplicación {0} es incorrecta. {1}", applicationName, DateTime.Now.ToString());
                    return(response);
                }

                //var applicationPasswordResult = Cryptographer.CompareHash("SecurityAlgorithim", applicationPassword, appFinded.ApplicationPassword);
                //if (!applicationPasswordResult)
                //{
                //    response.Message = string.Format("La contraseña de aplicación especificada no es válida. {0}", DateTime.Now.ToString());
                //    return response;
                //}

                var         usersApplicationsRoleLogic = new UsersApplicationsRolesLogic(_configuration);
                List <User> listRoleUsers = usersApplicationsRoleLogic.GetApplicationUsersList(appFinded);
                usersApplicationsRoleLogic.Dispose();

                if (listRoleUsers.Count == 0)
                {
                    response.Message =
                        string.Format("No se encontró ningún usuario para la aplicación {0}", appFinded.ApplicationName);
                    return(response);
                }

                userList         = listRoleUsers;
                response.Message = string.Format("Se encontraron {0} usuarios de la aplicacion {1}",
                                                 userList.Count.ToString(), appFinded.ApplicationName);
                response.Result = true;
                return(response);
            }
            catch (Exception exception)
            {
                response.Message = string.Format("Ocurrió un error al obtener la lista de usuarios por rol. Error {0}",
                                                 exception.Message);
                response.Result = false;
                return(response);
            }
        }