Ejemplo n.º 1
0
        public async Task <IActionResult> SaveImage(SaveImage saveImage)
        {
            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                SaveImageBroker saveImageBroker = new SaveImageBroker {
                    EndPoint     = "client/saveImage",
                    FunctionName = Utilitary.postGenericBroker,
                    documentId   = jwt.UserName,
                    documentType = jwt.DocumentType
                };

                var saveImageResponse = _broker.SendBroker <JsonResponseGeneric>(saveImageBroker);

                if (saveImageResponse.CodigoError == Enums.GetEnumDescription(ResponseCode.Fail))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(saveImageResponse.DescripcionError) ? saveImageResponse.DescripcionError : "Hubo un inconveniente al tratar de actualizar la imagen del cliente")));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetKeyCard()
        {
            Coordenate coordenate;

            try
            {
                JwtData jwt  = (JwtData)RouteData.Values["jwtData"];
                var     type = string.IsNullOrEmpty(jwt.DocumentType) ? UserType.Personal : UserType.Empresarial;

                coordenate = await _authEmpresarialRepository.GetKeyCardCoordenate(type);

                if (string.IsNullOrEmpty(coordenate.positionNumber))
                {
                    return(Unauthorized(new FrontStatusCode(coordenate.Messages)));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            return(Ok(new KeyCardPosition()
            {
                Position = coordenate.positionNumber
            }));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> DeleteBeneficiary(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(BadRequest(new FrontStatusCode("Debes especificar el Identificador del beneficiario.")));
            }

            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                var response = _broker.SendBroker <DeleteBeneficiary>(new DeleteBeneficiary()
                {
                    BeneficiaryId = id
                });

                if (response.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(response.DescripcionError) ? response.DescripcionError : "Hubo un inconveniente al tratar de guardar el beneficiario")));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok());
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> GetToken(string DeviceId)
        {
            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                var response = _broker.SendBroker <GenerateTransactionToken>(new GenerateTransactionToken()
                {
                    UserName = jwt.UserName,
                    DeviceId = DeviceId
                });

                if (string.IsNullOrEmpty(response.Code))
                {
                    return(StatusCode(502, Enums.GetEnumDescription(ApiMessages.BrokerNoResponse)));
                }

                if (response.Code == Enums.GetEnumDescription(ResponseCode.Fail))
                {
                    return(BadRequest(new FrontStatusCode("Hubo un error al refrescar el tokén de transacción y/o DeviceId inválido")));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok());
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> SavingsPlan(SavingPlan savingPlan)
        {
            try
            {
                JwtData jwt    = (JwtData)RouteData.Values["jwtData"];
                var     mapper = Utilitary.CreateMapper <SavingPlan, SavingPlanRequestBroker>();

                var savingMapped = mapper(savingPlan);
                savingMapped.EndPoint     = "client/saveSavingsPlan";
                savingMapped.FunctionName = Utilitary.postGenericBroker;
                savingMapped.documentId   = jwt.UserName;
                savingMapped.documentType = jwt.DocumentType;

                var saveImageResponse = _broker.SendBroker <JsonResponseGeneric>(savingMapped);

                if (saveImageResponse.CodigoError == Enums.GetEnumDescription(ResponseCode.Fail))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(saveImageResponse.DescripcionError) ? saveImageResponse.DescripcionError : "Hubo un inconveniente al tratar de actualizar el plan de ahorro del cliente")));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok());
        }
Ejemplo n.º 6
0
        public string CreateToken(JwtData tokenData)
        {
            // Set the expiration time of the token
            tokenData.exp = DateTime.Now.AddMinutes(_configurationHelper.GetDouble(CommonNames.JWT_LIFE_TIME_IN_MINUTES)).ToUnixDateTime();

            var token = JsonWebToken.Encode(tokenData, _configurationHelper.GetString(CommonNames.JWT_KEY), JwtHashAlgorithm.HS256);

            return(token);
        }
