Ability not activating in client ; Effects not applied in client

I have the following base-character, base player-controller and ABILITY_SYSTEM_COMPONENT classes.

Abilities and starting effects are not being initialized in the client. It does happen on the server.

So technically, a server has his attributes updated and can activate abilities. But client is unable to have his attributes updated, nor is able to cast any ability.

Base Character:

void AChar::PossessedBy(AController* NewController)
{
	Super::PossessedBy(NewController);

	ABILITY_SYSTEM_COMPONENT->InitAbilityActorInfo(this, this);

	SetOwner(NewController);

	// initializing starting abilities and effects 
	ABILITY_SYSTEM_COMPONENT->initialize_ASC();
	
}

Player Controller:

// Happens in the client
void Abase_player_controller::AcknowledgePossession(APawn* P)
{
	Super::AcknowledgePossession(P);

	ACHAR * char_ = Cast<ACHAR>(P);

	char_->GetAbilitySystemComponent()->InitAbilityActorInfo(char_, char_);
}

My class - UABILITY_SYSTEM_COMPONENT, sub-classed from UAbilitySystemComponent:

void UABILITY_SYSTEM_COMPONENT::initialize_ASC()
{
	if (GetOwnerRole() != ROLE_Authority) return;

	initialize_abilities();

	initial_effects();
}


void UABILITY_SYSTEM_COMPONENT::initialize_abilities()
{
	for (const auto & pair_ : __char->ability_container)
	{
		if ( !(
			pair_.Value &&
			pair_.Key.IsValid()
		) ) continue;

		FGameplayAbilitySpec ability_spec_ = FGameplayAbilitySpec(pair_.Value, 1);

		GiveAbility(ability_spec_);
	}

	b_initial_abilities_provided = true;
}

// __char in an Actor of the class ACHAR that has 
// An input-tag - ability class map.

void UABILITY_SYSTEM_COMPONENT::initial_effects()
{
	if (!__char) return;

	for (const auto & effect_class_ : __char->initial_effect_container)
	{
		FGameplayEffectContextHandle current_effect_context_handle_;
		current_effect_context_handle_.AddSourceObject(this);

		FGameplayEffectSpecHandle current_effect_spec_handle_ = MakeOutgoingSpec(
			 effect_class_,
			 __char->level,
			 current_effect_context_handle_
		);

		ApplyGameplayEffectSpecToSelf(
			*current_effect_spec_handle_.Data.Get()
		);

	}

	b_initial_effects_applied = true;
}

// __char also has a TArray of starting effect classes

Interestingly, upon using a breakpoint at the time of button activation of the ability,
in the client, I see that there are absolutely no abilities granted!

Rather the server has abilities granted.

The property - number of activatable abilities, in the ASC shows 11 abilities in Server, but 0 in client!

What is the issue? How to resolve?

And also, should I continue to use GAS or should I build my own inspired by GAS?

Thanks in advance.

I managed to resolve it myself.

I did an Authority check, and committed the ability only on server, not on client.

Now, gameplay ability was correctly committed once by the server, and attribute value changed appropriately.