public ActionResult Registration(Models.UserModelRegister user) { if (ModelState.IsValid) { using (var db = new ApplicationDB()) { JGA_PGS_USR userLog = db.JGA_PGS_USR.SingleOrDefault(x => x.USR_EMAIL == User.Identity.Name); if ((userLog.USR_SUPERUSR == 1)) { List<JGA_PGS_USR> usuarios = db.JGA_PGS_USR.ToList(); foreach (var item in usuarios) { if (item.USR_EMAIL == user.Email) { ModelState.AddModelError("", "Esta direcciónde correo actualmente se encuentra ocupada por otro usuario."); } else { var crypto = new SimpleCrypto.PBKDF2(); var encrpPass = crypto.Compute(user.Password); var sysUser = db.JGA_PGS_USR.Create(); sysUser.USR_CODEMP = userLog.USR_CODEMP; sysUser.USR_SUPERUSR = 0; sysUser.USR_NAME = user.Name; sysUser.USR_TEL = user.Phone; sysUser.USR_EMAIL = user.Email; sysUser.USR_PASSWORD = encrpPass; sysUser.USR_PASSWORDSALT = crypto.Salt; sysUser.EMP_ESTADO = 1; db.JGA_PGS_USR.Add(sysUser); db.SaveChanges(); return RedirectToAction("Index", "Home"); } } } else { ModelState.AddModelError("", "Usted no tiene los derechos administrativos necesarios para crear un usuario."); } } } else { ModelState.AddModelError("", "Credenciales incorrectas."); } return View(); }
//Método que verifica si la contraseña del usuario es valida para ingresar al sistema. private bool IsValid(string email, string password) { var crypto = new SimpleCrypto.PBKDF2(); bool isValid = false; using (var db = new ApplicationDB()) { var user = db.JGA_PGS_USR.FirstOrDefault(u => u.USR_EMAIL == email); if (user != null) { if ((user.USR_PASSWORD == password)) { isValid = true; } else if (user.USR_PASSWORD == crypto.Compute(password, user.USR_PASSWORDSALT)) { isValid = true; } } } return isValid; }