Пример #1
0
        /// <summary>
        /// Updates a user's password
        /// </summary>
        /// <param name="emailAddress">Email Address of the user who's password is to be updated.</param>
        /// <param name="password">New password of the user</param>
        public void UpdatePassword(string emailAddress, string password)
        {
            var user = GetUserByEmail(emailAddress);

            if (user == null)
            {
                throw new ArgumentException($"Change Password - no user found for email address specified: {emailAddress}");
            }

            var currentPassword = _passwordRepository.GetById(user.BusinessEntityId);
            var salt            = HashGenerator.CreateSalt();

            currentPassword.PasswordSalt = salt;
            currentPassword.PasswordHash = HashGenerator.GenerateHash(password, salt);

            _passwordRepository.Update(currentPassword);
        }
Пример #2
0
        private void InsertUser()
        {
            if (_context.People.Any())
            {
                return;
            }

            var businessEntity = new BusinessEntity();

            _context.BusinessEntities.Add(businessEntity);
            _context.SaveChanges();

            var person = new Person()
            {
                BusinessEntityId = businessEntity.BusinessEntityId,
                FirstName        = "Default",
                MiddleName       = string.Empty,
                LastName         = "Admin",
                DisplayName      = "Default Admin",
                Username         = "******",
                EmailAddress     = "*****@*****.**",
                About            = string.Empty,
                Website          = string.Empty,
                DateCreatedUtc   = DateTime.UtcNow,
                DateModifiedUtc  = DateTime.UtcNow,
                DateLastLoginUtc = DateTime.UtcNow,
                Avatar           = $"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB79JREFUeNrsncFLG1sUh2N4zSZZNC60YFpIDA0WRQhIC8VF3fRv7kYXIlQEIUQsKZqAjVBdNKUkLqabd555lNJqTOJMMr9zv48i2fWemW/OOffOnZmFm5sfGYC4yXIIALEAsQCxABALEAsQCwCxALEAsQAQCxALEAsAsQCxALEAEAsQCxALALEAsQCxABAL0sg/HII7ub7+evv3yv72et+iKBoM+vY7ny/kcrlicdF+Ly0t3/59xuH6mwUeWB1i3nS7F71ez5QaOjQ+ZpvpVSwWS6UX9puDiVj/ZaNO59yUmlSmEZKZXuXy6jCrIVZw+cl8arfP4vLpTsMqlaoZFmYOC04sq3Tt9nmnczaz/7FcrlYqq6G1YgGJZUo1m41hVz57TKyNjc1w9ApCLKt3ptQss9SI7GV6hVAc/Yt1ctJotU6jKErJeHK5XK32an19E7GEE9X+/p7N+1I4Npszbm+/c5y63Iplhe/4+Cg9ierO1FWvb1lxRCwZTCkrfxJDtbJoevk7Bd5u6ViKMqvS0KePybD/M7csgZGx0mvV7u6HdDZVD7ZcOzvvPbmVxao0YMO2wae5IwxXLKuAolb9cstCQKzUWSXUV42eySJWWuh2L1TmgOP08hYOYs2fwaB/eHjgaT5l4ThotuTFSvkq6HSzEAeXirZYVjV8FA5/cWmL5Wka5Sw0YbFsDpXc/s809I7S81xhsZrNRsY10gGqiuU7XTlIWlmuZsJErP+Z4tE/3aQ1r036IYrVbp9ngkE0WEmxLi8vwhFLNFg9sbrdC2dL7aOxYBUXSxXF+pIJDMWQ9cQKqg7qhiwmlk2RgqqDv6qh3NxQTqyrTJDIBS4m1tXV1zDFkgtcrxSGmrEQKzGkn5UILXwlsb5/D1osraSllbF6IYs1GAwQi1pAKaQUEn7IYkW3hCyW1hHIcr2StELPWIhFxkriYu0hltBB4CNNELZYga81yB0Eeix6LEohUApj5+dPMpbSQaDHoseiFAKlEBALALEAsQCxABALEAsQCwCxALHiolhc5GwtLT1DrJh58iSHWGQsQCwRnH0yeTry+QJi0WPFT6GAWEAplODp0yJna2lpGbHoschYGhmLHkvpIJCxlBA6CErNe+ATQ63wlcQKfPFdK3wlsZaXn4Usllb4SmLl8/mQxdIKX0usQthiFRArEYQ2jRC+2C2dYCeGcoGLiRXsMqlc4HIZK9A7hnKBi4kVbJslF7hejxXgvR0LmR6La5eQVcVaDk+sZcTi8iVkTbGs2whqCd6CVVy9k9zzXiq9CEcs0WAlxQqqzRINVjVjBbLoYGGSsWbKykoQ1VA3TFWxKpXVEMTSDVNVLJuBu58bWoC6aytZ5au56j1dCQcoLFa57LwaSgcoLJZVCscLWhaadK3XfilIrbbmVSz10LTF8trCS7ftHsQyNjY2/YnlICh5scrlqrOkZeFYUIjF9U04TsXylLR8pKuMm1dFuklabgJxIpaPpOUmXWU8vdzWwbXuqVn0I5Z60vKUrjLOXsctfcU7m9u6Eks3aRWLi57SVcbfBwREr/t6fcvZifAmlmLScnBn0L9YiknL5e1Oh2KtrCg9w2NDddZduRXLTpXQwy0urcp4/fpXqfScoSJW/Aj1wl7fceJTLKuGEnNDx+/qdfshTAmxHH/EBbHIWIg1CRKfT3b8ahO+CQ2IBYgFiAWAWIBYgFgAiAWIBYjljX6/zyARK34Ggz6DRCzEQiwFoihSEcuGilgyXF9/ZaiIlcTZumKoiBU/3e4FQ0Ws+E+VUFNsQ3XplkOxWq1PDBix4u+F5dphxTGHJZZN3T9+PFAcuQ3b2bqDK7GOj49Elxxt2DZ4xEojnc6Z/WP8iBXzWREtgn8URDdueRCr1Tp1YNUvtywcB4Es3Nz8kO7WDw8P/K0DlUovXr9+K/04q7BYNkW369vrBoF8vvDmzVvdd9FIijWcQ3m9GfJH6qrXtxRfBS0mlinVbDY8zZ7GoVyubmxsauklI1aYSunqJSCWlbxW65PXfUuTYl1XrbaW/q+sp1csS1Gdznm7feZ4/+5jWvtKpVour6Y2gaVOrCiKLi8vut0vIfTmsXT3pdLzFL6BPEVimUnmk1nldRt4cgzfQG6GpadEzl+sXu+blTyt3XlpLpHmlpXIub+Ecm5iDXdOWleOTwkZNuzx59WEzVqsYQvVbp8zy5vZLLJSWZ19EzY7sazkWX6ihZpjE2Y5bGYlchZidTpnpKhUJbAZfMAnQbEsM33+/ImFqHR2YJVK9eXLteTqYyJiDZVqtU6peimvj7Xaq4T0ilkslEKv+MWyXur4+AilRPWq17di7L3iEcsac1PK5n2cIWlszmh6xbK78LFiWX46OWn42KYNQ6wyrq9vPrIyPkos35uDA582PnJj9PRiWe0jUblPXVYZZyeWpaj9/T06qkC6ru3td1PccJxYLPNpd/cDU7+gJow7O+8nvRc0mVg+HjiGKbCWa6LFiCxWwThM+vh/FqsgCbeyWAVJuPWwWNatYxX87tY4CwIPiGWzP5sDcjThd8ZZFnhArP39PVYW4O90Y2JML1ardcq2T7gTE2P0fZd7xRoM+icnDY4g3IfpMeI28b1iNZsNiiCMLogmyWRi3b434YxjB6MxSe5LWv8KMACBxP2hDIamPgAAAABJRU5ErkJggg=="
            };

            _context.People.Add(person);
            _context.SaveChanges();

            const string plainTextPassword = "******";
            var          passwordSalt      = HashGenerator.CreateSalt();
            var          passwordHash      = HashGenerator.GenerateHash(plainTextPassword, passwordSalt);

            var password = new Password()
            {
                PasswordHash     = passwordHash,
                PasswordSalt     = passwordSalt,
                BusinessEntityId = person.BusinessEntityId
            };

            _context.Passwords.Add(password);
            _context.SaveChanges();
        }