Ejemplo n.º 7
0
        public void TestMutability()
        {
            var data = new JwtData("iss", "sub", "aud", "kid");

            Assert.AreEqual(data.Issuer, "iss");
            Assert.AreEqual(data.Subject, "sub");
            Assert.AreEqual(data.Audience, "aud");
            Assert.AreEqual(data.KeyId, "kid");
        }
Ejemplo n.º 8
0
            public static JwtData InitByExternalToken(JwtToken token)
            {
                var result = new JwtData();

                result.AccessToken      = token.Token;
                result.IssuedOn         = token.IssuedOn;
                result.ExpiresInSeconds = token.ExpiresInSeconds;
                result.TokenType        = "Bearer";
                result.ClientId         = GetAppSidFromJwtToken(token.Token);

                return(result);
            }
        private AuthenticationData CreateAuthenticationData(AuthenticationToken token = null, TimeSpan?timeToLive = null)
        {
            var encodedJwt = CreateJsonWebToken(token, timeToLive);
            var jwt        = new JwtData <AuthenticationToken>(encodedJwt, _serializer);

            return(new AuthenticationData.Builder
            {
                AccessToken = jwt,
                RefreshToken = Guid.NewGuid().ToStringInvariant(),
                Expiration = jwt.Payload.Expiration,
            });
        }
        private static IDictionary <string, object> CreateJwtPayload(string scope, MaskinportenClientConfiguration configuration)
        {
            var jwtData = new JwtData();

            jwtData.Payload.Add("iss", configuration.Issuer);
            jwtData.Payload.Add("aud", configuration.Audience);
            jwtData.Payload.Add("iat", UnixEpoch.GetSecondsSince(DateTime.UtcNow));
            jwtData.Payload.Add("exp", UnixEpoch.GetSecondsSince(DateTime.UtcNow.AddMinutes(JwtExpireTimeInMinutes)));
            jwtData.Payload.Add("scope", scope);
            jwtData.Payload.Add("jti", Guid.NewGuid());

            return(jwtData.Payload);
        }
Ejemplo n.º 11
0
        public void JwtData_With_Ctor_Params()
        {
            var headers = _fixture.Create <Dictionary <string, object> >();
            var payload = _fixture.Create <Dictionary <string, object> >();

            var jwtData = new JwtData(headers, payload);

            jwtData.Header.Should()
            .Contain(headers, "because the DTO's header must match the one provided");

            jwtData.Payload.Should()
            .Contain(payload, "because the DTO's payload must match the one provided");
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> GetProducts()
        {
            List <ProductView> products = new List <ProductView>();

            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                var productResponse = _broker.GetFromBroker <GetProductsByDocument>(new GetProductsByDocument()
                {
                    DocumentId = jwt.UserName
                });

                foreach (var product in productResponse.Data)
                {
                    products.Add(new ProductView()
                    {
                        id             = product.ProductNumber,
                        balance        = !string.IsNullOrEmpty(product.AvailableBalance) ? product.AvailableBalance.Trim() : "",
                        isDefault      = product.IsFavorite,
                        currency       = product.Currency,
                        currencySymbol = Utilitary.GetCurrencySymbol(product.Currency),
                        type           = Utilitary.GetProductTypeIdByDescription(product.ProducType),
                        alias          = product.Alias,
                        entity         = product.ProviderName,
                        name           = product.Name,
                        subtype        = product.Subtype,
                        message        = product.Message
                    });
                }


                if (productResponse.CodigoError == Enums.GetEnumDescription(ResponseCode.Fail))
                {
                    return(BadRequest(new FrontStatusCode("Hubo un inconveniente al obtener la respesta de los productos")));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(products));
        }
Ejemplo n.º 13
0
        public virtual string Authenticate([FromUri] DemoAuthenticationModel authenticationModel)
        {
            if (ModelState.IsValid)
            {
                var tokenData = new JwtData
                {
                    Id                = authenticationModel.Id,
                    PhoneNumber       = authenticationModel.MobilePhone,
                    IsCaptchaRequired = false,
                    ClientProcessStep = ClientProcessStep.NA
                };

                return("token : " + JwtService.CreateToken(tokenData));
            }

            throw ResponseBuilderService.GenerateValidationResponse(ModelState);
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> Send(Transaction trx)
        {
            JsonResponseGeneric resultTransactionSend;

            try
            {
                JwtData jwt    = (JwtData)RouteData.Values["jwtData"];
                var     mapper = Utilitary.CreateMapper <Transaction, TransactionBroker>();

                var trxMapped = mapper(trx);

                trxMapped.EndPoint           = "transaction/send";
                trxMapped.documentIdSender   = jwt.UserName;
                trxMapped.documentTypeSender = jwt.DocumentType;
                trxMapped.FunctionName       = Utilitary.postGenericBroker;

                var saveTransaction = _broker.SendBroker <TransactionBroker>(trxMapped);

                if (saveTransaction == null && string.IsNullOrEmpty(saveTransaction.CodigoError))
                {
                    return(StatusCode(502, "Error de comunicacion con los sistemas externos."));
                }

                if (saveTransaction.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(saveTransaction.DescripcionError) ? saveTransaction.DescripcionError : "Hubo un inconveniente al tratar de recuperar los beneficiarios")));
                }



                resultTransactionSend = new JsonResponseGeneric {
                    CodigoError      = saveTransaction.CodigoError,
                    DescripcionError = saveTransaction.DescripcionError,
                    Data             = saveTransaction.Data
                };
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(resultTransactionSend));
        }
