public async Task <IActionResult> CreateToken(CreateTokenModel model)
        {
            var user = await _context.Users
                       .Include(u => u.UserRoles)
                       .ThenInclude(ur => ur.Role)
                       .FirstOrDefaultAsync(u => u.EmailAddress == model.EmailAddress);

            if (user == null)
            {
                return(Generate(HttpStatusCode.BadRequest, "The credentials provided were invalid."));
            }

            var verified = _hashService.VerifyHash(model.Password, user.Password);

            if (!verified)
            {
                return(Generate(HttpStatusCode.BadRequest, "The credentials provided were invalid."));
            }

            if (user.IsLockedOut)
            {
                return(Generate(HttpStatusCode.BadRequest, "This account has been locked out, please try again later."));
            }

            var result = _jwtService.GenerateToken(user);

            return(Generate(HttpStatusCode.OK, result));
        }
        public static IEnumerable <ValidationResult> Validate(this CreateTokenModel requestData)
        {
            var validationResults = new List <ValidationResult>();

            validationResults.AddRange(ClassValidator <CreateTokenModel> .Validate(requestData));
            validationResults.AddRange(ClassValidator <TransactionModel> .Validate(requestData.Transaction ?? new TransactionModel()));


            foreach (var service in requestData.Services ?? new List <ServiceModel>())
            {
                validationResults.AddRange(ClassValidator <ServiceModel> .Validate(service));
            }

            foreach (var allocation in requestData.Allocations ?? new List <AllocationModel>())
            {
                validationResults.AddRange(ClassValidator <AllocationModel> .Validate(allocation));
            }

            foreach (var traveler in requestData.Travelers ?? new List <TravelerModel>())
            {
                validationResults.AddRange(ClassValidator <TravelerModel> .Validate(traveler));
            }

            return(validationResults);
        }
        public ActionResult GenerateToken(CreateTokenModel createTokenModel)
        {
            Person person = (Person)Session["Persons"];

            ViewBag.JourneyStart = new SelectList(railwayDbContexts.City, "CityName", "CityName");
            ViewBag.JourneyEnd   = new SelectList(railwayDbContexts.City, "CityName", "CityName");
            bool isExist = createTokenModel.isAlreadyPurchseToday(createTokenModel.JourneyDate, person.PersonID);

            if (isExist)
            {
                if (ModelState.IsValid)
                {
                    createTokenModel.personID = Convert.ToInt32(Session["ID"]);
                    Session["CreateToken"]    = createTokenModel;
                    createTokenModel.insertData(createTokenModel);
                    Journey journey = createTokenModel.GetDetails();
                    UpdateTicketStatusTotalToPending(journey.CoatchType);
                    return(View("FullTicket", journey));
                }
                return(View("GenerateToken"));
            }
            else
            {
                ModelState.AddModelError("JourneyDate", "You have already purchase a ticket today. Please select another date");
                return(View("GenerateToken"));
            }
        }
 public IHttpActionResult Post([FromBody] CreateTokenModel model)
 {
     using (var t = Repository.BeginTransaction())
     {
         var authToken = AuthTokenService.Create(model.Username, model.Password);
         t.Commit();
         return(Json(Mapper.Map <AuthTokenCreateView>(authToken)));
     }
 }
        public void Post([FromBody] CreateTokenModel model)
        {
            //TODO:
            var adService = new AdService();
            var valid     = adService.ValidateCredentials(model.Login, model.Password);

            //generate token
            //return token
        }
Пример #6
0
        public ActionResult GenerateToken(CreateTokenModel createTokenModel)
        {
            createTokenModel.personID = Convert.ToInt32(Session["ID"]);
            Session["CreateToken"]    = createTokenModel;
            createTokenModel.insertData(createTokenModel);
            Journey journey = createTokenModel.GetDetails();

            UpdateTicketStatusTotalToPending(journey.CoatchType);
            return(View("FullTicket", journey));
        }
        public virtual async Task <Status> RequestAuthorization(SecurityManagerClient secMgr, ApplicationManagerClient appMgr, IdentityManagerClient idMgr, string userID, string enterpriseID, string hostName)
        {
            // Create an access request
            var accessRequest = new AccessRequest()
            {
                User         = userID,
                EnterpriseID = enterpriseID
            };

            // Create JToken to attached to metadata model
            var model = new MetadataModel();

            model.Metadata.Add(new KeyValuePair <string, JToken>("AccessRequest", JToken.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(accessRequest))));

            // Create token model - is including the access request payload redundant??
            var tokenModel = new CreateTokenModel()
            {
                Payload        = model,
                UserEmail      = userID,
                OrganizationID = enterpriseID,
                Encrypt        = true
            };

            // Encrypt user email and enterpries ID, generate token
            var response = await secMgr.CreateToken("RequestAccessToken", tokenModel);

            // Build grant/deny links and text body
            if (response != null)
            {
                string grantLink = $"<a href=\"{hostName}/grant/token?={response.Model}\">Grant Access</a>";
                string denyLink  = $"<a href=\"{hostName}/deny/token?={response.Model}\">Deny Access</a>";
                string emailHtml = $"A user has requested access to this Organization : {grantLink} {denyLink}";

                // Send email from app manager client

                var email = new AccessRequestEmail()
                {
                    Content      = emailHtml,
                    EmailFrom    = "*****@*****.**",
                    EmailTo      = "*****@*****.**",
                    User         = userID,
                    Subject      = "Access authorization requested",
                    EnterpriseID = enterpriseID
                };

                var emailModel = new MetadataModel();
                model.Metadata.Add(new KeyValuePair <string, JToken>("AccessRequestEmail", JToken.Parse(JsonConvert.SerializeObject(email))));

                appMgr.SendAccessRequestEmail(model, enterpriseID);
            }

            // If successful, adjust state to reflect that a request was sent for this enterprise by this user
            return(Status.Success);
        }
