public async Task <IServiceResult> Register([FromBody] UserSaved register)
        {
            try
            {
                var user = await _userManager.FindByEmailAsync(register.Email);

                if (user != null)
                {
                    return(new ServiceResult(false, message: "Duplicate user"));
                }
                user = _mapper.Map <UserSaved, User>(register);
                var result = await _userManager.CreateAsync(user, register.Password);

                if (result.Succeeded)
                {
                    var currentUser = await _userManager.FindByNameAsync(user.UserName);

                    var role = await _userManager.AddToRoleAsync(currentUser, "User");

                    _logger.LogInformation($"User {user.Email} with id: {user.Id} created.");
                    return(new ServiceResult(payload: currentUser.UserName));
                }
                return(new ServiceResult(false, message: " Duplicate UserName "));
            }
            catch (Exception e)
            {
                _logger.LogError($"Can not create user {register.Email}. {e.Message}");
                return(new ServiceResult(false, message: e.Message));
            }
        }
Exemple #2
0
        /// <summary>
        /// Savers changes to a user to the database
        /// </summary>
        /// <param name="user"></param>
        public void SaveUser(IUser user)
        {
            if (UserSaving.IsRaisedEventCancelled(new SaveEventArgs <IUser>(user), this))
            {
                return;
            }

            var uow = _uowProvider.GetUnitOfWork();

            using (var repository = _repositoryFactory.CreateUserRepository(uow))
            {
                repository.AddOrUpdate(user);
                uow.Commit();
            }

            UserSaved.RaiseEvent(new SaveEventArgs <IUser>(user, false), this);
        }
Exemple #3
0
        public async Task PublishSaveEventAsync(int userId)
        {
            var dbUser = _repository.FindBy <User>(u => u.Id == userId)
                         .Include(u => u.UserGroups)
                         .ThenInclude(ug => ug.ApplicationUserGroup)
                         .Include(u => u.Plants)
                         .FirstOrDefault();

            if (dbUser == null)
            {
                _logger.LogError($"User with id {userId} has not been found in the database. Cannot publish save event.");
                return;
            }

            var plants = dbUser.Plants.Select(up => new UserPlantSaved {
                UserId  = up.UserId,
                PlantId = up.PlantId
            }
                                              ).ToArray();

            var userGroups = dbUser.UserGroups.ToList().Select(ug => new UserGroupSaved {
                Id = ug.ApplicationUserGroupId
            }
                                                               ).ToArray();

            var user = new UserSaved {
                Id        = dbUser.Id,
                UserName  = dbUser.UserName,
                FirstName = dbUser.FirstName,
                LastName  = dbUser.LastName,
                Email     = dbUser.Email,
                IsDeleted = dbUser.IsDeleted,
                Plants    = plants,
                Groups    = userGroups
            };

            await _busClient.PublishAsync <UserSaved>(user);
        }