Ejemplo n.º 1
0
        public async Task <IActionResult> Authenticate(AuthenticateViewModel model)
        {
            try
            {
                log.WriteLog("Login", MethodBase.GetCurrentMethod().Name, model);
                int badStatusCode = (int)HttpStatusCode.BadRequest;
                var loginInfo     = await loginWorker.GetLoginInfo(model.UserName);

                if (loginInfo != null)
                {
                    if (loginInfo.Attemps >= 3)
                    {
                        return(BadRequest(new { code = badStatusCode, message = "Has intentado ingresar más de 3 veces, por favor intenta más tarde o comunicate con algún administrador" }));
                    }
                    if ((bool)loginInfo.Blocked)
                    {
                        return(BadRequest(new { code = badStatusCode, message = "Tu usuario se encuentra bloqueado, por favor comunicate con algún administrador" }));
                    }
                }

                var user = await loginWorker.Auhenticate(model.UserName, model.Password);

                if (user == null)
                {
                    await loginWorker.CreateorUpdateLoginInfo(model.UserName, false);

                    return(BadRequest(new { code = badStatusCode, message = "Tu usuario o contraseña no son conrrectos, por favor intentalo de nuevo" }));
                }

                await loginWorker.CreateorUpdateLoginInfo(user.UserName, true);

                user.Password = string.Empty;

                return(Ok(user));
            }
            catch (Exception ex)
            {
                int statusCode = (int)HttpStatusCode.InternalServerError;
                return(StatusCode(statusCode, new { code = statusCode, message = ex.Message }));
            }
        }