diff --git a/contract/contracts/event_registry/src/lib.rs b/contract/contracts/event_registry/src/lib.rs
index ad31a2b..dd01384 100644
--- a/contract/contracts/event_registry/src/lib.rs
+++ b/contract/contracts/event_registry/src/lib.rs
@@ -505,6 +505,11 @@ impl EventRegistry {
storage::get_event(&env, event_id)
}
+ /// Returns the organizer address for a given event ID, or `None` if the event does not exist.
+ pub fn get_organizer_address(env: Env, event_id: String) -> Option
{
+ storage::get_event(&env, event_id).map(|e| e.organizer_address)
+ }
+
/// Returns the total number of tickets sold for an event across all tiers.
pub fn get_total_tickets_sold(env: Env, event_id: String) -> Result {
let event = storage::get_event(&env, event_id).ok_or(EventRegistryError::EventNotFound)?;
@@ -1019,11 +1024,9 @@ impl EventRegistry {
event_id: String,
scanner: Address,
) -> Result<(), EventRegistryError> {
- let event_info =
- storage::get_event(&env, event_id.clone()).ok_or(EventRegistryError::EventNotFound)?;
-
- // Only the organizer can authorize scanners
- event_info.organizer_address.require_auth();
+ let organizer = Self::get_organizer_address(env.clone(), event_id.clone())
+ .ok_or(EventRegistryError::EventNotFound)?;
+ organizer.require_auth();
storage::authorize_scanner(&env, event_id.clone(), &scanner);
@@ -1032,7 +1035,7 @@ impl EventRegistry {
ScannerAuthorizedEvent {
event_id,
scanner,
- authorized_by: event_info.organizer_address,
+ authorized_by: organizer,
timestamp: env.ledger().timestamp(),
},
);
diff --git a/contract/contracts/ticket_payment/src/contract.rs b/contract/contracts/ticket_payment/src/contract.rs
index 99cc4e3..c0b78da 100644
--- a/contract/contracts/ticket_payment/src/contract.rs
+++ b/contract/contracts/ticket_payment/src/contract.rs
@@ -102,6 +102,7 @@ pub mod event_registry {
pub trait EventRegistryInterface {
fn get_event_payment_info(env: Env, event_id: String) -> PaymentInfo;
fn get_event(env: Env, event_id: String) -> Option;
+ fn get_organizer_address(env: Env, event_id: String) -> Option;
fn increment_inventory(env: Env, event_id: String, tier_id: String, quantity: u32);
fn decrement_inventory(env: Env, event_id: String, tier_id: String);
fn get_global_promo_bps(env: Env) -> u32;