Ejemplo n.º 1
0
        public override async Task <User> UpdateAsync(User retrievedUser, User user)
        {
            if (!string.IsNullOrEmpty(user.Password))
            {
                string salt           = PasswordUtils.GenerateSalt();
                string hashedPassword = PasswordUtils.HashPasswordWithSalt(user.Password, salt);
                user.Salt     = salt;
                user.Password = hashedPassword;
            }
            else
            {
                user.Password = retrievedUser.Password;
                user.Salt     = retrievedUser.Salt;
            }

            if (user.Created == DateTimeOffset.MinValue)
            {
                user.Created = retrievedUser.Created;
            }

            if (string.IsNullOrEmpty(user.Username))
            {
                user.Username = retrievedUser.Username;
            }
            if (string.IsNullOrEmpty(user.DisplayName))
            {
                user.DisplayName = retrievedUser.DisplayName;
            }

            var now = DateTime.UtcNow;

            user.LastUpdate = now;

            // After password update
            DbContext.Entry(retrievedUser).CurrentValues.SetValues(new
            {
                user.Username,
                user.Password,
                user.DisplayName,
                user.Salt
            });
            await DbContext.SaveChangesAsync();

            return(retrievedUser);
        }
Ejemplo n.º 2
0
        public override async Task <User> InsertAsync(User user)
        {
            var defaultAvatarPath = Configuration.GetValue <string>("DefaultAvatar");

            string originalPass = user.Password;
            string salt         = PasswordUtils.GenerateSalt();
            string hashedPass   = PasswordUtils.HashPasswordWithSalt(originalPass, salt);
            var    now          = DateTimeOffset.UtcNow;

            user.Username    = user.Username.Trim();
            user.DisplayName = user.DisplayName.Trim();
            user.Password    = hashedPass;
            user.Salt        = salt;
            user.Created     = now;
            user.LastUpdate  = now;

            var transaction = DbContext.Database.BeginTransaction();

            await UserDatabase.AddAsync(user);

            await DbContext.SaveChangesAsync();

            // create new avatar record
            var photo = new AvatarPhoto
            {
                UserId   = user.Id,
                FileName = defaultAvatarPath
            };

            DbContext.AvatarPhotos.Add(photo);
            await DbContext.SaveChangesAsync();

            await transaction.CommitAsync();

            // format output
            user.AvatarPhoto = photo;
            return(user);
        }