示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 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);
 }
示例#4
0
        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);
        }