示例#1
0
        public async Task <ActionResult> UpdateUser(Guid userId, [FromBody] DtoCreateUpdateUser updateUser)
        {
            try
            {
                Log.Information($"Executed UpdateUser({updateUser}) for user identifier: {userId}.");

                var resultUser = await this.userRepository.GetUserById(userId);

                if (resultUser == null)
                {
                    Log.Warning($"User with identifier {userId} not found.");
                    return(this.NotFound(userId));
                }

                resultUser              = this.autoMapper.Map <User>(updateUser);
                resultUser.Id           = userId;
                resultUser.PasswordHash = this.passwordHasher.HashPassword(resultUser, updateUser.Password);

                var updated = await this.userRepository.UpdateUser(resultUser);

                if (!updated)
                {
                    return(this.BadRequest(userId));
                }

                var returnUser = this.autoMapper.Map <DtoReadUser>(resultUser);
                return(this.Ok(returnUser));
            }
            catch (Exception ex)
            {
                Log.Fatal(ex.Message, ex);
                return(this.InternalServerError(ex));
            }
        }
示例#2
0
        public async Task <ActionResult> CreateUser([FromBody] DtoCreateUpdateUser createUser)
        {
            try
            {
                Log.Information($"Executed CreateUser({createUser}).");

                var user = this.autoMapper.Map <User>(createUser);
                user.CreatedAt = DateTimeOffset.Now;
                var identityResult = await this.userManager.CreateAsync(user, createUser.Password);

                await this.databaseContext.SaveChangesAsync();

                if (identityResult.Succeeded)
                {
                    var returnUser = this.autoMapper.Map <DtoReadUser>(user);
                    return(this.Ok(returnUser));
                }

                var identityErrors    = identityResult.Errors.Select(e => new IdentityErrorExt(e));
                var identityErrorList = identityErrors.ToList();
                Log.Fatal("Error with Asp.Net Core Identity: ", string.Join(";", identityErrorList));
                return(this.InternalServerError(identityErrorList));
            }
            catch (Exception ex)
            {
                Log.Fatal(ex.Message, ex);
                return(this.InternalServerError(ex));
            }
        }
示例#3
0
        public async Task <ActionResult> CreateUser([FromBody] DtoCreateUpdateUser createUser)
        {
            try
            {
                Log.Information($"Executed CreateUser({createUser}).");

                var user = this.autoMapper.Map <User>(createUser);
                user.Id = Guid.NewGuid();

                var userExists = await this.userRepository.UserNameExists(createUser.UserName);

                if (userExists)
                {
                    return(this.Conflict(createUser));
                }

                var inserted = await this.userRepository.InsertUser(user);

                if (!inserted)
                {
                    return(this.BadRequest(createUser));
                }

                var returnUser = this.autoMapper.Map <DtoReadUser>(user);
                return(this.Ok(returnUser));
            }
            catch (Exception ex)
            {
                Log.Fatal(ex.Message, ex);
                return(this.InternalServerError(ex));
            }
        }
示例#4
0
        public async Task <ActionResult> UpdateUser(long userId, [FromBody] DtoCreateUpdateUser updateUser)
        {
            try
            {
                Log.Information($"Executed UpdateUser({updateUser}) for user identifier: {userId}.");

                var resultUser = await this.databaseContext.Users.AsNoTracking().FirstOrDefaultAsync(b => b.Id == userId);

                if (resultUser == null)
                {
                    Log.Warning($"User with identifier {userId} not found.");
                    return(this.NotFound(userId));
                }

                var concurrencyStamp = resultUser.ConcurrencyStamp;
                var createdAt        = resultUser.CreatedAt;
                resultUser                  = this.autoMapper.Map <User>(updateUser);
                resultUser.UpdatedAt        = DateTimeOffset.Now;
                resultUser.PasswordHash     = this.passwordHasher.HashPassword(resultUser, updateUser.Password);
                resultUser.SecurityStamp    = new Guid().ToString();
                resultUser.ConcurrencyStamp = concurrencyStamp;
                resultUser.CreatedAt        = createdAt;
                resultUser.Id               = userId;

                var identityResult = await this.userManager.UpdateAsync(resultUser);

                await this.databaseContext.SaveChangesAsync();

                if (identityResult.Succeeded)
                {
                    var returnUser = this.autoMapper.Map <DtoReadUser>(resultUser);
                    returnUser.Id = userId;
                    return(this.Ok(returnUser));
                }

                var identityErrors    = identityResult.Errors.Select(e => new IdentityErrorExt(e));
                var identityErrorList = identityErrors.ToList();
                Log.Fatal("Error with Asp.Net Core Identity: ", string.Join(";", identityErrorList));
                return(this.InternalServerError(identityErrorList));
            }
            catch (Exception ex)
            {
                Log.Fatal(ex.Message, ex);
                return(this.InternalServerError(ex));
            }
        }