Пример #3
0
        public async Task <bool> CreateUser(CreateUserEntity obj)
        {
            try
            {
                var salt    = HashGenerator.CreateSalt();
                var newUser = new User()
                {
                    UserName     = obj.UserName,
                    FirstName    = obj.FirstName,
                    LastName     = obj.LastName,
                    MiddleName   = obj.MiddleName,
                    Email        = obj.Email,
                    Mobile       = obj.Mobile,
                    CreatedBy    = "Admin",
                    CreatedDate  = DateTime.Now,
                    IsActive     = true,
                    PasswordHash = HashGenerator.CreateHashPassword(obj.Password, salt),
                    Salt         = salt
                };

                _context.Users.Add(newUser);
                var res = _context.SaveChanges();
                if (res > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Пример #4
0
        /// <summary>
        /// Register a new user (person)
        /// </summary>
        /// <param name="person">Person object to register</param>
        /// <param name="password">Password for the new user in plain text</param>
        /// <returns></returns>
        public UserRegistrationResult Register(Person person, string password)
        {
            if (person == null)
            {
                throw new ArgumentException("Person object cannot be null.", nameof(person));
            }

            var result = new UserRegistrationResult();

            if (_userService.CheckIfUserExistsByEmail(person.EmailAddress))
            {
                result.AddError("A user already exists with the specified email address.");
            }

            if (person.Username.Length < 4)
            {
                result.AddError("Username must be at least 4 characters long.");
            }

            var usernameNumber = 0;

            if (int.TryParse(person.Username, out usernameNumber))
            {
                result.AddError("Username cannot be numeric.");
            }

            if (string.IsNullOrEmpty(person.EmailAddress))
            {
                result.AddError("Email Address is not provided.");
            }

            if (!CommonHelper.IsValidEmail(person.EmailAddress))
            {
                result.AddError("Invalid Email Address specfied.");
            }

            if (string.IsNullOrEmpty(password))
            {
                result.AddError("A password is required.");
            }

            if (string.IsNullOrEmpty(person.Username))
            {
                result.AddError("Please enter a username.");
            }

            if (_userService.CheckIfUserExistsByUsername(person.Username))
            {
                result.AddError("The username is not available.");
            }

            if (person.Username.Length > 50)
            {
                result.AddError("The username cannot exceed 50 characters.");
            }

            if (!result.Success)
            {
                return(result);
            }

            // If we made it this far, then the information provided is valid. We can proceed now.

            var businessEntity = new BusinessEntity();

            _businessEntityRepository.Create(businessEntity);

            var user = new Person()
            {
                BusinessEntityId = businessEntity.BusinessEntityId,
                FirstName        = person.FirstName,
                MiddleName       = person.MiddleName,
                LastName         = person.LastName,
                DisplayName      = $"{person.FirstName} {person.LastName}",
                About            = person.About,
                Username         = person.Username,
                EmailAddress     = person.EmailAddress,
                Website          = person.Website,
                IsDeleted        = false,
                IsBlocked        = false,
                IsEmailVerified  = false,
                DateCreatedUtc   = DateTime.UtcNow,
                DateModifiedUtc  = DateTime.UtcNow,
                DateLastLoginUtc = DateTime.UtcNow
            };

            _peopleRepository.Create(user);

            var salt        = HashGenerator.CreateSalt();
            var passwordSet = new Password()
            {
                BusinessEntityId = businessEntity.BusinessEntityId,
                PasswordSalt     = salt,
                PasswordHash     = HashGenerator.GenerateHash(password, salt)
            };

            _passwordRepository.Create(passwordSet);

            return(result);
        }