349 lines
18 KiB
VB.net
349 lines
18 KiB
VB.net
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 ViewState("CveUsuario").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
|
|
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 = "<img class="""" src=""Scripts/Login/Layout1/images/SignalLogo.png"" />"
|
|
LtlAppName.Text = "SIGNAL GPS <br/> 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 "
|
|
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 Not IsNothing(Request("port")) Then
|
|
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}/{2}", strdomain, Request("port"), ReturnUrl)
|
|
|
|
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)
|
|
RegistraScript(String.Format("opennewlocation('{0}','{1}')", ReturnUrl, ""))
|
|
'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 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
|
|
|