public void CreateAndUpdateUser()
        {
            var authentication = new Authentication(_baseApiUrl, _baseApiUsername, _baseApiPassword);

            var users = new Users(authentication);

            var username = Guid.NewGuid().ToString();

            var userToCreate = new UserPutRequest
            {
                Username         = username,
                FirstName        = "Test",
                LastName         = "User",
                Email            = "*****@*****.**",
                StartDateTimeUtc = DateTime.UtcNow.AddDays(-10)
            };

            // The comply365 API only takes in a list for all requests to speed up processing, so we need a new list here even though there is only one object in it
            var userPutRequest = new List <UserPutRequest>();

            userPutRequest.Add(userToCreate);

            var usersPutResponse = users.PutUsers(userPutRequest);

            // let's make sure the request was a success
            Assert.IsTrue(usersPutResponse.Where(x => x.Data.Username.Equals(username)).Select(x => x.IsSuccess).Single());
        }
Ejemplo n.º 2
0
        public async Task <UserDTO> UpdateAsync(UserPutRequest model, UserManager <ApplicationUser> userManager, ClaimsPrincipal currentUser)
        {
            try
            {
                var appUser = await userManager.FindByIdAsync(model.Id.ToString());

                if (appUser == null)
                {
                    throw new Exception($"No existe el usuario con id {model.Id}");
                }

                ApplicationUser user = await userManager.GetUserAsync(currentUser);

                if ((!await userManager.IsInRoleAsync(user, "SuperUser") && await userManager.IsInRoleAsync(appUser, "SuperUser")) ||
                    (!model.IsProfile && !await userManager.IsInRoleAsync(user, "SuperUser") && await userManager.IsInRoleAsync(appUser, "Admin")))
                {
                    throw new Exception($"No tienes permisos para editar el usuario {appUser.UserName}");
                }

                var userFoundEmail = userManager.Users.FirstOrDefault(u => u.Id != model.Id && u.Email.ToUpper().Trim().Equals(model.Email.ToUpper().Trim()));
                if (userFoundEmail != null)
                {
                    throw new Exception($"Ya existe otro usuario con el Email {model.Email}");
                }

                var userFoundName = userManager.Users.FirstOrDefault(u => u.Id != model.Id && u.UserName.ToUpper().Trim().Equals(model.Username.ToUpper().Trim()));
                if (userFoundName != null)
                {
                    throw new Exception($"Ya existe otro usuario {model.Username}");
                }

                appUser.UserName    = model.Username;
                appUser.Name        = model.Name;
                appUser.Surname     = model.Surname;
                appUser.PhoneNumber = model.PhoneNumber;
                appUser.Email       = model.Email;
                appUser.IsActive    = model.IsActive;

                var upadateResult = await userManager.UpdateAsync(appUser);

                if (!upadateResult.Succeeded)
                {
                    throw new Exception($"ERROR actualizando los datos de usuario - {upadateResult.Errors}");
                }

                return(await ModelToDTOAsync(appUser, userManager));
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
Ejemplo n.º 3
0
        public async Task WhenAsync(CreateUserDto c)
        {
            var idObj         = (c as ICreateUser).UserId;
            var uriParameters = new UserUriParameters();

            uriParameters.Id = idObj;

            var req = new UserPutRequest(uriParameters, (CreateUserDto)c);

            var resp = await _ramlClient.User.Put(req);

            UserProxyUtils.ThrowOnHttpResponseError(resp);
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Update(UserPutRequest model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    throw new Exception("Petición de actualización inválida");
                }

                ClaimsPrincipal currentUser = User;

                return(Ok(await _userService.UpdateAsync(model, _userManager, currentUser)));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }