private string BuildToken(UserPassViewModel user) { List <Claim> claims = new List <Claim>(); claims.Add(new Claim(JwtRegisteredClaimNames.Sub, user.FirstName + " " + user.LastName)); claims.Add(new Claim(JwtRegisteredClaimNames.Email, user.Email)); claims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())); //attach roles foreach (string role in user.Roles) { claims.Add(new Claim(ClaimTypes.Role, role)); } var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( _config["Jwt:Issuer"], _config["Jwt:Issuer"], claims, expires: DateTime.Now.AddMinutes(60), //60 min expiry and a client monitor token quality and should request new token with this one expiries signingCredentials: creds); return(new JwtSecurityTokenHandler().WriteToken(token)); }
public ActionResult ChangePassword(UserPassViewModel model) { var user = userRepository.All().SingleOrDefault(x => x.Id == model.Id); user.Password = model.Password; user.ConfirmPassword = model.ConfirmPassword; userRepository.Update(user); return(RedirectToAction("Index", "Home")); }
public static bool IsValidData(UserPassViewModel loginModel) { if (string.IsNullOrEmpty(loginModel.Password) || loginModel.Password.Length < 8) { throw new Exception("Password is not valid"); } if (!RegexUtilities.IsValidEmail(loginModel.Email)) { throw new Exception("Email is not valid"); } return(true); }
public async Task <IActionResult> Update(int id, [FromBody] UserPassViewModel user) { int retVal = await _userServiceAsync.Update(user); if (retVal == 0) { return(StatusCode(304)); //Not Modified } else if (retVal == -1) { return(StatusCode(412, "DbUpdateConcurrencyException")); //412 Precondition Failed - concurrency } else { return(Accepted(user)); } }
public async Task <IActionResult> Create([FromBody] UserPassViewModel user) { if (user == null) { return(BadRequest()); } try { var id = await _userServiceAsync.Add(user); return(Created($"api/User/{id}", id)); //HTTP201 Resource created } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <int> Add(UserPassViewModel view) { if (UserHelper.IsValidData(view)) { var users = await this.Get(x => x.Email == view.Email); if (users != null && users.Any()) { throw new Exception("User with the same email already exist"); } var entity = _mapper.Map <Te>(source: view); await _unitOfWork.GetRepositoryAsync <Te>().Insert(entity); await _unitOfWork.SaveAsync(); return(entity.Id); } return(-1); }
public async Task <User> ChangePassword(long ID, UserPassViewModel userPassViewModel) { var a = await _userFacade.ChangePasswordAsync(HttpContext.User.FindFirst(ClaimTypes.Hash).Value, ID, userPassViewModel.PasswordModel); return(a); }