Ejemplo n.º 1
0
        public Response Authorize(Core.Entity.UserPolicy userPolicy, Core.Entity.Policy policy)
        {
            try
            {
                StoreProcedure storeProcedure = new StoreProcedure("weco.USUARIO_POLITICA_Authorize");
                storeProcedure.AddParameter("@USPO_USUA_ID_BI", userPolicy.IdUser);
                storeProcedure.AddParameter("@USPO_APP_USUARIO_ID_VC", userPolicy.AppUserId);
                storeProcedure.AddParameter("@POLI_NOMBRE_VC", policy.Name);
                DataTable dataTable = storeProcedure.ReturnData(_connection, _timeOut);
                Logger.Debug("StoreProcedure: {0} DataTable: {1}", SerializeJson.ToObject(storeProcedure), SerializeJson.ToObject(dataTable));

                if (storeProcedure.Error.Length <= 0)
                {
                    if (dataTable.Rows.Count > 0)
                    {
                        if (dataTable.Rows[0]["RESULTADO"].Equals("00"))
                        {
                            return(Response.Success(new Core.Entity.UserPolicy()
                            {
                                Status = dataTable.Rows[0]["USPO_ESTADO_BT"].ToString()
                            }));
                        }
                        else
                        {
                            Logger.Debug("Message: {0} DataTable: {1}", Response.CommentMenssage("NotAuthenticated"), SerializeJson.ToObject(dataTable));
                            return(Response.Error(dataTable, "NotAuthenticated"));
                        }
                    }
                    else
                    {
                        Logger.Debug("Message: {0} DataTable: {1}", Response.CommentMenssage("NotUnauthorized"), SerializeJson.ToObject(dataTable));
                        return(Response.Error(dataTable, "NotUnauthorized"));
                    }
                }
                else
                {
                    Logger.Error("Message: {0} StoreProcedure.Error: {1}", Response.CommentMenssage("Sql"), storeProcedure.Error);
                    return(Response.Error(storeProcedure.Error, "Sql"));
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0} Exception: {1}", ex.Message, SerializeJson.ToObject(ex));
                return(Response.Error(ex, "Error"));
            }
        }
Ejemplo n.º 2
0
        public IActionResult SendCertificate([FromBody]  SendCertificateRequest sendCertificateRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(sendCertificateRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <SendCertificateResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Parameter)).Split(':');
                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = sendCertificateRequest.PublicToken,
                    UserName = credentials[0],
                    Password = credentials[1]
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = sendCertificateRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion
                var customeModuleEndDate = _clientModule.GetModuleEndDate(sendCertificateRequest.Email);
                if (customeModuleEndDate.Data == null)
                {
                    response.Data    = null;
                    response.Message = customeModuleEndDate.Message;
                    response.State   = customeModuleEndDate.State;
                    return(BadRequest(response));
                }
                var customeModuleEndDateData = (CustomModuleEndDate)customeModuleEndDate.Data;
                var pdf = ToolImage.GetBase64Image(sendCertificateRequest.CertificateParameters, customeModuleEndDateData.Day, customeModuleEndDateData.Month);

                SendCertificateResponse responseImage = new SendCertificateResponse()
                {
                    pdfCertificate = pdf
                };

                response.Data    = responseImage;
                response.Message = Models.Response.CommentMenssage("CertificateCreatedSuccesfuly");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = sendCertificateRequest.AppUserId,
                    Request       = Framework.Common.SerializeJson.ToObject(sendCertificateRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", sendCertificateRequest, response);
            }
        }