Ejemplo n.º 15
0
        public async Task <IActionResult> GetBenericiairyList()
        {
            List <BeneficiaryFrontList> beneficiaryResponse = new List <BeneficiaryFrontList>();

            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                var beneficiaryList = _broker.GetFromBroker <GetBeneficiaryList>(new GetBeneficiaryList()
                {
                    DocumentId = jwt.UserName
                });

                if (beneficiaryList == null && string.IsNullOrEmpty(beneficiaryList.CodigoError))
                {
                    return(StatusCode(502, "Error de comunicacion con los sistemas externos."));
                }

                if (beneficiaryList.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(beneficiaryList.DescripcionError) ? beneficiaryList.DescripcionError : "Hubo un inconveniente al tratar de recuperar los beneficiarios")));
                }

                foreach (var beneficiary in beneficiaryList.Data)
                {
                    beneficiaryResponse.Add(new BeneficiaryFrontList()
                    {
                        Id    = beneficiary.beneficiaryId.ToString(),
                        Image = beneficiary.photoImage,
                        Name  = beneficiary.name
                    });
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(beneficiaryResponse));
        }
Ejemplo n.º 16
0
        private async Task <AddOrUpdateBeneficiary> SaveBeneficiaryBroker(dynamic beneficiary)
        {
            JwtData jwt = (JwtData)RouteData.Values["jwtData"];

            var _beneficiary = new AddOrUpdateBeneficiary()
            {
                DocumentId          = jwt.UserName,
                FullName            = beneficiary.Name,
                BeneficiaryProducts = SplitBeneficiaryProducts(beneficiary.PaymeId, beneficiary.Phones, beneficiary.Products)
            };

            if (StringHelper.IsPropertyExist(beneficiary, "Id"))
            {
                _beneficiary.BeneficiaryId = beneficiary.Id;
            }

            await Task.CompletedTask;

            return(_broker.SendBroker <AddOrUpdateBeneficiary>(_beneficiary));
        }
Ejemplo n.º 17
0
        public void JwtData_With_Ctor_Params()
        {
            var headers = new Dictionary <string, string>
            {
                { "test", "header" }
            };

            var payload = new Dictionary <string, object>
            {
                { "test", "payload" }
            };

            var jwtData = new JwtData(headers, payload);

            Assert.Equal(jwtData.Header["test"], "header");
            Assert.Equal(jwtData.Payload["test"], "payload");

            jwtData.Payload.Add("payload01", "payload02");
            Assert.Equal(jwtData.Payload["payload01"], "payload02");
        }
