public async Task <UserVerificationModel> GetVerification(string userId)
        {
            using (var context = DataContextFactory.CreateReadOnlyContext())
            {
                var user = await context.Users.FirstOrDefaultNoLockAsync(x => x.Id == userId);

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

                var result = new UserVerificationModel
                {
                    Email             = user.Email,
                    VerificationLevel = user.VerificationLevel
                };

                var userVerification = await context.UserVerification.FirstOrDefaultNoLockAsync(x => x.UserId == userId);

                if (userVerification != null)
                {
                    result.FirstName = userVerification.FirstName;
                    result.LastName  = userVerification.LastName;
                    result.Birthday  = userVerification.Birthday;
                    result.Gender    = userVerification.Gender;
                    result.Address   = userVerification.Address;
                    result.City      = userVerification.City;
                    result.State     = userVerification.State;
                    result.Postcode  = userVerification.Postcode;
                    result.Country   = userVerification.Country;
                }
                return(result);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Create the unique verificationKey
        /// </summary>
        /// <param name="user"></param>
        /// <param name="userVerificationType"></param>
        /// <returns></returns>
        public string CreateVerificationKey(User user, UserVerificationType userVerificationType)
        {
            var userVerificationModel  = new UserVerificationModel(user.Id, _dateTimeProvider.Now.AddHours(2), userVerificationType);
            var verificationKey        = _encryptionService.EncryptModel(userVerificationModel);
            var encodedVerificationKey = HttpUtility.UrlEncode(verificationKey);

            return(encodedVerificationKey);
        }
        public async Task <ActionResult> Post([FromBody] UserVerificationModel value)
        {
            var user = await _userManager.FindByNameAsync(value.UserName);

            var roles = await _userManager.GetRolesAsync(user);

            var pswdhash = new PasswordHasher <ApplicationUser>();

            var result = pswdhash.VerifyHashedPassword(user, user.PasswordHash, value.Password);

            if (result == PasswordVerificationResult.Failed)
            {
                return(NotFound(""));
            }

            //var tokenHandler = new JwtSecurityTokenHandler();
            //var key = Encoding.ASCII.GetBytes("MyVeryLongAndVerySecretKeyThatNooneCanCrack");

            //var tokenDescriptor = new SecurityTokenDescriptor
            //{
            //    Subject = new ClaimsIdentity(new Claim[]
            //    {
            //        new Claim(ClaimTypes.Name, user.Id.ToString())
            //    }),
            //    Expires = DateTime.UtcNow.AddDays(1),
            //    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            //};

            //var token = tokenHandler.CreateToken(tokenDescriptor);
            //var tokenString = tokenHandler.WriteToken(token);

            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtRegisteredClaimNames.NameId, user.NormalizedUserName),
                new Claim(JwtRegisteredClaimNames.Email, user.NormalizedEmail),
                new Claim(ClaimTypes.Role, roles[0].ToString())
            };

            var credentials = new SigningCredentials(
                new SymmetricSecurityKey(Encoding.UTF8.GetBytes("ThisIsMySuperSecretKey")),
                SecurityAlgorithms.HmacSha256);

            var token = new JwtSecurityToken
                        (
                issuer: "Booking.com",
                audience: "Booking.com",
                claims: claims,
                expires: DateTime.UtcNow.AddDays(1),
                signingCredentials: credentials
                        );

            return(Ok(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(token),
                expires = DateTime.UtcNow.AddDays(1)
            }));
        }
Esempio n. 4
0
        public async Task <IWriterResult> CreateVerification(string userId, UserVerificationModel model)
        {
            using (var context = DataContextFactory.CreateContext())
            {
                var user = await context.Users.FirstOrDefaultNoLockAsync(x => x.Id == userId);

                if (user.VerificationLevel != VerificationLevel.Level1 && user.VerificationLevel != VerificationLevel.Legacy)
                {
                    return(new WriterResult(false, $"Verification has already been submitted."));
                }

                var verification = await context.UserVerification.FirstOrDefaultNoLockAsync(x => x.UserId == userId);

                if (verification != null)
                {
                    return(new WriterResult(false, $"Verification has already been submitted."));
                }

                verification = new Entity.UserVerification
                {
                    UserId          = userId,
                    FirstName       = model.FirstName,
                    LastName        = model.LastName,
                    Birthday        = model.Birthday,
                    Gender          = model.Gender,
                    Address         = model.Address,
                    City            = model.City,
                    State           = model.State,
                    Postcode        = model.Postcode,
                    Country         = model.Country,
                    Identification1 = model.Identification1,
                    Identification2 = model.Identification2,
                    Timestamp       = DateTime.UtcNow
                };
                context.UserVerification.Add(verification);
                user.VerificationLevel = VerificationLevel.Level2Pending;
                await context.SaveChangesAsync();
            }
            await UserSyncService.SyncUser(userId);

            return(new WriterResult(true, $"Successfully submitted verification information."));
        }
        public async Task <ActionResult> SubmitVerification(UserVerificationModel model, HttpPostedFileBase identificationImage1, HttpPostedFileBase identificationImage2)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }

            if (identificationImage1 == null || identificationImage1.ContentLength == 0 || identificationImage2 == null || identificationImage2.ContentLength == 0)
            {
                var image = identificationImage1 == null || identificationImage1.ContentLength == 0 ? "Identification1" : "Identification2";
                ModelState.AddModelError(image, Resources.User.verificationImageRequiredError);
                return(View("Index", model));
            }

            if (!Constant.AllowedImageExtesions.Contains(identificationImage1.ContentType.ToLower()) || !Constant.AllowedImageExtesions.Contains(identificationImage2.ContentType.ToLower()))
            {
                var image = !Constant.AllowedImageExtesions.Contains(identificationImage1.ContentType.ToLower()) ? "Identification1" : "Identification2";
                ModelState.AddModelError(image, Resources.User.verificationImageFormatError);
                return(View("Index", model));
            }

            model.Identification1 = identificationImage1.GetBase64String(Constant.VERIFICATION_MAX_WIDTH, Constant.VERIFICATION_MAX_HEIGHT);
            model.Identification2 = identificationImage2.GetBase64String(Constant.VERIFICATION_MAX_WIDTH, Constant.VERIFICATION_MAX_HEIGHT);

            if (string.IsNullOrEmpty(model.Identification1) || string.IsNullOrEmpty(model.Identification1))
            {
                var image = string.IsNullOrEmpty(model.Identification1) ? "Identification1" : "Identification2";
                ModelState.AddModelError(image, Resources.User.verificationImageFormatError);
                return(View("Index", model));
            }

            var result = await UserVerificationWriter.CreateVerification(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                return(View("Index", model));
            }


            return(RedirectToAction("Index"));
        }