Ejemplo n.º 3
0
        public IActionResult PreRegistration([FromBody] PreRegistrationRequest preRegistrationRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(preRegistrationRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <PreRegistrationResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Parameter)).Split(':');
                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = preRegistrationRequest.PublicToken,
                    UserName = credentials[0],
                    Password = credentials[1]
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = preRegistrationRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion

                if (!Framework.Common.Tools.WellWrittenEmail(preRegistrationRequest.Email))
                {
                    var validate = Models.Response.Error("InvalidEmail");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }

                if (preRegistrationRequest.Password != preRegistrationRequest.ConfirmPassword)
                {
                    var validate = Models.Response.Error("PasswordNotConfirm");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }

                var passwordEncrypted     = BC.HashPassword(preRegistrationRequest.Password);
                Core.Entity.Client client = new Core.Entity.Client()
                {
                    Email                  = preRegistrationRequest.Email,
                    Ci                     = preRegistrationRequest.Ci,
                    CiExpedition           = preRegistrationRequest.CiExpedition,
                    Password               = passwordEncrypted,
                    AcceptTerms            = preRegistrationRequest.AcceptTerms,
                    VerificationTokenEmail = Framework.Common.Tools.RandomTokenString(),
                    CreationUser           = preRegistrationRequest.AppUserId
                };
                var clientCreateAcountInsert = _client.InsertIfNotexist(client);
                if (clientCreateAcountInsert.Data == null)
                {
                    response.Data    = null;
                    response.Message = clientCreateAcountInsert.Message;
                    response.State   = clientCreateAcountInsert.State;
                    return(BadRequest(response));
                }
                var newClient = (Core.Entity.Client)clientCreateAcountInsert.Data;


                var linkToken = _configuration.GetValue <string>("Connectors_Email:link") + string.Format("?token={0}", newClient.VerificationTokenEmail);
                var withOriginMessageVerificationEmail    = _configuration.GetValue <string>("Connectors_Email:WithOriginMessageVerificationEmail");
                var withoutOriginMessageVerificationEmail = _configuration.GetValue <string>("Connectors_Email:WithoutOriginMessageVerificationEmail");
                _emailmanager.SendEmail(newClient.Email, "Verificacion de Correo", withOriginMessageVerificationEmail, withoutOriginMessageVerificationEmail, "VERIFICACIÓN DE CORREO PARA ACTIVAR SU CUENTA", Request.Headers["origin"], linkToken, newClient.VerificationTokenEmail);

                response.Data = new PreRegistrationResponse
                {
                    Email = newClient.Email,
                    Ci    = newClient.Ci,
                };
                response.Message = Models.Response.CommentMenssage("PreRegistredCompleted");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = preRegistrationRequest.AppUserId,
                    Request       = Framework.Common.SerializeJson.ToObject(preRegistrationRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", preRegistrationRequest, response);
            }
        }
Ejemplo n.º 4
0
        public IActionResult ResetPassword([FromBody] ResetPasswordRequest resetPasswordRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(resetPasswordRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <ForgotPasswordResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Parameter)).Split(':');
                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = resetPasswordRequest.PublicToken,
                    UserName = credentials[0],
                    Password = credentials[1]
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = resetPasswordRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion
                if (resetPasswordRequest.Password != resetPasswordRequest.ConfirmPassword)
                {
                    var validate = Models.Response.Error("PasswordNotConfirm");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }
                var passwordEncrypted    = BC.HashPassword(resetPasswordRequest.Password);
                var clientChangePassword = _client.UpdateByEmailForChangePassword(resetPasswordRequest.Email, resetPasswordRequest.Token, passwordEncrypted);
                if (clientChangePassword.Data == null)
                {
                    response.Data    = null;
                    response.Message = clientChangePassword.Message;
                    response.State   = clientChangePassword.State;
                    return(BadRequest(response));
                }

                response.Data = new ForgotPasswordResponse
                {
                    Email = resetPasswordRequest.Email
                };
                response.Message = Models.Response.CommentMenssage("PasswordResetSuccessful");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = resetPasswordRequest.AppUserId,
                    Request       = Framework.Common.SerializeJson.ToObject(resetPasswordRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", resetPasswordRequest, response);
            }
        }
