Example #1
0
    public async Task <IActionResult> EditByAdminAsync(UserEditAdminDto parameters)
    {
        _ = parameters ?? throw new ArgumentNullException(nameof(parameters));

        User user = await _userManager.FindByNameAsync(parameters.UserName);

        if (user is null)
        {
            return(BadRequest("Utilisateur invalide."));
        }

        if (parameters.PlayerId is not null && await _playerService.GetAsync(parameters.PlayerId) is null)
        {
            return(BadRequest("L'id de joueur est invalide."));
        }

        IdentityResult result;

        user.PlayerId = parameters.PlayerId;

        result = await _userManager.UpdateAsync(user);

        if (!result.Succeeded)
        {
            return(BadRequest(result.Errors.FirstOrDefault()?.Description));
        }

        result = await _userManager.RemoveFromRolesAsync(user, await _userManager.GetRolesAsync(user));

        if (!result.Succeeded)
        {
            return(BadRequest(result.Errors.FirstOrDefault()?.Description));
        }

        result = await _userManager.AddToRolesAsync(user, parameters.Roles);

        return(result.Succeeded
            ? Ok()
            : BadRequest(result.Errors.FirstOrDefault()?.Description));
    }
        public async Task <IActionResult> EditUser([FromBody] UserEditAdminDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new RequestMessageResponse()
                {
                    Success = false, Message = "Bad Request"
                }));
            }

            // Check if valid user
            var currentUser = await _identityService.GetCurrentPersonIdentityAsync();

            if (currentUser == null)
            {
                return(BadRequest(new RequestMessageResponse()
                {
                    Success = false, Message = "Forbidden"
                }));
            }

            // Get user from Db
            var user = await _userService.GetUserById(model.Id);

            if (user == null)
            {
                return(BadRequest(new RequestMessageResponse()
                {
                    Success = false, Message = "Bad Request"
                }));
            }

            // Set new data
            user.EmailConfirmed = model.EmailConfirmed;
            user.PhoneNumber    = model.PhoneNumber;
            user.Firstname      = model.Firstname;
            user.Lastname       = model.Lastname;
            user.SetGender(model.Gender);
            user.LockoutEnabled = model.LockoutEnabled;

            // Edit role
            if (user.UserRoles[0].RoleId != model.Role)
            {
                var oldRole = user.UserRoles[0].RoleId;

                await _userService.ChangeUserRole(user, oldRole, model.Role);
            }

            // Save data
            await _userManager.UpdateAsync(user);

            // If edit email
            if (model.EditEmail)
            {
                var token = await _userManager.GenerateChangeEmailTokenAsync(user, model.Email);

                var result = await _userManager.ChangeEmailAsync(user, model.Email, token);

                if (result.Succeeded)
                {
                    await _userManager.SetUserNameAsync(user, model.Email);
                }
            }

            // Return result
            return(new OkObjectResult(new RequestMessageResponse()
            {
                Success = true, Message = "Success"
            }));
        }