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));
        }
Beispiel #2
0
        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);
        }
Beispiel #7
0
        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);
        }