Ejemplo n.º 5
0
        public IActionResult ForgotPassword([FromBody] ForgotPasswordRequest forgotPasswordRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(forgotPasswordRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <ForgotPasswordResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Parameter)).Split(':');
                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = forgotPasswordRequest.PublicToken,
                    UserName = credentials[0],
                    Password = credentials[1]
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = forgotPasswordRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion
                var clientUpdateResetToken = _client.UpdateClientForgotPassword(forgotPasswordRequest.Email, Framework.Common.Tools.RandomTokenString());
                if (clientUpdateResetToken.Data == null)
                {
                    response.Data    = null;
                    response.Message = clientUpdateResetToken.Message;
                    response.State   = clientUpdateResetToken.State;
                    return(BadRequest(response));
                }
                var clientResetedToken = (Core.Entity.Client)clientUpdateResetToken.Data;

                var linkToken = _configuration.GetValue <string>("Connectors_Email:linkForgotPassword") + string.Format("?token={0}", clientResetedToken.ResetToken);
                var withOriginMessageVerificationEmail    = _configuration.GetValue <string>("Connectors_Email:WithOriginMessagesendPasswordResetEmail");
                var withoutOriginMessageVerificationEmail = _configuration.GetValue <string>("Connectors_Email:WithoutOriginMessagesendPasswordResetEmail");
                _emailmanager.SendEmail(clientResetedToken.Email, "Restablecer Contraseña", withOriginMessageVerificationEmail, withoutOriginMessageVerificationEmail, "VERIFICACIÓN DE CORREO PARA RECUPERAR CONTRASEÑA", Request.Headers["origin"], linkToken, clientResetedToken.ResetToken);

                response.Data = new ForgotPasswordResponse
                {
                    Email = clientResetedToken.Email
                };
                response.Message = Models.Response.CommentMenssage("ForgotPasswordCheck");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = forgotPasswordRequest.AppUserId,
                    Request       = Framework.Common.SerializeJson.ToObject(forgotPasswordRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", forgotPasswordRequest, response);
            }
        }