Ejemplo n.º 18
0
            public static JwtData Deserialize(string content)
            {
                var result = new JwtData();
                Dictionary <string, object> dict =
                    JsonConvert.DeserializeObject <Dictionary <string, object> >(content);

                if (dict.ContainsKey("error"))
                {
                    result.Error            = dict["error"].ToString();
                    result.ErrorDescription = dict.ContainsKey("error_description") ? dict["error_description"].ToString() : "";
                }
                if (dict.ContainsKey("access_token"))
                {
                    //result.ClientId = dict["client_id"].ToString();
                    result.AccessToken      = dict["access_token"].ToString();
                    result.TokenType        = dict["token_type"].ToString();
                    result.ExpiresInSeconds = Convert.ToInt32(dict["expires_in"]);
                    result.IssuedOn         = DateTime.UtcNow;
                }
                return(result);
            }
Ejemplo n.º 19
0
        public async Task <IActionResult> GetTransactions(string account)
        {
            List <HistoryTransaction> listTransaction = new List <HistoryTransaction>();

            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                var responseListTransaction = _broker.SendBroker <JsonRequestGeneric>(
                    new JsonRequestGeneric("GetGeneric")
                {
                    EndPoint = "transaction/getList?Account=" + account
                }
                    );

                if (responseListTransaction == null && string.IsNullOrEmpty(responseListTransaction.CodigoError))
                {
                    return(StatusCode(502, "Error de comunicacion con los sistemas externos."));
                }

                if (responseListTransaction.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(responseListTransaction.DescripcionError) ? responseListTransaction.DescripcionError : "Hubo un inconveniente al tratar de recuperar los beneficiarios")));
                }

                if (responseListTransaction.Data != null)
                {
                    listTransaction = JsonConvert.DeserializeObject <List <HistoryTransaction> >(responseListTransaction.Data.ToString());
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(listTransaction));
        }
Ejemplo n.º 20
0
        public async Task <IActionResult> GetQrPin(string Pin)
        {
            TransactionQrCodeResp trxQr;

            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                var responsepinqrcode = _broker.SendBroker <JsonRequestGeneric>(
                    new JsonRequestGeneric("GetGeneric")
                {
                    EndPoint = "pinqrcode/getByPin?pin=" + Pin
                }
                    );

                if (responsepinqrcode == null && string.IsNullOrEmpty(responsepinqrcode.CodigoError))
                {
                    return(StatusCode(502, "Error de comunicacion con los sistemas externos."));
                }

                if (responsepinqrcode.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(responsepinqrcode.DescripcionError) ? responsepinqrcode.DescripcionError : "Hubo un inconveniente al tratar de recuperar los beneficiarios")));
                }


                trxQr = JsonConvert.DeserializeObject <TransactionQrCodeResp>(responsepinqrcode.Data.ToString());
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(trxQr));
        }
Ejemplo n.º 21
0
        public async Task <IActionResult> GetSavingsPlan()
        {
            SavingPlan savingPlan;

            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                var responseSavingPlan = _broker.SendBroker <JsonRequestGeneric>(
                    new JsonRequestGeneric("GetGeneric")
                {
                    EndPoint = "client/saveSavingsPlan?documentId=" + jwt.UserName + "&" + jwt.DocumentType
                }
                    );

                if (responseSavingPlan == null && string.IsNullOrEmpty(responseSavingPlan.CodigoError))
                {
                    return(StatusCode(502, "Error de comunicacion con los sistemas externos."));
                }

                if (responseSavingPlan.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(responseSavingPlan.DescripcionError) ? responseSavingPlan.DescripcionError : "Hubo un inconveniente al tratar de obtener el plan de ahorro de un cliente")));
                }


                savingPlan = JsonConvert.DeserializeObject <SavingPlan>(responseSavingPlan.Data.ToString());
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(savingPlan));
        }
