Imports System.Data Imports System.IdentityModel.Tokens.Jwt Imports System.Security.Claims Imports ADSSession Imports Extensiones Imports Microsoft.IdentityModel.Tokens Partial Class LogIn Inherits System.Web.UI.Page #Region " PROPIEDADES " Private Property CveUsuario As Integer Get Return IfNull(ViewState("CveUsuario"), "-1").ToString.ToEntero End Get Set(value As Integer) ViewState("CveUsuario") = value End Set End Property Private Property CveEmpresa As Integer Get Return ViewState("CveEmpresa").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEmpresa") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load '"187.158.96.163" es la de mi casa 'If (Context.Session("UsuarioSIG") IsNot Nothing) OrElse Not User.Identity.IsAuthenticated Then 'Request.Headers.Add("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJOb21icmUiOiJhZG1pbiIsIkN2ZVVzdWFyaW8iOiIyMDA5IiwiQ3ZlRW1wcmVzYSI6IjIiLCJDdmVQZXJmaWwiOiIyIiwiTWFpbCI6ImFkbWluQGFkbWluLmNvbSIsImV4cCI6MTU5NDY3MzQ2NCwiaXNzIjoiVGVzdC5jb20iLCJhdWQiOiJUZXN0LmNvbSJ9.vmPRxGfxzR10Rf-4Luk2Ej0SVs7w2XGDGJBCyx5VSQI") 'Response.AddHeader("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJOb21icmUiOiJhZG1pbiIsIkN2ZVVzdWFyaW8iOiIyMDA5IiwiQ3ZlRW1wcmVzYSI6IjIiLCJDdmVQZXJmaWwiOiIyIiwiTWFpbCI6ImFkbWluQGFkbWluLmNvbSIsImV4cCI6MTU5NDY3MzQ2NCwiaXNzIjoiVGVzdC5jb20iLCJhdWQiOiJUZXN0LmNvbSJ9.vmPRxGfxzR10Rf-4Luk2Ej0SVs7w2XGDGJBCyx5VSQI") 'Response.End() 'End If Dim iplist As String() = New String() {"", ""} If HttpContext.Current.Request.ServerVariables("REMOTE_ADDR").ToString().Contiene(iplist) Then Response.Redirect("http://www.adsistemas.mx/login.aspx") 'si alguien lo ve es correcto la pagina vieja de adsistemas End If Dim token As String = GetTokenAngular() If (token.Length > 0) Then If Not IsNothing(Request("port")) Then Dim ReturnUrl As String = "/" If Request("ReturnUrl") IsNot Nothing Then ReturnUrl = Request("ReturnUrl").ToString() End If Dim strdomain = Request.Url.AbsoluteUri.Replace(Request.Url.PathAndQuery, "") If Request.Url.Port <> 80 Then strdomain = strdomain.Replace(String.Format(":{0}", Request.Url.Port), "") End If ReturnUrl = String.Format("{0}:{1}/auth/login?token={3}&returnUrl=/{2}", strdomain, Request("port"), HttpUtility.UrlEncode(ReturnUrl), HttpUtility.UrlEncode(token)) 'S ies angular retiro el https para que no marque error la pagina ReturnUrl = ReturnUrl.Replace("https", "http") ReturnUrl = ReturnUrl.Replace("HTTPS", "HTTP") RegistraScript(String.Format("opennewlocation('{0}','{1}')", ReturnUrl, "")) End If End If If Not Page.IsPostBack Then Dim strimg As New StringBuilder strimg.AppendLine("var imagenes= {'Metronic/assets/admin/pages/media/bg/1.jpg': 'center',") strimg.AppendLine(" 'Metronic/assets/admin/pages/media/bg/2.jpg': 'center',") strimg.AppendLine(" 'Metronic/assets/admin/pages/media/bg/3.jpg': 'center',") strimg.AppendLine(" 'Metronic/assets/admin/pages/media/bg/4.jpg': 'center'") strimg.AppendLine(" }") 'strimg.AppendLine("var imagenes= ['Metronic/assets/admin/pages/media/bg/1.jpg',") 'strimg.AppendLine(" 'Metronic/assets/admin/pages/media/bg/2.jpg',") 'strimg.AppendLine(" 'Metronic/assets/admin/pages/media/bg/3.jpg',") 'strimg.AppendLine(" 'Metronic/assets/admin/pages/media/bg/4.jpg'") 'strimg.AppendLine(" ]") 'Alert(Request.Url.Host.ToUpper().Contains("SIGNALSGPS"), TipoMensaje.MsgConfirmacion) If Request.Url.Host.ToUpper().Contains("SIGNALSGPS".ToUpper()) Then strimg.Clear() strimg.AppendLine("var imagenes= {") strimg.AppendLine(" 'Scripts/login/Layout1/images/bg01.jpg': 'center',") strimg.AppendLine(" 'Scripts/login/Layout1/images/bg02.jpg': 'center',") strimg.AppendLine(" 'Scripts/login/Layout1/images/bg03.jpg': 'center',") strimg.AppendLine(" }") 'strimg.AppendLine("var imagenes= [") 'strimg.AppendLine(" 'Scripts/login/Layout1/images/bg01.jpg',") 'strimg.AppendLine(" 'Scripts/login/Layout1/images/bg02.jpg',") 'strimg.AppendLine(" 'Scripts/login/Layout1/images/bg03.jpg',") 'strimg.AppendLine(" ]") LtlImgLogo.Text = "" LtlAppName.Text = "SIGNAL GPS
tu plataforma de rastreo" Ltlcopyright.Text = "2019 © Sistema de Monitoreo y Telemedición SA de CV" Ltlcopyright2.Text = "2019 © Sistema de Monitoreo y Telemedición SA de CV" PnlLoginB.CssClass = "logincint login-form " PnlContraB.CssClass = "logincint login-form " lnkFavicon.Href = "/Imagenes/favicongps.ico" Else End If HdfImagenes.Value = strimg.ToString() txtUsuario.Focus() Me.Form.DefaultButton = BtnLogIn.ClientID If Request("p") IsNot Nothing AndAlso Request("p") <> "" Then Dim Salida As String = Decripta(Request("p")) If Salida <> "" Then Dim UrlParametros As Hashtable = Parametros(Salida) If UrlParametros("OPCION") IsNot Nothing AndAlso UrlParametros("OPCION").ToString = "Activar" Then If UrlParametros("CVEU") IsNot Nothing AndAlso UrlParametros("CVEU").ToString.ToEntero > 0 Then CveUsuario = UrlParametros("CVEU").ToString.ToEntero CveEmpresa = UrlParametros("CVEE").ToString.ToEntero 'Activo el usuario y redirecciono para que pida la nueva contraseña Dim currentDate As Date = Date.Now Dim elapsedTicks As Long = currentDate.Ticks - UrlParametros("HORA").ToString.ToLong Dim elapsedSpan As New TimeSpan(elapsedTicks) PnlLogin.Visible = False If elapsedSpan.Days < 3 Then Dim Usr As New ClsSisUsuarios If Usr.GetUsuarios(CveUsuario, -1, -1) Then Dim dr As DataRow = Usr.DtResultados.FiltroPrimero("") If dr IsNot Nothing Then If dr("PolCambiarContraseña").ToString = "SI" Then PnlContra.Visible = True 'HCambio.Visible = True 'HdnCveUsr.Value = CveUsuario.ToString Me.Form.DefaultButton = BtnGuardar.ClientID 'If Usr.UpdateUsuarioPortal(dr("Usuario").ToString, dr("Nombre").ToString, ' dr("Permiso1").ToString = "True", dr("Permiso2").ToString = "True", dr("Permiso3").ToString = "True", dr("Permiso4").ToString = "True", dr("Permiso5").ToString = "True", ' dr("Permiso6").ToString = "True", dr("Permiso7").ToString = "True", dr("Permiso8").ToString = "True", dr("Permiso9").ToString = "True", dr("Permiso10").ToString = "True", ' True, TxtContrasenia1.Text, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, CveUsr) Then ' Alert("Contraseña Modificada.", TipoMensaje.MsgConfirmacion, JSBtnAceptar:="location.href=""ConsultaCliente.aspx""") 'End If Else Alert("El usuario ya cambio su contraseña, inicie sesión normalmente.", TipoMensaje.MsgInformacion) PnlLogin.Visible = True End If Else Alert("El Usuario no existe", TipoMensaje.MsgError) End If End If Usr.Dispose() Else Alert("La Activación expiró", TipoMensaje.MsgError) End If 'TxtContraseña.Text = UrlParametros("CLAVE").ToString.Trim End If End If End If Else CveUsuario = -1 End If Else If CveUsuario > 0 Then BtnGuardar_Click(Nothing, Nothing) Else BtnLogIn_Click(Nothing, Nothing) End If End If End Sub Private Function Parametros(Cadena As String) As Hashtable Dim P1() As String = Cadena.Split("&"c) Dim Tmp As String Dim P2() As String Dim URLParametros As New Hashtable For Each Tmp In P1 P2 = Tmp.Split("="c) URLParametros.Add(P2(0).ToString.ToUpper, P2(1)) Next Return URLParametros End Function Property GlobalDTUsuarios(Optional CveUsuario As Integer = -1, Optional CveEmpresa As Integer = -1) As Data.DataTable Get If CveUsuario <> -1 Then Dim Dv As New Data.DataView(DirectCast(Application("GlobalDTUsuarios"), Data.DataTable), "CveUsuario =" & CveUsuario, "", Data.DataViewRowState.CurrentRows) GlobalDTUsuarios = Dv.ToTable Dv.Dispose() Else GlobalDTUsuarios = DirectCast(Application("GlobalDTUsuarios"), Data.DataTable) End If End Get Set(value As Data.DataTable) Application("GlobalDTUsuarios") = value End Set End Property Dim BtnLogIn_Clickenter As Integer = 0 Protected Sub BtnLogIn_Click(ByVal sender As Object, ByVal e As EventArgs) 'Handles CmdLogIn.Click Dim ReturnUrl As String = "/" If Request("ReturnUrl") IsNot Nothing Then ReturnUrl = Request("ReturnUrl").ToString() End If If BtnLogIn_Clickenter = 0 Then 'esta variable se recicla con cada postaback BtnLogIn_Clickenter = 1 Dim ObjUsuario As New ClsSisUsuarios Dim Usuario As Usuario = Nothing 'Dim UsuarioAsignaciones As Usuario = Nothing Dim isgps = Request.Url.Host.ToUpper().Contains("SIGNALSGPS".ToUpper()) Usuario = ObjUsuario.ValidaUsuario(txtUsuario.Text, Encripta(TxtContraseña.Text.Trim), IMEI, CvePlataforma:=If(isgps, 3, -1)) 'UsuarioAsignaciones = ObjUsuario.ValidaUsuarioAsignacion(Usuario.CveUsuario, Usuario.CveEmpresa) If Not isgps AndAlso Usuario IsNot Nothing AndAlso Usuario.CvePlataforma = 3 Then ' SI ES de la plataforma 3(GPS), no debe de entar por liga normal Usuario = Nothing End If ADSSessionConfig.sessionUser = Usuario ADSSessionConfig.sessionDpage = False ObjUsuario.Dispose() If Usuario IsNot Nothing Then If Not Usuario.AutorizadoxIP OrElse (HddAdsCodex.Text.Length > 0 AndAlso Usuario.CodigoAutorizado = HddAdsCodex.Text) Then CreaObjetoEmpresa(Usuario) ADSSessionConfig.sessionUser.MultipleEmpresa = True Dim x As New ADSSessionObj(Usuario.CveUsuario, Usuario.CveEmpresa) Dim _sessionid = Encripta(String.Format("{0}|{1}", Usuario.CveUsuario, x.SessionID)) x = ADSSessionConfig.SessionManager(OpcionSession.agregarSession, x) If Usuario.CvePlataforma = 6 And Usuario.CveRol = 10 Then 'PLATAFORMA PORTAL CLIENTE 'FormsAuthentication.RedirectFromLoginPage(_sessionid, False) 'Response.Redirect("/PortalCliente/PortalCliente.aspx", True) ReturnUrl = "/PortalCliente/PortalCliente.aspx" ElseIf Usuario.CvePlataforma = 7 And Usuario.CveRol = 11 Then 'PLATAFORMA PORTAL PROVEEDOR 'FormsAuthentication.RedirectFromLoginPage(Encripta(Usuario.CveUsuario), False) 'Response.Redirect("/PortalProveedor/PortalProveedor.aspx", True) ReturnUrl = "/PortalProveedor/PortalProveedor.aspx" ElseIf Usuario.CveRol = 1200 And Usuario.Acceso > 0 Then 'PLATAFORMA GPS Usuario.CvePlataforma = 3 'FormsAuthentication.RedirectFromLoginPage(Encripta(Usuario.CveUsuario), False) 'Response.Redirect("/PortalGPS/InicioGPS.aspx", True) ReturnUrl = "/PortalGPS/InicioGPS.aspx" Else 'PLATAFORMA SIG CType(Session("UsuarioSIG"), Usuario).CvePlataforma = 1 Dim dt As Data.DataTable = GlobalDTUsuarios(Usuario.CveUsuario) If dt IsNot Nothing Then If dt.Rows.Count >= 1 Then If dt.Rows.Count > 1 Then Usuario.MultipleEmpresa = True End If 'FormsAuthentication.RedirectFromLoginPage(Encripta(Usuario.CveUsuario), False) End If End If dt.Dispose() End If Dim cookie = FormsAuthentication.GetAuthCookie(Usuario.CveUsuario, False) Response.Cookies.Add(cookie) Dim routeangular As String Dim puerto As String = "" If Not IsNothing(Request("port")) Then puerto = String.Format(":{0}", Request("port")) Else puerto = String.Format(":{0}", If(System.Configuration.ConfigurationManager.AppSettings("EsProduccion").ToString() = "1", 84, 4200)) End If Dim strdomain = Request.Url.AbsoluteUri.Replace(Request.Url.PathAndQuery, "") If Request.Url.Port <> 80 Then strdomain = strdomain.Replace(String.Format(":{0}", Request.Url.Port), "") End If Dim token As String = GetTokenAngular() routeangular = String.Format("{0}{1}/auth/login?token={3}{4}&returnUrl=/{2}", strdomain, puerto, HttpUtility.UrlEncode(ReturnUrl), HttpUtility.UrlEncode(token), If(puerto.Length > 0, "", "")) '&cerrar=1 'S ies angular retiro el https para que no marque error la pagina routeangular = routeangular.Replace("https", "http") routeangular = routeangular.Replace("HTTPS", "HTTP") If Not IsNothing(Request("port")) Then ReturnUrl = routeangular routeangular = "" End If RegistraScript(String.Format("opennewlocation('{0}','{1}')", ReturnUrl, routeangular)) 'Response.Redirect(ReturnUrl, True) Else Alert("El usuario no esta autorizado en este equipo, favor de contactar al administrador de usuarios.", TipoMensaje.MsgAdvertencia) End If 'If Usuario.Acceso > 0 Then 'Else ' Alert("Usuario con acceso limitado.", TipoMensaje.MsgAdvertencia) 'End If Else Alert("Usuario y/o Contraseña incorrectos.", TipoMensaje.MsgAdvertencia) End If End If End Sub Private Function GetTokenAngular() As String If Not IsNothing(Context.Session("UsuarioSIG")) Then Dim usuario As Usuario = DirectCast(Context.Session("UsuarioSIG"), Usuario) Dim tokenDescriptor = New Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor With { .Subject = New System.Security.Claims.ClaimsIdentity(New System.Security.Claims.Claim() {New System.Security.Claims.Claim("CvePlataforma", usuario.CvePlataforma.ToString()), New System.Security.Claims.Claim("CveUsuario", usuario.CveUsuario.ToString()), New System.Security.Claims.Claim("CveEmpresa", usuario.CveEmpresa.ToString()), New System.Security.Claims.Claim("CveRol", usuario.CveRol.ToString()), New System.Security.Claims.Claim("Fecha", Date.Now.ToLongDateString())}), .Expires = Date.UtcNow.AddHours(3), .SigningCredentials = New Microsoft.IdentityModel.Tokens.SigningCredentials( New Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.ASCII.GetBytes("*_AsistenciaDesarrolloSistemas-SIGAPI_*17-06-2020")), Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256Signature)} Dim tokenHandler = New System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler() Dim newtoken = tokenHandler.CreateToken(tokenDescriptor) Dim stokenn As String = tokenHandler.WriteToken(newtoken) Return stokenn Else Return "" End If End Function Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario) Dim ObjEmpresa As New ClsSisEmpresas() If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados Dim EmpresasFuncionalidades As New HybridDictionary For Each Row As Data.DataRow In dttmp.Rows EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString) Next ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades) End If UsuarioActual.Empresa = ObjEmpresa.Empresa Else End If ObjEmpresa.Dispose() End Sub Dim BtnGuardar_Clickenter As Integer = 0 Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) If BtnGuardar_Clickenter = 0 Then 'esta variable se recicla con cada postaback BtnGuardar_Clickenter = 1 Dim TieneError As Boolean = False Dim ObjUsuario As New ClsSisUsuarios If ObjUsuario.UpdateUsuarioContrasenia(Encripta(TxtContrasenia1.Text), CveUsuario, CveEmpresa) Then If ObjUsuario.GetUsuarios(CveUsuario) Then If ObjUsuario.DtResultados.Rows.Count = 1 Then Dim dr As DataRow = ObjUsuario.DtResultados.Rows(0) txtUsuario.Text = dr("Usuario").ToString Dim Contraseña As String = Decripta(dr("Contraseña").ToString) TxtContraseña.Text = Contraseña Else TieneError = True End If Else TieneError = True End If Else TieneError = True End If ObjUsuario.Dispose() If Not TieneError Then BtnLogIn_Clickenter = 0 BtnLogIn_Click(Nothing, Nothing) End If End If End Sub Public Function GenerateJSONWebToken(ByVal user As UserModel) As String Dim securityKey = New SymmetricSecurityKey(Encoding.UTF8.GetBytes("ThisismySecretKey")) Dim credentials = New SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256) Dim claims = {New Claim("Nombre", user.Nombre), New Claim("CveUsuario", user.CveUsuario.ToString()), New Claim("CveEmpresa", user.CveEmpresa.ToString()), New Claim("CvePerfil", user.CvePerfil.ToString()), New Claim("Mail", user.Mail.ToString())} Dim token = New JwtSecurityToken("Test.com", "Test.com", claims, expires:=DateTime.Now.AddMinutes(120), signingCredentials:=credentials) Return New JwtSecurityTokenHandler().WriteToken(token) End Function Public Class UserModel Public Sub New() Me.CveUsuario = -1 End Sub Public Property CveUsuario As Integer Public Property Mail As String Public Property Nombre As String Public Property Contraseña As String Public Property CvePerfil As Integer Public Property CveUsuarioModifico As Integer Public Property CveEmpresa As Integer Public Property CveUsuarioRegistro As Integer End Class End Class