Exemple #1
0
        public async Task <bool> ChangePassword(ChangePasswordDto model)
        {
            var user = await GetUser(model.Email, model.Phone);

            if (user.Email != model.Email || user.Phone != model.Phone)
            {
                return(false);
            }

            using (var db = base.NewDb())
            {
                //先判定原密碼是否正確
                if (!PasswordHash.VerifyPasswordHash(model.OldPassword, user.PasswordHash, user.PasswordSalt))
                {
                    return(false);
                }

                byte[] passwordHash, passwordSalt;
                PasswordHash.CreatePasswordHash(model.NewPassword, out passwordHash, out passwordSalt);
                user.PasswordHash = passwordHash;
                user.PasswordSalt = passwordSalt;
                user.WriteTime    = System.DateTime.Now;
                db.AppUser.Update(user);
                var saveNumber = await db.SaveChangesAsync();

                return(saveNumber > 0);
            }
        }
    public static void Intialize()
    {
        if (initialized == false)
        {
            Presto.Sequence.Add <User>();

            Presto.Define <User>(x => {
                var passwordHash = new PasswordHash();
                x.ID             = Presto.Sequence.Next <User>();
                x.UserName       = "******";
                x.Salt           = passwordHash.CreateSalt();
                x.Password       = passwordHash.CreatePasswordHash("Password", x.Salt);
                x.FirstName      = "First Name";
                x.LastName       = "Last Name";
                x.Role           = Role.Admin;
                x.CreatedDate    = DateTime.Now;
            });

            Presto.PersistAction = entity => {
                var addEntityMethod       = typeof(IClarityDB).GetMethod("AddEntity");
                var addEntityOfTypeMethod = addEntityMethod.MakeGenericMethod(new[] { entity.GetType() });

                addEntityOfTypeMethod.Invoke(ClarityDB.Instance, new object[] { entity });
            };
        }

        initialized = true;
    }
Exemple #3
0
        public async Task <string> NewPassword(ForgetPasswordDto model)
        {
            using (var db = base.NewDb())
            {
                var user = await GetUser(model.Email, model.Phone);

                if (user.Email != model.Email || user.Phone != model.Phone || user.UserName != model.UserName)
                {
                    return("");
                }

                var newPass     = new System.Random();
                var newPassword = newPass.Next(111111, 999999).ToString();

                byte[] passwordHash, passwordSalt;
                PasswordHash.CreatePasswordHash(newPassword, out passwordHash, out passwordSalt);

                user.PasswordHash = passwordHash;
                user.PasswordSalt = passwordSalt;
                db.AppUser.Update(user);
                var saveNumber = await db.SaveChangesAsync();

                return(newPassword);
            }
        }
        public UserModel Create(UserModel user, string password)
        {
            UserModel userObj = new UserModel
            {
                UserName  = user.UserName,
                Password  = user.Password,
                Role      = "Customer",
                Email     = user.Email,
                FirstName = user.FirstName,
                LastName  = user.LastName,
            };

            //validation
            if (string.IsNullOrWhiteSpace(password))
            {
                throw new AppException("Password is required");
            }

            if (_dbContext.Users.Any(x => x.UserName == user.UserName))
            {
                throw new AppException("Username \"" + user.UserName + "\" is already taken");
            }

            byte[] passwordHash, passwordSalt;
            PasswordHash.CreatePasswordHash(password, out passwordHash, out passwordSalt);

            userObj.PasswordHash = passwordHash;
            userObj.PasswordSalt = passwordSalt;

            _dbContext.Users.Add(userObj);
            _dbContext.SaveChanges();

            return(userObj);
        }
Exemple #5
0
 /// <summary>
 /// Creates the password with hash and salt
 /// </summary>
 /// <param name="emp"></param>
 private void createPassword(EmployeeBO emp)
 {
     password = emp.Password;
     PasswordHash.CreatePasswordHash(password, out passwordHash, out passwordSalt);
     userFromDb.PasswordHash = passwordHash;
     userFromDb.PasswordSalt = passwordSalt;
 }
