public async Task<IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { bool crearCuenta = true; //solo los administradores pueden crear cuentas de narrador o de administrador if (model.Cuenta == TipoCuenta.Narrador || model.Cuenta == TipoCuenta.Administrador) { ApplicationUser usuarioLogueado = await _userManager.GetUserAsync(User); if (usuarioLogueado.Cuenta != TipoCuenta.Administrador) { crearCuenta = false; ModelState.AddModelError(string.Empty, "Se necesita una cuenta de Administrador para crear cuentas de Narrador o Administrador"); } } if (crearCuenta) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email, Cuenta = model.Cuenta }; List<Claim> claims = new List<Claim>(); user.Claims.Add(new IdentityUserClaim<string> { ClaimType = ClaimTypes.Role, ClaimValue = model.Cuenta.ToString(), UserId = user.Id }); var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { _servicioEmail.EnviarAltaCuenta(model.Email, model.Password); _logger.LogInformation(3, $"Cuenta creada para el usuario {model.Email}"); ViewBag.MensajeExito = $"Cuenta creada para el usuario {model.Email}"; ModelState.Clear(); return View(); } AddErrors(result); } } // If we got this far, something failed, redisplay form return View(model); }
public async Task<IActionResult> Delete(string id) { RegisterViewModel modelo = new RegisterViewModel(); var usuario = await _servicioUsuarios.GetUsuarioById(id); ; modelo.Email = usuario.Email; modelo.Cuenta = usuario.Cuenta; return View(modelo); }
public async Task<IActionResult> Delete(RegisterViewModel model, string id) { if (await _servicioUsuarios.BorrarUsuario(id)) { return RedirectToAction("Index"); } ViewBag.MensajeError = "No se puede marcar como borrada la cuenta"; return View(model); }
public async Task<IActionResult> Edit(RegisterViewModel model) { var usuario = await _servicioUsuarios.GetUsuarioByEmail(model.Email); usuario.Cuenta = model.Cuenta; await _userManager.UpdateAsync(usuario); ViewBag.MensajeExito = @"Datos actualizados"; return View(model); }