Ejemplo n.º 22
0
        public async Task <IActionResult> AddQrPin(TransactionQrCode trxQr)
        {
            string pinqr;

            try
            {
                JwtData jwt    = (JwtData)RouteData.Values["jwtData"];
                var     mapper = Utilitary.CreateMapper <TransactionQrCode, TransactionQrCodeBroker>();

                var trxQrMapped = mapper(trxQr);
                trxQrMapped.EndPoint     = "pinqrcode/add";
                trxQrMapped.FunctionName = Utilitary.postGenericBroker;

                var responseAddpinqrcode = _broker.SendBroker <JsonResponseGeneric>(trxQrMapped);

                if (responseAddpinqrcode == null && string.IsNullOrEmpty(responseAddpinqrcode.CodigoError))
                {
                    return(StatusCode(502, "Error de comunicacion con los sistemas externos."));
                }

                if (responseAddpinqrcode.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(responseAddpinqrcode.DescripcionError) ? responseAddpinqrcode.DescripcionError : "Hubo un inconveniente al tratar de recuperar los beneficiarios")));
                }

                pinqr = JsonConvert.DeserializeObject <string>(responseAddpinqrcode.Data.ToString());
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(pinqr));
        }
Ejemplo n.º 23
0
        public async Task <IActionResult> ValidatePersonalKeyCard(ValidateKeyCard keyCard)
        {
            try
            {
                JwtData jwt  = (JwtData)RouteData.Values["jwtData"];
                var     type = string.IsNullOrEmpty(jwt.DocumentType) ? UserType.Personal : UserType.Empresarial;

                Coordenate coordenate = await _authPersonalRepository.GetKeyCardCoordenate(type);


                var brokerResponse = _authPersonalRepository.ValidateKeyCard(UserType.Personal, new KeyCardBase()
                {
                    KeyCardCoordinate = coordenate.positionNumber,
                    KeyCardValue      = keyCard.Value,
                    UserName          = jwt.UserName
                });

                if (string.IsNullOrEmpty(brokerResponse.validated.ToString()))
                {
                    return(StatusCode(502, Enums.GetEnumDescription(ApiMessages.BrokerNoResponse)));
                }

                if (brokerResponse.validated == false)
                {
                    return(BadRequest(new FrontStatusCode("Valor de la tarjéta de claves incorrecto")));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok());
        }
Ejemplo n.º 24
0
        public async Task <IActionResult> Get()
        {
            Profile profile = new Profile();

            try
            {
                JwtData jwtToken = (JwtData)RouteData.Values["jwtData"];

                var genericRequest = new GetGeneric <GenericProfile>(GenericEndPoints.ClientGet, jwtToken.UserName);

                var response = _broker.SendBroker <MQResponse4 <GenericProfile> >(genericRequest);


                if (response.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(response.DescripcionError) ? response.DescripcionError : "Hubo un inconveniente al tratar de recuperar el perfil de usuario")));
                }

                profile = new Profile()
                {
                    Email   = response.Data.Email,
                    Name    = response.Data.FullName,
                    PayMeID = response.Data.PaymeId,
                    Image   = response.Data.PhotoImage,
                    ExistInAlternateDomain = false
                };
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(profile));
        }
