public async Task <IActionResult> Login([FromBody] UserInfo user)
        {
            //Response.Headers.Add("access-control-allow-origin", "*");
            Services.SecurityServices.UserService userService =
                new Services.SecurityServices.UserService(_configuration, _context);
            try
            {
                var result = userService.AutenticateLogin(user.Email, user.Password);
                if (result)
                {
                    var usuarioActivo = await _context.Usuario.FirstOrDefaultAsync(x => x.Email == user.Email);

                    var rolActivo = await _context.Rol.Include(x => x.Vista).Include(x => x.Usuario).FirstOrDefaultAsync(x => x.IdRol == usuarioActivo.IdRol);

                    rolActivo.Usuario = new List <Usuario>()
                    {
                        usuarioActivo
                    };

                    return(Ok(rolActivo));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Usuario o Contraseña Inválido");
                    return(BadRequest(ModelState));
                }
            }
            catch (ArgumentException aeg)
            {
                ModelState.AddModelError(string.Empty, aeg.Message);
                return(BadRequest(ModelState));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #2
0
        public async Task <IActionResult> AddUsuario([FromBody] Usuario usuario)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }


            usuario.NombreSuscripcion = usuario.Nombre.ToLower()
                                        .Replace(" ", "_")
                                        .Replace("á", "a")
                                        .Replace("é", "e")
                                        .Replace("í", "i")
                                        .Replace("ó", "o")
                                        .Replace("ú", "u")
                                        .Replace("ñ", "n");

            usuario.Activo = false;
            _context.Usuario.Add(usuario);

            try
            {
                await _context.SaveChangesAsync().ConfigureAwait(false);


                var user = new UserInfo(usuario);
                Services.SecurityServices.IUserService userService =
                    new Services.SecurityServices.UserService(_configuration, _context);

                if (await userService.AutenticateAndGenerateNewTokenAsync(user).ConfigureAwait(false))
                {
                    usuario.TokenMedio = user.Token;
                    _context.TokenUser.Add(new TokenUser()
                    {
                        IdUser = user.IdUsuario, Email = user.Email, Token = user.Token, SignToken = user.Token.Split('.')[2]
                    });
                    await _context.SaveChangesAsync().ConfigureAwait(false);

                    Services.MailServices.IMessagingServiceMail messaging = new Services.MailServices.MessageServiceMail(_configuration);
                    await messaging.SendEmailAsync(user.Nombre, user.Email, "Token", GetBodyToken(user), null).ConfigureAwait(false);
                }
                await UpdateUsuario(usuario.IdUsuario, usuario);
            }
            catch (ArgumentException aex)
            {
                ModelState.AddModelError("", aex.Message);
                return(BadRequest(ModelState));
            }
            catch (DbUpdateException)
            {
                if (EmailExists(usuario.Email))
                {
                    return(new StatusCodeResult(StatusCodes.Status409Conflict));
                }
                else
                {
                    throw;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(CreatedAtAction("GetUsuario", new { id = usuario.IdUsuario }, usuario));
        }