Concierge
view release on metacpan or search on metacpan
lib/Concierge.pm view on Meta::CPAN
# Warn if inconsistent (exists in one but not both)
if ($auth_exists != $users_exists) {
$response->{warning} = 'User exists in only one component - data inconsistency detected';
}
return $response;
}
# Update user data: modify user record in Users component
sub update_user_data ($self, $user_id, $update_data) {
return { success => 0, message => 'user_id is required' }
unless defined $user_id && length($user_id);
return { success => 0, message => 'update_data must be a hash reference' }
unless ref $update_data eq 'HASH';
# Filter update data (excludes user_id, password, confirm_password)
my $filtered_updates = $user_update_filter->($update_data);
return { success => 0, message => 'No valid fields to update' }
unless $filtered_updates && keys %$filtered_updates;
lib/Concierge/Desk/Base.pm view on Meta::CPAN
}
sub remove_record ($self, $id) {
croak ref($self), " must implement remove_record";
}
sub get_record ($self, $id, @fields) {
croak ref($self), " must implement get_record";
}
sub update_record ($self, $id, $updates) {
croak ref($self), " must implement update_record";
}
sub list_records ($self, $filter='', $opts={}) {
croak ref($self), " must implement list_records";
}
1;
__END__
lib/Concierge/Desk/Base.pm view on Meta::CPAN
unless exists $self->{records}{$id};
my $data = $self->{records}{$id};
if (@fields) {
my %selected = map { $_ => $data->{$_} }
grep { exists $data->{$_} } @fields;
return { success => 1, record => \%selected };
}
return { success => 1, record => $data };
}
sub update_record ($self, $id, $updates) {
return { success => 0, message => "Record '$id' not found" }
unless exists $self->{records}{$id};
$self->{records}{$id} = { %{$self->{records}{$id}}, %$updates };
return { success => 1, message => "Organization '$id' updated" };
}
sub list_records ($self, $filter='', $opts={}) {
my @ids = sort keys %{$self->{records}};
return { success => 1, ids => \@ids, count => scalar @ids }
unless $opts->{include_data};
lib/Concierge/Desk/User.pm view on Meta::CPAN
sub session ($self) {
return $self->{session}; # undef if no session (visitor)
}
sub get_session_data ($self) {
return undef unless $self->{session};
my $result = $self->{session}->get_data();
return $result->{value} // {};
}
sub update_session_data ($self, $updates) {
return undef unless $self->{session};
my $result = $self->{session}->get_data();
my $current = $result->{value} // {};
# Merge updates into current data
for my $key (keys %$updates) {
$current->{$key} = $updates->{$key};
}
lib/Concierge/Desk/User.pm view on Meta::CPAN
# Fetch fresh data from backend, update memory snapshot
return undef unless $self->{_get_user_data};
my $result = $self->{_get_user_data}->();
return undef unless $result->{success};
$self->{user_data} = $result->{user};
return 1;
}
sub update_user_data ($self, $updates) {
# Update backend AND memory snapshot
return undef unless $self->{_update_user_data};
my $result = $self->{_update_user_data}->($updates);
return undef unless $result->{success};
# Update memory snapshot with new values
for my $field (keys %$updates) {
$self->{user_data}{$field} = $updates->{$field};
}
( run in 0.861 second using v1.01-cache-2.11-cpan-7fcb06a456a )