Exemple #6
0
        public void Update(User userParam, string password = null)
        {
            var user = _users.Find(x => x.Id == userParam.Id).SingleOrDefault();

            if (user == null)
            {
                throw new Exception("User not found");
            }

            if (userParam.Username != user.Username)
            {
                // username has changed so check if the new username is already taken
                if (_users.Find(x => x.Username == userParam.Username).Any())
                {
                    throw new Exception("Username " + userParam.Username + " is already taken");
                }
            }

            // update user properties
            user.FirstName = userParam.FirstName;
            user.LastName  = userParam.LastName;
            user.Username  = userParam.Username;

            // update password if it was entered
            if (!string.IsNullOrWhiteSpace(password))
            {
                PasswordHash.CreatePasswordHash(password, out var passwordHash, out var passwordSalt);

                user.PasswordHash = passwordHash;
                user.PasswordSalt = passwordSalt;
            }

            _users.ReplaceOne(x => x.Id == user.Id, user);
        }
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            var optionsBuilder = new DbContextOptionsBuilder <SiriusContext>();

            string connectionString = "Host=127.0.0.1;Port=5432;Database=siriusdb;Username=siriususer;Password=Uncle340571578;Integrated Security=false;";

            var options = optionsBuilder
                          .UseNpgsql(connectionString)
                          .Options;

            using (var context = new SiriusContext(options))
            {
                Role viewerRole = context.Roles.Where(role => role.Id == DefaultValues.Roles.Viewer.Id).FirstOrDefault();

                var startDate = DateConverter.ConvertToRTS(DateTime.UtcNow.ToLocalTime());

                byte[] passwordHash, passwordSalt;
                PasswordHash.CreatePasswordHash("user2019", out passwordHash, out passwordSalt);

                var user = new User {
                    FirstName    = "Пользователь",
                    LastName     = "",
                    Username     = "******",
                    Id           = Guid.NewGuid(),
                    Role         = viewerRole,
                    StartDate    = startDate,
                    IsConfirmed  = true,
                    PasswordHash = passwordHash,
                    PasswordSalt = passwordSalt
                };

                context.Users.Add(user);
                context.SaveChanges();
            }
        }
        public void CreatePasswordHash_CreatesHash()
        {
            var passwordHash = new PasswordHash();
            var salt         = passwordHash.CreateSalt();
            var hash         = passwordHash.CreatePasswordHash("abc123@X", salt);

            Assert.Less(0, hash.Length);
        }
Exemple #9
0
        public async Task<User> Register(User user, string password)
        {
            byte[] passwordHash, passwordSalt;
            PasswordHash.CreatePasswordHash(password, out passwordHash, out passwordSalt);

            user.PasswordHash = passwordHash;
            user.PasswordSalt = passwordSalt;

            await _context.Users.AddAsync(user);
            await _context.SaveChangesAsync();

            return user;
        }
Exemple #10
0
        public async Task <Member> Register(Member user, string password)
        {
            byte[] passwordHash, passwordSalt;
            PasswordHash.CreatePasswordHash(password, out passwordHash, out passwordSalt);
            user.PasswordHash = passwordHash;
            user.PasswordSalt = passwordSalt;
            using (var db = base.NewDb())
            {
                db.Member.Add(user);
                await db.SaveChangesAsync();

                return(user);
            }
        }
Exemple #11
0
 /// <summary>
 /// Create an employee with password hash and salt
 /// Sends mail with first login password
 /// </summary>
 /// <param name="employee"> EmployeeBO to create</param>
 /// <returns> new EmployeeBO</returns>
 public EmployeeBO Create(EmployeeBO employee)
 {
     using (var uow = _facade.UnitOfWork)
     {
         password     = employee.Password;
         _newEmployee = uow.EmployeeRepository.Create(_employeeConverter.Convert(employee));
         PasswordHash.CreatePasswordHash(password, out passwordHash, out passwordSalt);
         _newEmployee.PasswordHash  = passwordHash;
         _newEmployee.PasswordSalt  = passwordSalt;
         _newEmployee.PasswordReset = true;
         _newEmployee.IsAdmin       = "User";
         // _mailto.mailTo(_newEmployee.Username, password, _newEmployee.Firstname);
         uow.Complete();
         return(_employeeConverter.Convert(_newEmployee));
     }
 }