Ejemplo n.º 25
0
        public static AuthResponseData CreateAuthResponseData(Guid userAppKey, string userLogin, string systemAuthSecretKey, JwtData payloadData)

        {
            if (userAppKey != Guid.Empty && !string.IsNullOrEmpty(userLogin) &&
                !string.IsNullOrEmpty(systemAuthSecretKey) &&
                systemAuthSecretKey.Length < 20)
            {
                return(null);
            }

            // validate dates
            if (payloadData.CreateDate >= payloadData.ExpirationDate)
            {
                throw new InvalidDataException("CreateDate >= ExpirationDate");
            }

            if (DateTime.UtcNow >= payloadData.ExpirationDate)
            {
                throw new InvalidDataException("DateTime.UtcNow >= ExpirationDate");
            }

            var tokenHandler    = new JwtSecurityTokenHandler();
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new[]
                {
                    new Claim("UserAppKey", payloadData.UserAppKey.ToString()),
                    new Claim("CreateDate", payloadData.CreateDate.ToString(CultureInfo.CurrentCulture)),
                    new Claim("ExpirationDate", payloadData.ExpirationDate.ToString(CultureInfo.CurrentCulture)),
                }),
                Expires            = payloadData.ExpirationDate,
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(systemAuthSecretKey ?? string.Empty)), SecurityAlgorithms.HmacSha256Signature)
            };

            var token      = tokenHandler.CreateJwtSecurityToken(tokenDescriptor);
            var barerToken = tokenHandler.WriteToken(token);

            return(new AuthResponseData
            {
                UserAppKey = userAppKey,
                UserEmail = userLogin,
                BarerToken = barerToken
            });
        }
Ejemplo n.º 26
0
        public Authenticate.Response Authenticate(Authenticate.Request dto)
        {
            //Recupera o usuário
            var usuarioModel = this.ConsultaUsuario(new EFTJUserweb()
            {
                Login = dto.Login
            });

            if (usuarioModel == null)
            {
                usuarioModel = this.ConsultaUsuario(new EFTJUserweb()
                {
                    CPF = dto.Login
                });
            }

            if (usuarioModel == null)
            {
                return(null);
            }

            var password = String.Join("", System.Security.Cryptography.SHA1.Create().ComputeHash(
                                           Encoding.UTF8.GetBytes(
                                               String.Concat(usuarioModel.pwdKey, dto.Password)
                                               )
                                           ).Select(x => x.ToString("X2"))).ToLower();

            //Valida o Usuário e Senha
            this.Login(new SGDAU.Seguranca.Domain.Models.EFTJUserweb()
            {
                Login    = dto.Login,
                PassWord = password
            });

            var jwtData = new JwtData()
            {
                AllocatedVaraID = usuarioModel.VaraAlocacao,
                BusinessUnitID  = usuarioModel.EFTJUnidadeID,
                PrinterID       = usuarioModel.EFTJImpressoraID,
                RegionID        = usuarioModel.EFRegiaoID,
                GroupID         = usuarioModel.EFGrupoID,
                CategoryID      = usuarioModel.Categoria,
                Name            = usuarioModel.Nome,
                Login           = dto.Login,
                UserID          = usuarioModel.EFUserID,
                ClientID        = dto.ClientId
            };

            //Calcula o hash de validação com os dados do usuário
            jwtData.Hash = JwtData.CalculateHash(this.configurationService, jwtData);

            //Gera o token JWT
            var audience        = dto.ClientId;
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(this.configurationService.GetSection("Authentication:SecretKey").Value);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Issuer    = this.configurationService.GetSection("Authentication:IssuerName").Value,
                IssuedAt  = DateTime.UtcNow,
                NotBefore = DateTime.UtcNow,
                Subject   = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, usuarioModel.Nome),
                    new Claim(ClaimTypes.UserData, Newtonsoft.Json.JsonConvert.SerializeObject(jwtData))
                }),
                Expires            = DateTime.UtcNow.AddHours(8),
                Audience           = audience,
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            ////Limpa a lista de Acessos do UserData
            //jwtData.AccessPermissions = new AccessDTO[0];

            return(new Authenticate.Response()
            {
                UserData = jwtData,
                Token = tokenHandler.WriteToken(tokenHandler.CreateToken(tokenDescriptor))
            });
        }
