public async Task <User> ChangePassword(UserChangePassword user)
        {
            try
            {
                var objUser = new User();
                objUser = await GetUserById(user.id);

                if (objUser != null)
                {
                    //check pass
                    if (SecurityBCryptMethod.VerifyPassword(user.Password, objUser.Password))
                    {
                        // update pass
                        objUser.Password = SecurityBCryptMethod.CreatePasswordHash(user.NewPassword);
                        await Update(objUser);
                    }
                    else
                    {
                        return(null);
                    }
                }

                return(objUser);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task CreateUser(DataTransformationUser dataTransformationUser)
        {
            User user = new User();

            user.UserName     = dataTransformationUser.UserName;
            user.Password     = SecurityBCryptMethod.CreatePasswordHash(dataTransformationUser.Password);
            user.EmailAddress = dataTransformationUser.EmailAddress;
            user.ExpiresIn    = dataTransformationUser.ExpiresIn;
            user.IPAddress    = dataTransformationUser.IPAddress;
            user.Gender       = dataTransformationUser.Gender;
            user.InExuer      = dataTransformationUser.InExuer;
            user.LimitedTotal = dataTransformationUser.LimitedTotal;
            user.CreatedDate  = DateTime.Now;
            user.CreatedBy    = "";
            user.Deleted      = false;

            user.RoleDetails = new List <UserDetail>();

            foreach (DetailDataTransformationUserRole detailDataTransformationUserRole in dataTransformationUser.RoleDetails)
            {
                UserDetail userDetail = new UserDetail();
                userDetail.Id   = new ObjectId(detailDataTransformationUserRole.id);
                userDetail.Name = detailDataTransformationUserRole.Name;
                user.RoleDetails.Add(userDetail);
            }
            await _context.Users.InsertOneAsync(user);
        }
示例#3
0
        public async Task <IActionResult> Post([FromBody] User value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                value.UserName     = value.UserName;
                value.Password     = SecurityBCryptMethod.CreatePasswordHash(value.Password);
                value.ExpiresIn    = value.ExpiresIn;
                value.Gender       = value.Gender;
                value.EmailAddress = value.EmailAddress;
                IPHostEntry heserver  = Dns.GetHostEntry(Dns.GetHostName());
                var         ipAddress = heserver.AddressList.ToList().Where(p => p.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).FirstOrDefault().ToString();
                // get IP client
                value.IPAddress    = ipAddress;// _accessor.HttpContext.Connection.RemoteIpAddress.ToString();
                value.LimitedTotal = value.LimitedTotal;
                value.InExuer      = value.InExuer;
                value.Deleted      = false;
                value.CreatedDate  = DateTime.Now;
                await _userRepository.Create(value);

                return(new OkObjectResult(value));
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
        /// <summary>
        /// Validation UserName & Password
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public string Login(LoginDto loginDto, string SigningSecret, string ExpiryDuration)
        {
            var tokenString = "";
            var user        = _context.Users.Find(u => u.UserName == loginDto.UserName).SingleOrDefault();

            if (user == null)
            {
                return(null);
            }
            else
            {
                if (SecurityBCryptMethod.VerifyPassword(loginDto.Password, user.Password))
                {
                    // generate token
                    tokenString = SecurityTokenMethod.JWTAuthenticationToken(SigningSecret, ExpiryDuration, user);
                    //update token in user
                    user.AccessToken = tokenString;
                    user.UpdatedDate = DateTime.Now;
                    _context.Users.ReplaceOneAsync(filter: u => u.Id == user.Id, replacement: user);
                    //insert token
                    var token = new Token();
                    token.UserId      = user.Id;
                    token.TokenKey    = tokenString;
                    token.CreatedDate = DateTime.Now;
                    token.CreatedBy   = user.UserName;// user login
                    _context.Tokens.InsertOneAsync(token);
                }
                else
                {
                    return(null);
                }
            }
            return(tokenString);
        }
        /// <summary>
        /// IsAuthenticated
        /// </summary>
        /// <param name="LoginDto"></param>
        /// <returns></returns>
        public User IsAuthenticated(LoginDto loginDto, string SigningSecret, string ExpiryDuration)
        {
            var user = new User();

            try
            {
                // check user
                user = _context.Users.Find(u => u.UserName == loginDto.UserName).SingleOrDefault();
                //check pass
                if (user != null)
                {
                    if (SecurityBCryptMethod.VerifyPassword(loginDto.Password, user.Password))
                    {
                        if (user.AccessToken != null)
                        {
                            // update token user when Expires
                        }
                        else
                        {
                            // generate token
                            var tokenString     = SecurityTokenMethod.JWTAuthenticationToken(SigningSecret, ExpiryDuration, user);
                            var userUpdateToken = new User();
                            user.Id          = user.Id;
                            user.AccessToken = tokenString;
                            user.UpdatedDate = DateTime.Now;
                            ReplaceOneResult updateResult = _context.Users.ReplaceOne(filter: u => u.Id == user.Id, replacement: user);

                            if (updateResult.IsAcknowledged && updateResult.ModifiedCount > 0)
                            {
                                //insert token
                                var token = new Token();
                                token.UserId      = user.Id;
                                token.TokenKey    = tokenString;
                                token.CreatedDate = DateTime.Now;
                                token.CreatedBy   = user.UserName;// user login
                                _context.Tokens.InsertOneAsync(token);
                            }
                        }
                    }
                    else
                    {
                        user = null;
                    }
                }

                return(user);
            }
            catch (Exception)
            {
            }
            return(user);
        }