Exemple #12
0
        public async Task <string> NewPassword(Member member)
        {
            using (var db = base.NewDb())
            {
                var newPass     = new System.Random();
                var newPassword = newPass.Next(111111, 999999).ToString();

                byte[] passwordHash, passwordSalt;
                PasswordHash.CreatePasswordHash(newPassword, out passwordHash, out passwordSalt);

                member.PasswordHash = passwordHash;
                member.PasswordSalt = passwordSalt;
                await db.SaveChangesAsync();

                return(newPassword);
            }
        }
Exemple #13
0
        public User Register(User userIn, string password)
        {
            if (string.IsNullOrWhiteSpace(password))
            {
                throw new Exception("Password is required");
            }
            if (_users.Find(user => user.Username == userIn.Username).Any())
            {
                throw new Exception("Username \"" + userIn.Username + "\" is already taken");
            }

            PasswordHash.CreatePasswordHash(password, out var passwordHash, out var passwordSalt);

            userIn.PasswordHash = passwordHash;
            userIn.PasswordSalt = passwordSalt;

            _users.InsertOne(userIn);
            return(userIn);
        }
Exemple #14
0
        public void SeedUsers()
        {
            var userData = System.IO.File.ReadAllText("Data/UserSeedData.json");
            var users    = JsonConvert.DeserializeObject <List <User> >(userData);

            foreach (var user in users)
            {
                byte[] passwordHash, passwordSalt;
                PasswordHash.CreatePasswordHash("password", out passwordHash, out passwordSalt);

                user.PasswordHash = passwordHash;
                user.PasswordSalt = passwordSalt;
                user.Username     = user.Username.ToLower();

                _context.Users.Add(user);
            }

            _context.SaveChanges();
        }
Exemple #15
0
        public async Task <UserToReturnDto> Register(RegisterDto registerDto, string password)
        {
            var user = _mapper.Map <RegisterDto, AppUser>(registerDto);

            byte[] passwordHash, passwordSalt;
            PasswordHash.CreatePasswordHash(password, out passwordHash, out passwordSalt);
            user.PasswordHash = passwordHash;
            user.PasswordSalt = passwordSalt;
            user.IsInWork     = true;
            user.LoginDate    = System.DateTime.Now;
            user.UserRole     = "users";
            using (var db = base.NewDb())
            {
                db.AppUser.Add(user);
                var saveNumber = await db.SaveChangesAsync();

                return(_mapper.Map <AppUser, UserToReturnDto>(user));
            }
        }
Exemple #16
0
        public async Task <bool> ChangePassword(Member member, string oldPassword, string newPassword)
        {
            using (var db = base.NewDb())
            {
                //先判定原密碼是否正確
                if (!PasswordHash.VerifyPasswordHash(oldPassword, member.PasswordHash, member.PasswordSalt))
                {
                    return(false);
                }

                byte[] passwordHash, passwordSalt;
                PasswordHash.CreatePasswordHash(newPassword, out passwordHash, out passwordSalt);
                member.PasswordHash = passwordHash;
                member.PasswordSalt = passwordSalt;
                member.UpdateTime   = System.DateTime.Now;
                await db.SaveChangesAsync();

                return(true);
            }
        }
Exemple #17
0
        public void Update(UserModel user, string password = null)
        {
            var userParam = _dbContext.Users.Find(user.UserId);

            if (userParam == null)
            {
                throw new AppException("User not found");
            }

            if (userParam.UserName != user.UserName)
            {
                //username has changed so check if the new username is already taken
                if (_dbContext.Users.Any(x => x.UserName == userParam.UserName))
                {
                    throw new AppException("Username " + userParam.UserName + " is already taken");
                }
            }

            //update user properties
            user.FirstName = userParam.FirstName;
            user.LastName  = userParam.LastName;
            user.UserName  = userParam.UserName;
            user.Email     = userParam.Email;

            //update password if it was entered
            if (!string.IsNullOrWhiteSpace(password))
            {
                byte[] passwordHash, passwordSalt;
                PasswordHash.CreatePasswordHash(password, out passwordHash, out passwordSalt);

                user.PasswordHash = passwordHash;
                user.PasswordSalt = passwordSalt;
            }

            _dbContext.Users.Update(user);
            _dbContext.SaveChanges();
        }