public String CalculateHash() { HashSha256 sha256 = new HashSha256(); String calculatedhash = sha256.Hash( previousHash + timeStamp.ToString() + nonce.ToString() + data); return(calculatedhash); }
public int CrearUsuarioConValores(String username, String password) { query = "NET_A_CERO.pr_crear_usuario_con_valores"; parametros.Clear(); parametroOutput = new SqlParameter("@usuario_id", SqlDbType.Int); parametroOutput.Direction = ParameterDirection.Output; parametros.Add(new SqlParameter("@username", username)); parametros.Add(new SqlParameter("@password", HashSha256.getHash(password))); parametros.Add(new SqlParameter("@is_admin", "0")); parametros.Add(parametroOutput); command = QueryBuilder.Instance.build(query, parametros); command.CommandType = CommandType.StoredProcedure; command.ExecuteNonQuery(); return((int)parametroOutput.Value); }
public async Task <UserResponse> RegisterUserAsync(RegisterUserModel model) { var eu = await db.tbUsers.FirstOrDefaultAsync(x => x.Username == model.Username); if (eu != null) { return new UserResponse() { Status = 0, StatusMessage = "User exits" } } ; var role = db.spRoles.Find(1); if (role == null) { var r = new spRole(); r.Name = "Admin"; r.UserAccess = ",999"; await db.spRoles.AddAsync(r); await db.SaveChangesAsync(); } var u = new tbUser(); u.FirstName = model.FirstName; u.LastName = model.LastName; u.Username = model.Username; u.Password = HashSha256.Get(model.Password); u.EMail = model.EMail; u.RoleId = 1; await db.tbUsers.AddAsync(u); await db.SaveChangesAsync(); return(await AuthenticateAsync(new UserRequest() { Username = model.Username, Password = model.Password })); } }
public async Task <UserResponse> AuthenticateAsync(UserRequest request) { UserResponse usr = new UserResponse(); var res = await db.tbUsers.Include(x => x.Role) .FirstOrDefaultAsync(x => x.Username == request.Username && x.Password == HashSha256.Get(request.Password)); if (res == null) { return new UserResponse() { Status = 0, StatusMessage = "Not found user" } } ; var SecretStr = config.GetSection("JwtToken:SecretKey").Value; var key = Encoding.ASCII.GetBytes(SecretStr); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, res.Id.ToString()), new Claim(ClaimTypes.Role, res.Role.UserAccess) }), Expires = DateTime.UtcNow.AddYears(10), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); usr.Token = tokenHandler.WriteToken(token); usr.FirstName = res.FirstName; usr.LastName = res.LastName; usr.Username = res.Username; usr.Access = res.Role.UserAccess; usr.Status = 1; usr.Id = res.Id; return(usr); }
private void botonIngresar_Click(object sender, EventArgs e) { //Validamos que ingrese usuario y contraseña if (this.textBoxUsuario.Text == "") { MessageBox.Show("Debe ingresar un usuario"); return; } if (this.textBoxContaseña.Text == "") { MessageBox.Show("Debe ingresar una contraseña"); return; } // Nos fijamos si el usuario y contraseña existen y esta habilitado String query = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username AND usr_password = @password AND usr_activo = 1"; String usuario = this.textBoxUsuario.Text; // valida contraseña encriptada String contraseña = HashSha256.getHash(this.textBoxContaseña.Text); IList <SqlParameter> parametros = new List <SqlParameter>(); parametros.Add(new SqlParameter("@username", usuario)); parametros.Add(new SqlParameter("@password", contraseña)); SqlDataReader reader = QueryHelper.Instance.exec(query, parametros); //Chequea el ingreso if (QueryHelper.Instance.readFrom(reader)) { MessageBox.Show("Bienvenido " + reader["usr_usuario"] + "!"); UsuarioSesion.Usuario.nombre = (String)reader["usr_usuario"]; UsuarioSesion.Usuario.id = (Int32)reader["usr_id"]; // Usuario logueado correctamente (intentos fallidos = 0) parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String clearIntentosFallidos = "UPDATE NET_A_CERO.Usuarios SET usr_intentos = 0 WHERE usr_usuario = @username"; QueryBuilder.Instance.build(clearIntentosFallidos, parametros).ExecuteNonQuery(); // Se fija si es el primer inicio de sesion del usuario parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String sesion = "SELECT usr_password FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username"; String primerInicio = (String)QueryBuilder.Instance.build(sesion, parametros).ExecuteScalar(); //El primer inicio la contraseña es fija (OK) if (primerInicio == "565339bc4d33d72817b583024112eb7f5cdf3e5eef0252d6ec1b9c9a94e12bb3") { this.Hide(); new CambiarContrasena().ShowDialog(); this.Close(); } parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String consultaRoles = "SELECT COUNT(rol_id) FROM NET_A_CERO.Usuarios_x_Rol WHERE (SELECT usr_id FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username) = usr_id"; int cantidadDeRoles = (int)QueryBuilder.Instance.build(consultaRoles, parametros).ExecuteScalar(); if (cantidadDeRoles > 1) { this.Hide(); new ElegirRol().ShowDialog(); this.Close(); } else { parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String rolDeUsuario = "SELECT r.rol_nombre FROM NET_A_CERO.Roles r, NET_A_CERO.Usuarios_x_Rol ru, NET_A_CERO.Usuarios u WHERE r.rol_id = ru.rol_id AND ru.usr_id = u.usr_id AND u.usr_usuario = @username"; String rolUser = (String)QueryBuilder.Instance.build(rolDeUsuario, parametros).ExecuteScalar(); UsuarioSesion.Usuario.rol = rolUser; if (UsuarioSesion.Usuario.rol == null) { MessageBox.Show("No existen roles para iniciar sesion"); return; } // Para testear si elige bien el rol: MessageBox.Show("Rol: " + UsuarioSesion.Usuario.rol); this.Hide(); new MenuPrincipal().ShowDialog(); this.Close(); } } else { // Se fija si el usuario era correcto parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String buscaUsuario = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username"; SqlDataReader lector = QueryBuilder.Instance.build(buscaUsuario, parametros).ExecuteReader(); if (lector.Read()) { // Se fija si el usuario esta inhabilitado parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); parametros.Add(new SqlParameter("@password", contraseña)); String estaDeshabilitado = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username AND usr_activo = 0"; SqlDataReader userDeshabilitado = QueryBuilder.Instance.build(estaDeshabilitado, parametros).ExecuteReader(); if (userDeshabilitado.Read()) { MessageBox.Show("El usuario esta deshabilitado"); return; } // Suma un fallido parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String sumaFallido = "UPDATE NET_A_CERO.Usuarios SET usr_intentos = usr_intentos + 1 WHERE usr_usuario = @username"; QueryBuilder.Instance.build(sumaFallido, parametros).ExecuteNonQuery(); // Si es el tercer fallido se deshabilita al usuario parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String cantidadFallidos = "SELECT usr_intentos FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username"; int intentosFallidos = Convert.ToInt32(QueryBuilder.Instance.build(cantidadFallidos, parametros).ExecuteScalar()); if (intentosFallidos == 3) { parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String deshabilitar = "UPDATE NET_A_CERO.Usuarios SET usr_activo = 0 WHERE usr_usuario = @username"; QueryBuilder.Instance.build(deshabilitar, parametros).ExecuteNonQuery(); } MessageBox.Show("Contraseña incorrecta." + '\n' + '\n' + "La contraseña distingue mayusculas y minusculas." + '\n' + '\n' + "Fallidos del usuario: " + intentosFallidos); } else { MessageBox.Show("El usuario no existe"); } } }
private void btnLogin_Click(object sender, EventArgs e) { if (this.username.Text == "") { MessageBox.Show("Debe ingresar un usuario", "Login Usuario"); return; } if (this.password.Text == "") { MessageBox.Show("Debe ingresar una contraseña", "Login Usuario"); return; } var con = new Conexion(); con.query = "SELECT * FROM ONEFORALL.USUARIOS WHERE USER_USUARIO = '" + username.Text + "' AND USER_PASSWORD='******' AND USER_ACTIVO = 1 ;"; con.leer(); if (con.leerReader()) { MessageBox.Show("Bienvenido " + con.lector.GetString(1) + "!"); SesionUsuario.user.id = con.lector.GetInt32(0); SesionUsuario.user.username = con.lector.GetString(1); con.cerrarConexion(); con.query = "UPDATE ONEFORALL.USUARIOS SET USER_INTENTOS = 0 WHERE USER_ID =" + SesionUsuario.usuario.id; con.ejecutar(); if (!SesionUsuario.usuario.tieneRolesActivos()) { MessageBox.Show("El usuario no posee Roles activos", "Login Usuario", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //SesionUsuario.user.cargarFuncionalidadesRol(); this.Hide(); con.query = string.Format("SELECT COUNT(*) FROM ONEFORALL.USUARIO_X_ROL WHERE USERX_ID = {0}", SesionUsuario.user.id); con.leer(); if (con.leerReader()) { if (con.lector.GetInt32(0) > 1) { new ElegirSucursalYRol().Show(); } else { con.cerrarConexion(); con.query = string.Format("SELECT COUNT(*) FROM ONEFORALL.USUARIO_X_SUCURSAL WHERE USERX_ID = {0}", SesionUsuario.user.id); con.leer(); if (con.leerReader()) { if (con.lector.GetInt32(0) > 1) { new ElegirSucursalYRol().Show(); SesionUsuario.usuario.cargarFuncionalidadesRol(); } else { SesionUsuario.CargarSucursalYRol(); new MenuPrincipal().ShowDialog(); } } } con.cerrarConexion(); } } else { con.query = "SELECT * FROM ONEFORALL.USUARIOS WHERE USER_USUARIO = '" + username.Text + "';"; var intentosfallidos = 0; con.cerrarConexion(); con.leer(); if (con.leerReader()) { intentosfallidos = con.lector.GetByte(4); if (!con.lector.GetBoolean(3)) { MessageBox.Show("Su usuario se encuentra deshabilitado", "Login Usuario"); return; } con.cerrarConexion(); con.query = "UPDATE ONEFORALL.USUARIOS SET USER_INTENTOS = USER_INTENTOS + 1 WHERE USER_USUARIO='" + username.Text + "';"; con.ejecutar(); if (intentosfallidos >= 3) { con.query = "UPDATE ONEFORALL.USUARIOS SET USER_ACTIVO = 0 WHERE USER_USUARIO='" + username.Text + "';"; con.ejecutar(); } MessageBox.Show("Ingrese nuevamente la contraseña", "Login Usuario"); con.cerrarConexion(); return; } else { MessageBox.Show("El usuario no existe", "Login Usuario"); con.cerrarConexion(); return; } } }
private void btnContinuar_Click(object sender, EventArgs e) { if (textBoxContraseña.Text == "") { MessageBox.Show("Debe ingresar una nueva contraseña"); return; } if (textBoxRepetirContraseña.Text == "") { MessageBox.Show("Debe ingresar nuevamenta la contraseña"); return; } if (textBoxContraseña.Text.Length < 8) { MessageBox.Show("La contraseña debe tener por lo menos 8 caracteres"); return; } if (textBoxContraseña.Text != textBoxRepetirContraseña.Text) { MessageBox.Show("La contraseña no coincide, ingrese nuevamente"); textBoxContraseña.Clear(); textBoxRepetirContraseña.Clear(); return; } // Actualiza contraseña IList <SqlParameter> parametros = new List <SqlParameter>(); parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre)); parametros.Add(new SqlParameter("@pass", HashSha256.getHash(textBoxContraseña.Text))); String nuevaPass = "******"; QueryBuilder.Instance.build(nuevaPass, parametros).ExecuteNonQuery(); // Asigna el rol parametros.Clear(); parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre)); String consultaRoles = "SELECT COUNT(rol_id) from NET_A_CERO.Usuarios_x_Rol WHERE (SELECT usr_id FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username) = usr_id"; int cantidadDeRoles = (int)QueryBuilder.Instance.build(consultaRoles, parametros).ExecuteScalar(); if (cantidadDeRoles > 1) { this.Hide(); new ElegirRol().ShowDialog(); this.Close(); } else { parametros.Clear(); parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre)); String rolDeUsuario = "SELECT r.rol_nombre FROM NET_A_CERO.Roles r, NET_A_CERO.Usuarios_x_Rol ru, NET_A_CERO.Usuarios u WHERE r.rol_id = ru.rol_id and ru.usr_id = u.usr_id and u.usr_usuario = @username"; String rolUser = (String)QueryBuilder.Instance.build(rolDeUsuario, parametros).ExecuteScalar(); UsuarioSesion.Usuario.rol = rolUser; this.Hide(); new MenuPrincipal().ShowDialog(); this.Close(); } }