Пример #8
0
        public IActionResult Create([FromBody] CreateTokenModel createTokenModel)
        {
            IActionResult response = Unauthorized();
            var           newToken = Authenticate(createTokenModel);

            if (newToken != null)
            {
                response = Ok(newToken);
            }

            return(response);
        }
Пример #9
0
        public async Task <IActionResult> CreateToken([FromBody] CreateTokenModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ApiResponse.FromError(MemzError.FromModelState(ModelState))));
            }

            if (!await Repository.RepositoryExists(model.Repository))
            {
                return(BadRequest(
                           ApiResponse.FromMemzException(
                               new MemzException(
                                   MemzErrorCode.RepositoryNotFound,
                                   $"Repository {model.Repository} not found"
                                   )
                               )
                           ));
            }

            try
            {
                await Repository.GetRepositoryMasterKey(model.Repository, model.Passphrase);
            }
            catch (MemzException ex) when(ex.ErrorCode == MemzErrorCode.IntegrityCheckFailed)
            {
                return(BadRequest(ApiResponse.FromMemzException(new MemzException(MemzErrorCode.InvalidPassphrase, "Invalid repository passphrase"))));
            }

            var jwt       = new JwtSecurityTokenHandler();
            var key       = Configuration.GetIssuerSigningKey();
            var serverKey = Configuration.GetServerKey();

            var encryptedPassphrase = CryptoService.PassphraseEncrypt(serverKey, Encoding.UTF8.GetBytes(model.Passphrase));

            var tok = jwt.CreateToken(new()
            {
                Issuer   = jwtOptions.TokenValidationParameters.ValidIssuer,
                Audience = jwtOptions.TokenValidationParameters.ValidAudience,
                Expires  = DateTime.UtcNow.AddHours(1),
                Subject  = new ClaimsIdentity(new Claim[]
                {
                    new(Const.RepositoryNameClaimType, model.Repository),
                    new(Const.EncryptedPassphraseClaimType, encryptedPassphrase.ToString()),
                }),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature)
            });
Пример #10
0
        private TokenModel Authenticate(CreateTokenModel createTokenModel)
        {
            var newToken = _tokenService.CreateNewToken(new CreateTokenViewModel()
            {
                IntegrationKey = createTokenModel.IntegrationKey
            });

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

            return(new TokenModel()
            {
                Key = newToken.Key,
                DueDate = newToken.DueDate
            });
        }
Пример #11
0
        public DetailsOfFullTicket GetTicketDetails()
        {
            DetailsOfFullTicket detailsOfFullTicket = new DetailsOfFullTicket();
            CreateTokenModel    tokenDetails        = (CreateTokenModel)Session["CreateToken"];
            Person             personDetsils        = (Person)Session["Persons"];
            TicketConfirmField ticketConfirmField   = (TicketConfirmField)Session["TicketConfirmField"];

            detailsOfFullTicket.PersonName        = personDetsils.PersonName;
            detailsOfFullTicket.PersonFathersName = personDetsils.PersonFathersName;
            detailsOfFullTicket.PersonAddress     = personDetsils.PersonAddress;
            detailsOfFullTicket.CoatchType        = tokenDetails.CoatchType;
            detailsOfFullTicket.BogyName          = ticketConfirmField.BogyName;
            detailsOfFullTicket.SeatNumber        = ticketConfirmField.SeatNumber;
            detailsOfFullTicket.NumberOfSeat      = ticketConfirmField.NumberOfSeat;
            detailsOfFullTicket.JourneyStart      = tokenDetails.JourneyStart;
            detailsOfFullTicket.JourneyEnd        = tokenDetails.JourneyEnd;
            detailsOfFullTicket.JourneyDate       = tokenDetails.JourneyDate.ToShortDateString();
            detailsOfFullTicket.TimeOfJourney     = tokenDetails.TimeOfJourney;

            return(detailsOfFullTicket);
        }
