Beispiel #1
0
        public async Task <User?> UpdateUser(AdminUpdateUserModel updateUserModel)
        {
            if (string.IsNullOrEmpty(updateUserModel?.UserToUpdateCurrentUsername) ||
                string.IsNullOrEmpty(updateUserModel?.UserToUpdateNewUsername) ||
                string.IsNullOrEmpty(updateUserModel?.UserToUpdateNewPassword))
            {
                return(null);
            }

            byte[] hashedPassword;
            byte[] passwordSalt;
            CreatePasswordHash(updateUserModel.UserToUpdateNewPassword, out hashedPassword, out passwordSalt);

            var dbUpdateUserModel = new DbUpdateUserModel
            {
                UserToUpdateCurrentUsername = updateUserModel.UserToUpdateCurrentUsername,
                UserToUpdateNewUsername     = updateUserModel.UserToUpdateNewUsername,
                Password     = hashedPassword,
                PasswordSalt = passwordSalt
            };

            var createdUser = await _userRepository.UpdateUser(dbUpdateUserModel).ConfigureAwait(false);

            if (createdUser == null)
            {
                return(null);
            }

            return(new User
            {
                Id = createdUser.Id,
                Username = createdUser.Username,
                Token = CreateJwt($"{createdUser.Id}")
            });
        }
Beispiel #2
0
        // api/admin/updateuser/{id}?sessionKey={sessionKey}
        public HttpResponseMessage UpdateUser([FromBody] AdminUpdateUserModel userToUpdate, string sessionKey, int id)
        {
            var response = this.PerformOperationAndHandleExceptions(() =>
            {
                this.CheckIfUserIsAdmin(sessionKey);

                var user = (from currentUser in context.Users
                            where currentUser.Id == id
                            select currentUser).FirstOrDefault();

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

                user.Username   = userToUpdate.Username ?? user.Username;
                user.Nickname   = userToUpdate.Nickname ?? user.Nickname;
                user.WebSite    = userToUpdate.WebSite ?? user.WebSite;
                user.Gender     = userToUpdate.Gender == Gender.Unknown ? user.Gender : userToUpdate.Gender;
                user.Hometown   = userToUpdate.Hometown ?? user.Hometown;
                user.Birthday   = userToUpdate.Birthday ?? user.Birthday;
                user.Email      = userToUpdate.Email ?? user.Email;
                user.Occupation = userToUpdate.Occupation ?? user.Occupation;
                user.AboutMe    = userToUpdate.AboutMe ?? user.AboutMe;

                if (user.UserType != UserType.Admin && userToUpdate.UserType == UserType.Admin)
                {
                    user.UserType = UserType.Admin;
                }
                else if (user.UserType == UserType.Regular && userToUpdate.UserType == UserType.Lecturer)
                {
                    user.UserType = UserType.Lecturer;
                }

                context.SaveChanges();
                return(Request.CreateResponse(HttpStatusCode.Accepted));
            });

            return(response);
        }