Ejemplo n.º 27
0
 public JwtAuth(JwtToken authToken) : base(AuthType.Jwt, "")
 {
     m_authData   = JwtData.InitByExternalToken(authToken);
     m_authFlow   = AuthFlow.Obtained;
     ExternalAuth = true;
 }
Ejemplo n.º 28
0
 protected override void AuthDataDeserializeImpl(string content)
 {
     m_authData = JwtData.Deserialize(content);
 }
Ejemplo n.º 29
0
 private JsonWebToken(JwtData data) => Data = data;
Ejemplo n.º 30
0
        public async Task <IActionResult> GetBenericiairy(string id)
        {
            Beneficiary beneficiaryResponse = new Beneficiary();

            try
            {
                JwtData jwt = (JwtData)RouteData.Values["jwtData"];

                var response = _broker.GetFromBroker <GetBeneficiary>(new GetBeneficiary()
                {
                    DocumentId    = jwt.UserName,
                    BeneficiaryId = id
                });

                if (response == null || string.IsNullOrEmpty(response.CodigoError))
                {
                    return(StatusCode(502, "Error de comunicacion con los sistemas externos."));
                }

                if (response.CodigoError != Enums.GetEnumDescription(ResponseCode.Success))
                {
                    return(BadRequest(new FrontStatusCode(!string.IsNullOrEmpty(response.DescripcionError) ? response.DescripcionError : "Hubo un inconveniente al tratar de recuperar el beneficiario")));
                }


                var paymeId = response.Data.ListBeneficiaryProducts != null?response.Data.ListBeneficiaryProducts.FirstOrDefault(p => p.beneficiaryProductTypeId == (int)ProductType.PaymeId) : new BeneficiaryProduct();

                var phones = response.Data.ListBeneficiaryProducts != null?response.Data.ListBeneficiaryProducts.Where(m =>
                                                                                                                       m.beneficiaryProductTypeId == (int)ProductType.Phone &&
                                                                                                                       m.beneficiaryProductTypeId != (int)ProductType.PaymeId).Select(x => new BeneficiaryProduct()
                {
                    beneficiaryId            = x.beneficiaryProductId,
                    value                    = x.value,
                    beneficiaryProductTypeId = x.beneficiaryProductTypeId
                }).ToList() : new List <BeneficiaryProduct>();

                var products = response.Data.ListBeneficiaryProducts != null?response.Data.ListBeneficiaryProducts.Where(m =>
                                                                                                                         m.beneficiaryProductTypeId != (int)ProductType.Phone &&
                                                                                                                         m.beneficiaryProductTypeId != (int)ProductType.PaymeId).Select(x => new BeneficiaryProduct()
                {
                    beneficiaryId            = x.beneficiaryProductId,
                    value                    = x.value,
                    beneficiaryProductTypeId = x.beneficiaryProductTypeId
                }).ToList() : new List <BeneficiaryProduct>();


                beneficiaryResponse = new Beneficiary()
                {
                    Id      = response.Data.beneficiaryId.ToString(),
                    Image   = response.Data.photoImage,
                    Name    = response.Data.name,
                    PaymeId = paymeId != null ? paymeId.value : string.Empty,
                    Phones  = phones != null?phones.Select(x => new BeneficiaryProducts()
                    {
                        Id          = x.beneficiaryProductId,
                        Product     = x.value,
                        ProductType = (ProductType)x.beneficiaryProductTypeId
                    }).ToList() : new List <BeneficiaryProducts>(),
                                  Products = products != null?products.Select(x => new BeneficiaryProducts()
                    {
                        Id          = x.beneficiaryProductId,
                        Product     = x.value,
                        ProductType = (ProductType)x.beneficiaryProductTypeId
                    }).ToList() : new List <BeneficiaryProducts>()
                };
            }
            catch (Exception ex)
            {
                return(StatusCode(500, string.Format($"{Enums.GetEnumDescription(ApiMessages.DefaultError)} {ex.Message} ")));
            }

            await Task.CompletedTask;

            return(Ok(beneficiaryResponse));
        }