Пример #12
0
        /// <inheritdoc />
        public CreateTokenResponse CreateToken(CreateTokenModel requestData)
        {
            var validationResults = requestData.Validate().ToList();

            if (validationResults.Any())
            {
                return(new CreateTokenResponse
                {
                    Result = "-99",
                    ResultExplanation = validationResults.Select(x => x.ErrorMessage).Aggregate((i, j) => i + "," + j)
                });
            }

            var xml = CreateTokenRequestXml.Get(_companyToken, requestData);

            //Get the response
            var responseXml = _url.PostXmlToUrl(xml).AddResultExplanationCdata(_bypassCdataMod);
            var response    = responseXml.FromXml <CreateTokenResponse>();

            Debug.WriteLine(response);
            return(response);
        }
Пример #13
0
        public void CreateTokenTest(string name, string surname, string email)
        {
            var service = new DirectPayService(_baseUrl, _companyToken);
            var data    = new CreateTokenModel
            {
                Customer = new CustomerModel
                {
                    CustomerFirstName = name,
                    CustomerLastName  = surname,
                    CustomerPhone     = "",
                    CustomerEmail     = email
                },
                Transaction = new TransactionModel
                {
                    CompanyRef            = Guid.NewGuid().ToString("N"),
                    PaymentAmount         = decimal.Parse($"{rnd.Next(11, 199)}.{rnd.Next(0, 99)}"),//TODO: Set Transaction Payment Amount here
                    Currency              = Currencies.USD,
                    TransactionChargeType = "1"
                },
                Services = new List <ServiceModel>
                {
                    new ServiceModel
                    {
                        ServiceDescription = "Service Here", //TODO: Get your service from DPO
                        ServiceType        = 0,              //TODO: Get your service type from DPO
                        ServiceDate        = DateTime.Now
                    }
                }
            };
            var response = service.CreateToken(data);

            _debug.WriteLine("Result: {0}", response.Result);
            _debug.WriteLine("Result Explanation: {0}", response.ResultExplanation);
            _debug.WriteLine("Transaction Token: {0} - Amount: {1}", response.TransToken, data.Transaction.PaymentAmount);
            Assert.Equal(true, response.Result == "000");
        }
        public static string Get(string companyToken, CreateTokenModel model)
        {
            var xmlDocument = new XDocument(new XDeclaration("1.0", "utf-8", "no"));
            var root        = new XElement("API3G",
                                           new XElement("CompanyToken", companyToken),
                                           new XElement("Request", RequestTypes.CreateToken)
                                           );

            var transaction = new XElement("Transaction",
                                           new XElement("PaymentAmount", model.Transaction.PaymentAmount),
                                           new XElement("PaymentCurrency", model.Transaction.Currency),
                                           new XElement("CompanyRef", model.Transaction.CompanyRef),
                                           //new XElement("CompanyRefUnique", model.Transaction.CompanyRefUnique),
                                           new XElement("TransactionChargeType", model.Transaction.TransactionChargeType)
                                           );

            if (!string.IsNullOrWhiteSpace(model.Transaction.RedirectUrl))
            {
                transaction.Add(new XElement("RedirectURL", model.Transaction.RedirectUrl));
            }

            if (!string.IsNullOrWhiteSpace(model.Transaction.BackUrl))
            {
                transaction.Add(new XElement("BackURL", model.Transaction.BackUrl));
            }

            if (!string.IsNullOrWhiteSpace(model.Transaction.DeclinedUrl))
            {
                transaction.Add(new XElement("DeclinedURL", model.Transaction.DeclinedUrl));
            }

            if (!string.IsNullOrWhiteSpace(model.Customer?.CustomerEmail ?? ""))
            {
                transaction.Add(new XElement("customerEmail", model.Customer?.CustomerEmail));
            }

            root.Add(transaction);


            var services = new XElement("Services");

            foreach (var service in model.Services)
            {
                services.Add(new XElement("Service",
                                          new XElement("ServiceType", service.ServiceType),
                                          new XElement("ServiceDescription", service.ServiceDescription),
                                          new XElement("ServiceDate", service.ServiceDate.ToString("yyyy/MM/dd HH:MM"))
                                          ));
            }

            root.Add(services);


            if (model.Allocations.Any())
            {
                var allocations = new XElement("Allocations");
                root.Add(allocations);
            }

            if (model.Travelers.Any())
            {
                var travelers = new XElement("Travelers");
                root.Add(travelers);
            }

            xmlDocument.Add(root);

            using (var sw = new Utf8StringWriter())
            {
                xmlDocument.Save(sw, SaveOptions.None);
                return(sw.ToString());
            }
        }