Ejemplo n.º 6
0
        public IActionResult MyInformation([FromBody] MyInformationRequest myInformationRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(myInformationRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <MyInformationResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = myInformationRequest.PublicToken,
                    UserName = myInformationRequest.UserAplication,
                    Password = myInformationRequest.PasswordAplication
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = myInformationRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentialToken        = authHeader.Parameter;
                var responsetokenValidated = _tokenManager.GetPrincipalFromExpiredToken(credentialToken);

                if (responsetokenValidated.Data == null)
                {
                    response.Data    = null;
                    response.Message = responsetokenValidated.Message;
                    response.State   = responsetokenValidated.State;
                    return(BadRequest(response));
                }
                var principal   = (ClaimsPrincipal)responsetokenValidated.Data;
                var claimList   = principal.Claims.ToList();
                var verifyEmail = claimList[2].Value;

                if (!verifyEmail.Equals(myInformationRequest.Email.Trim()))
                {
                    var validate = Models.Response.Error("ClientNotSession");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }

                var client = _client.GetInformationClient(myInformationRequest.Email);

                if (client.Data == null)
                {
                    response.Data    = null;
                    response.Message = client.Message;
                    response.State   = client.State;
                    return(BadRequest(response));
                }
                var clientInformation = (MyInformationResponse)client.Data;

                response.Data    = clientInformation;
                response.Message = Models.Response.CommentMenssage("CorrectUserInformation");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = "token",
                    Request       = Framework.Common.SerializeJson.ToObject(myInformationRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", myInformationRequest, response);
            }
        }
Ejemplo n.º 7
0
        public IActionResult RegistrationComplete([FromBody] RegistrationCompleteRequest registrationCompleteRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(registrationCompleteRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <RegistrationCompleteResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                //AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                //var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Parameter)).Split(':');
                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = registrationCompleteRequest.PublicToken,
                    UserName = registrationCompleteRequest.UserAplication,
                    Password = registrationCompleteRequest.PasswordAplication
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = registrationCompleteRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentialToken        = authHeader.Parameter;
                var responsetokenValidated = _tokenManager.GetPrincipalFromExpiredToken(credentialToken);

                if (responsetokenValidated.Data == null)
                {
                    response.Data    = null;
                    response.Message = responsetokenValidated.Message;
                    response.State   = responsetokenValidated.State;
                    return(BadRequest(response));
                }
                var principal   = (ClaimsPrincipal)responsetokenValidated.Data;
                var claimList   = principal.Claims.ToList();
                var verifyEmail = claimList[2].Value;

                if (!verifyEmail.Equals(registrationCompleteRequest.Email.Trim()))
                {
                    var validate = Models.Response.Error("ClientNotSession");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }

                /*if (registrationCompleteRequest.Age <= 18 && (DateTime.Now.Year - registrationCompleteRequest.Birthdate.Year) <= 18)
                 * {
                 *  var validate = Models.Response.Error("UserNotAgeApropiate");
                 *  response.Data = null;
                 *  response.Message = validate.Message;
                 *  response.State = validate.State;
                 *  return BadRequest(response);
                 * }*/
                Core.Entity.Client client = new Core.Entity.Client()
                {
                    Email            = registrationCompleteRequest.Email,
                    NameComplete     = registrationCompleteRequest.NameComplete,
                    Gender           = registrationCompleteRequest.Gender,
                    Birthdate        = registrationCompleteRequest.Birthdate,
                    Age              = registrationCompleteRequest.Age,
                    Department       = registrationCompleteRequest.Department,
                    City             = registrationCompleteRequest.City,
                    Address          = registrationCompleteRequest.Address,
                    CellPhone        = registrationCompleteRequest.CellPhone,
                    Phone            = registrationCompleteRequest.Phone,
                    EducationLevel   = registrationCompleteRequest.EducationLevel,
                    Disability       = registrationCompleteRequest.Disability,
                    TypeDisability   = registrationCompleteRequest.TypeDisability,
                    ReferenceName    = registrationCompleteRequest.ReferenceName,
                    ReferencePhone   = registrationCompleteRequest.ReferencePhone,
                    ModificationUser = registrationCompleteRequest.AppUserId
                };

                var clientCreateAcountInsert = _client.UpdateRegistrationComplete(client, registrationCompleteRequest.AppUserId);
                if (!(Convert.ToInt32(clientCreateAcountInsert.Data) > 0))
                {
                    response.Data    = null;
                    response.Message = clientCreateAcountInsert.Message;
                    response.State   = clientCreateAcountInsert.State;
                    return(BadRequest(response));
                }

                response.Data = new RegistrationCompleteResponse
                {
                    Email = registrationCompleteRequest.Email,
                    RegistrationComplete = true,
                    NameComplete         = registrationCompleteRequest.NameComplete
                };
                response.Message = Models.Response.CommentMenssage("RegistrationCompleted");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = registrationCompleteRequest.AppUserId,
                    Request       = Framework.Common.SerializeJson.ToObject(registrationCompleteRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", registrationCompleteRequest, response);
            }
        }
Ejemplo n.º 8
0
        public IActionResult Login([FromBody] AuthenticateRequest authenticateRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(authenticateRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <AuthenticateResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Parameter)).Split(':');
                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = authenticateRequest.PublicToken,
                    UserName = credentials[0],
                    Password = credentials[1]
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = authenticateRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion
                var clientValidated = _client.GetClientValitated(authenticateRequest.Email, authenticateRequest.Password);
                if (clientValidated.Data == null)
                {
                    response.Data    = null;
                    response.Message = clientValidated.Message;
                    response.State   = clientValidated.State;
                    return(BadRequest(response));
                }

                var clientLogin = (Core.Entity.Client)clientValidated.Data;
                if (!clientLogin.IsVerified)
                {
                    var validate = Models.Response.Error(null, "NotVerifyEmail");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }
                var claims = new List <Claim>
                {
                    new Claim(JwtRegisteredClaimNames.Iat, Guid.NewGuid().ToString()),
                    new Claim(JwtRegisteredClaimNames.UniqueName, clientLogin.NameComplete),
                    new Claim(JwtRegisteredClaimNames.Email, clientLogin.Email),
                };
                var accessToken = _tokenManager.GenerateAccessToken(claims);

                string ipAddress = "";
                if (Request.Headers.ContainsKey("X-Forwarded-For"))
                {
                    ipAddress = Request.Headers["X-Forwarded-For"];
                }
                else
                {
                    ipAddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
                }
                var refreshToken = _tokenManager.GenerateRefreshToken(ipAddress, _timeExpirationTokenRefresh);

                refreshToken.CreationUser = authenticateRequest.AppUserId;
                refreshToken.EmailClient  = authenticateRequest.Email;

                var refreshTokenInsertClient = _refreshToken.Insert(refreshToken);

                if (refreshTokenInsertClient.Data == null)
                {
                    response.Data    = null;
                    response.State   = refreshTokenInsertClient.State;
                    response.Message = refreshTokenInsertClient.Message;

                    return(BadRequest(response));
                }

                var refreshTokenRemove = _refreshToken.RemoveOldRefreshTokens(authenticateRequest.Email, _configuration.GetValue <int>("JwtSettings:RefreshTokenTTL"));
                if (refreshTokenRemove.Data == null)
                {
                    response.Data    = null;
                    response.State   = refreshTokenRemove.State;
                    response.Message = refreshTokenRemove.Message;

                    return(BadRequest(response));
                }

                var cookieOptions = new CookieOptions
                {
                    //HttpOnly = true,
                    Expires  = DateTime.UtcNow.AddDays(_configuration.GetValue <double>("JwtSettings:TimeExpirationTokenRefresh")),
                    SameSite = SameSiteMode.None,
                    Secure   = true,
                };
                Response.Cookies.Append("refreshToken", refreshToken.Token, cookieOptions);

                var clientValidatedData = (Core.Entity.Client)clientValidated.Data;
                response.Data = new AuthenticateResponse()
                {
                    Email              = clientValidatedData.Email,
                    CurrentModule      = clientValidatedData.CurrentModule,
                    Role               = clientValidatedData.Role == Core.Entity.Role.Admin ? "Admin" : "User",
                    Verify             = clientValidatedData.IsVerified,
                    RegistredCompleted = clientValidatedData.CompleteRegister,
                    Token              = accessToken,
                    RefreshToken       = refreshToken.Token
                };
                response.Message = Models.Response.CommentMenssage("LoginSuccessful");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = "token",
                    Request       = Framework.Common.SerializeJson.ToObject(authenticateRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", authenticateRequest, response);
            }
        }
Ejemplo n.º 9
0
        public IActionResult AnswerQuestion([FromBody] AnswersRequest answersRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(answersRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <AnswersResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = answersRequest.PublicToken,
                    UserName = answersRequest.UserAplication,
                    Password = answersRequest.PasswordAplication
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = answersRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentialToken        = authHeader.Parameter;
                var responsetokenValidated = _tokenManager.GetPrincipalFromExpiredToken(credentialToken);

                if (responsetokenValidated.Data == null)
                {
                    response.Data    = null;
                    response.Message = responsetokenValidated.Message;
                    response.State   = responsetokenValidated.State;
                    return(BadRequest(response));
                }
                var principal   = (ClaimsPrincipal)responsetokenValidated.Data;
                var claimList   = principal.Claims.ToList();
                var verifyEmail = claimList[2].Value;

                if (!verifyEmail.Equals(answersRequest.Email.Trim()))
                {
                    var validate = Models.Response.Error("ClientNotSession");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }

                var moduleClient = _clientModule.InsertClientModuleAnswers(answersRequest.Email, answersRequest.ModuleNumber, answersRequest.AppUserId);

                if (moduleClient.Data == null)
                {
                    response.Data    = null;
                    response.Message = moduleClient.Message;
                    response.State   = moduleClient.State;
                    return(BadRequest(response));
                }

                var      moduleData          = (Core.Entity.Coupon)moduleClient.Data;
                var      contestDate         = _configuration.GetValue <string>("ContestDate");
                var      separateDate        = contestDate.Split("/");
                DateTime contestDateFormated = new DateTime(Convert.ToInt32(separateDate[2]), Convert.ToInt32(separateDate[1]), Convert.ToInt32(separateDate[0]));
                string   dateInText          = String.Format(new CultureInfo("es-BO"), "{0:D}", contestDateFormated);
                var      messageCoupon       = _configuration.GetValue <string>("Connectors_Email:MessageCoupon");
                _emailmanager.SendEmail(claimList[2].Value, "Finalización de módulo", messageCoupon, messageCoupon, "¡FELICIDADES!", Request.Headers["origin"], "", "", moduleData.CouponNumber, moduleData.CouponRegistred, dateInText);


                AnswersResponse questionAswerResponse = new AnswersResponse()
                {
                    Email = answersRequest.Email
                };
                response.Data    = questionAswerResponse;
                response.Message = Models.Response.CommentMenssage("AnswerRegistred");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = "token",
                    Request       = Framework.Common.SerializeJson.ToObject(answersRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", answersRequest, response);
            }
        }
Ejemplo n.º 10
0
        public IActionResult GetQuestionsAswer([FromBody] QuestionAswerRequest questionAswerRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(questionAswerRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <QuestionAswerResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                //var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Parameter)).Split(':');
                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = questionAswerRequest.PublicToken,
                    UserName = questionAswerRequest.UserAplication,
                    Password = questionAswerRequest.PasswordAplication
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = questionAswerRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion

                var answerAndQuestion = _module.GetAnswerAndQuestions(questionAswerRequest.ModuleNumber);
                if (answerAndQuestion.Data == null)
                {
                    response.Data    = null;
                    response.Message = answerAndQuestion.Message;
                    response.State   = answerAndQuestion.State;
                    return(Unauthorized(response));
                }
                var answerAndQuestionResponse = (QuestionAswerResponse)answerAndQuestion.Data;
                foreach (QuestionAswerResponse.Question question in answerAndQuestionResponse.Questions)
                {
                    foreach (string answer in question.AnswerWithoutProcess.Split("@"))
                    {
                        var answerResponse = answer.Split(":");
                        question.Answers.Add(new QuestionAswerResponse.Question.Answer
                        {
                            IdAnswer     = Convert.ToInt64(answerResponse[0]),
                            DetailAnswer = answerResponse[1].ToString(),
                            State        = answerResponse[2].Equals("1")
                        });
                    }
                }
                response.Data    = answerAndQuestionResponse;
                response.Message = Models.Response.CommentMenssage("QuestionsAnswersSuccessful");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = "token",
                    Request       = Framework.Common.SerializeJson.ToObject(questionAswerRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", questionAswerRequest, response);
            }
        }
Ejemplo n.º 11
0
        public IActionResult RevokeToken([FromBody] RevokeRequest revokeRequest)
        {
            Logger.Debug("Request: {0}", Framework.Common.SerializeJson.ToObject(revokeRequest));
            DateTime dateRequest   = DateTime.Now;
            var      response      = new IResponse <RevokeResponse>();
            string   correlationId = string.Empty;

            try
            {
                #region Authorization Usuario y Contraseña
                if (string.IsNullOrEmpty(Request.Headers["Authorization"]))
                {
                    var validate = Models.Response.Error(null, "NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }

                //AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                //var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authHeader.Parameter)).Split(':');
                correlationId = Request.Headers["Correlation-Id"].ToString();

                Core.Entity.User user = new Core.Entity.User()
                {
                    Public   = revokeRequest.PublicToken,
                    UserName = revokeRequest.UserAplication,
                    Password = revokeRequest.PasswordAplication
                };
                var userAuthenticate = _user.Authenticate(user);
                if (userAuthenticate.Data == null)
                {
                    var validate = Models.Response.Error("NotAuthenticated");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                Core.Entity.UserPolicy userPolicy = new Core.Entity.UserPolicy()
                {
                    AppUserId = revokeRequest.AppUserId,
                    IdUser    = ((Core.Entity.User)userAuthenticate.Data).Id
                };
                Core.Entity.Policy policy = new Core.Entity.Policy()
                {
                    Name = Request.Path.Value
                };
                var userPolicyAuthorize = _userPolicy.Authorize(userPolicy, policy);
                if (userPolicyAuthorize.Data == null)
                {
                    var validate = Models.Response.Error("NotUnauthorized");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(Unauthorized(response));
                }
                #endregion

                AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentialToken        = authHeader.Parameter;
                var responsetokenValidated = _tokenManager.GetPrincipalFromExpiredToken(credentialToken);

                if (responsetokenValidated.Data == null)
                {
                    response.Data    = null;
                    response.Message = responsetokenValidated.Message;
                    response.State   = responsetokenValidated.State;
                    return(BadRequest(response));
                }
                var principal   = (ClaimsPrincipal)responsetokenValidated.Data;
                var claimList   = principal.Claims.ToList();
                var verifyEmail = claimList[2].Value;

                if (!verifyEmail.Equals(revokeRequest.Email.Trim()))
                {
                    var validate = Models.Response.Error("ClientNotSession");
                    response.Data    = null;
                    response.Message = validate.Message;
                    response.State   = validate.State;
                    return(BadRequest(response));
                }

                var token = revokeRequest.Token ?? Request.Cookies["refreshToken"];

                string ipAddress = "";
                if (Request.Headers.ContainsKey("X-Forwarded-For"))
                {
                    ipAddress = Request.Headers["X-Forwarded-For"];
                }
                else
                {
                    ipAddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
                }
                var revokeToken = _refreshToken.RevokeToken(token, ipAddress);
                if (revokeToken.Data == null)
                {
                    response.Data    = null;
                    response.State   = revokeToken.State;
                    response.Message = revokeToken.Message;

                    return(BadRequest(response));
                }

                response.Data = new RevokeResponse
                {
                    Token = revokeRequest.Token
                };
                response.Message = Models.Response.CommentMenssage("TokenRevokeSuccessful");
                response.State   = "000";
                return(Ok(response));
            }
            catch (Exception ex)
            {
                Logger.Error("Message: {0}; Exception: {1}", ex.Message, Framework.Common.SerializeJson.ToObject(ex));
                response.Data    = null;
                response.Message = "Error General";
                response.State   = "099";
                return(BadRequest(response));
            }
            finally
            {
                DateTime dateResponse = DateTime.Now;
                Core.Entity.ConsumptionHistory consumptionHistory = new Core.Entity.ConsumptionHistory
                {
                    ApiName       = Request.Path.Value,
                    Host          = Dns.GetHostName() + ":" + Request.Host.Port,
                    CorrelationId = correlationId,
                    AppUserId     = revokeRequest.AppUserId,
                    Request       = Framework.Common.SerializeJson.ToObject(revokeRequest),
                    DateRequest   = dateRequest,
                    Response      = Framework.Common.SerializeJson.ToObject(response),
                    DateResponse  = dateResponse,
                    CodeResponse  = response.State
                };
                _consumptionHistory.Insert(consumptionHistory);
                Logger.Debug("Request: {0} Response: {1}", revokeRequest, response);
            }
        }