Пример #1
0
        private void btnIniciarSesion_Click(object sender, EventArgs e)
        {
            bool formularioValido = ValidarFormulario();

            if (!formularioValido)
            {
                return;
            }

            string nombre = txtUsuario.Text.Trim();

            UsuarioBe usuario = usuarioBl.ObtenerUsuarioPorNombre(nombre);

            if (usuario == null)
            {
                lblErrorUsuario.Text = "Usuario no existe";
                return;
            }

            string contraseña = txtContraseña.Text;

            bool contraseñaValida = Seguridad.CompareMD5(contraseña, usuario.Contraseña);

            if (!contraseñaValida)
            {
                lblErrorContraseña.Text = "Contraseña incorrecta";
                return;
            }

            FrmMain frmMain = new FrmMain(usuario);

            frmMain.Show();
            Close();
        }
Пример #2
0
        public HttpResponseMessage AutenticarUsuario(string ruc, string usuario, string contraseña)
        {
            if (string.IsNullOrEmpty((ruc ?? "").Trim()))
            {
                var msg = new HttpResponseMessage(HttpStatusCode.BadRequest);
                msg.Content = new StringContent("El ruc está vacío.");
                return(msg);
            }

            if (string.IsNullOrEmpty((usuario ?? "").Trim()))
            {
                var msg = new HttpResponseMessage(HttpStatusCode.BadRequest);
                msg.Content = new StringContent("El usuario está vacío.");
                return(msg);
            }

            if (string.IsNullOrEmpty((contraseña ?? "").Trim()))
            {
                var msg = new HttpResponseMessage(HttpStatusCode.BadRequest);
                msg.Content = new StringContent("La contraseña está vacía.");
                return(msg);
            }

            var empresa = empresaBl.ObtenerEmpresaPorRuc(ruc);

            if (empresa == null)
            {
                var msg = new HttpResponseMessage(HttpStatusCode.BadRequest);
                msg.Content = new StringContent($"El ruc {ruc} no se encuentra registrado.");
                return(msg);
            }

            var user = usuarioBl.ObtenerUsuarioPorNombre(usuario, empresa.EmpresaId, loadListaPerfil: true, LoadListaSede: true);

            if (user == null)
            {
                var msg = new HttpResponseMessage(HttpStatusCode.BadRequest);
                msg.Content = new StringContent($"El usuario {usuario} no se encuentra registrado.");
                return(msg);
            }
            else
            {
                if (user.PersonalId.HasValue)
                {
                    user.Personal = personalBl.ObtenerPersonal(empresa.EmpresaId, user.PersonalId.Value);
                }
            }

            if (user.ListaPerfil == null)
            {
                var msg = new HttpResponseMessage(HttpStatusCode.BadRequest);
                msg.Content = new StringContent($"El usuario {usuario} no tiene ningún perfil asignado.");
                return(msg);
            }

            if (user.ListaSede == null)
            {
                var msg = new HttpResponseMessage(HttpStatusCode.BadRequest);
                msg.Content = new StringContent($"El usuario {usuario} no tiene ninguna sede asignada.");
                return(msg);
            }

            bool isCredentialValid = Seguridad.CompareMD5(contraseña, user.Contrasena);

            if (isCredentialValid)
            {
                var token = TokenGenerator.GenerateTokenJwt(user);

                var handler = new JwtSecurityTokenHandler();
                var payload = handler.ReadJwtToken(token).Payload;

                var response = new
                {
                    Token           = token,
                    FechaExpiracion = DateTimeOffset.FromUnixTimeSeconds(payload.Exp.Value),
                    Usuario         = new
                    {
                        Id      = user.UsuarioId,
                        Nombre  = user.Nombre,
                        Empresa = new
                        {
                            empresa.EmpresaId,
                            empresa.RazonSocial,
                            empresa.Ruc,
                            empresa.NombreComercial
                        },
                        Personal = user.Personal,
                        //ListaPerfil = user.ListaPerfil
                    },
                    PerfilActual = user.ListaPerfil[0],
                    SedeActual   = user.ListaSede[0]
                };

                string responseString = JsonConvert.SerializeObject(response);

                HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK);
                message.Content = new StringContent(responseString);

                message.Headers.Add("ls.ss", responseString);

                return(message);
            }
            else
            {
                return(new HttpResponseMessage(HttpStatusCode.Unauthorized));
            }
        }