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); } }
/// <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) })); }
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")); }