useLodger

Welcome to useLodger

Africa's hospitality platform

Request a demo

useLodger · Africa-first hospitality SaaS · © 2026

Changelog

Latest: v1.10.0 — A dedicated security-hardening pass — privilege escalation, cross-tenant leaks, and payment races closed

What's new in
UseLodger

Every update, fix, and new feature — in one place. We ship frequently and document everything.

11

releases

110

changes

11

feature drops

Security

Fixed a privilege-escalation hole where any delegated worker (even one with only 'maintenance' access) could self-promote to full access via PropertyWorkerController::update() and InvitationController::store(), which were gated only by tenant membership, never the caller's own permission

Security

Fixed userCanOnTenant()'s same-tenant fast path returning true for any staff member whose tenant_id matched, with no role/permission check at all — every regular staff account (receptionist, housekeeping, anyone) could pass any hr.permission check

Security

Fixed hotel-side RBAC gaps mirroring the landlord-side holes: PaymentController::refund() had zero role check (any tenant member could refund), plus cross-tenant order-status access and a separate role-escalation path

Security

Closed a cross-tenant leak in ReportController::bookings() — zero tenant scoping on all three sub-queries meant any caller with the analytics module could see every tenant's booking data; reports routes now also require a staff role, not just the module

Security

Fixed cross-tenant housekeeping assignment on rooms, and gated Restaurant management behind role checks (three fully-unguarded endpoints)

Security

Gated notices/meetings writes behind their permission, and fixed a raw tenant_id being trusted directly in chat

Security

Removed duplicate vendors/invitations/property-roles routes that were silently overriding the permission gates added in an earlier commit

Fixed

CheckModule resolved a delegated worker's tenant via the raw tenant_id relation (null for anyone whose access comes from a PropertyRoleAssignment instead), locking every delegated worker out of landlord_management — found while live-testing the permission-gate work above

Security

Closed a payment-webhook race: the pending→successful transition wasn't locked, so a retried webhook could re-run commission recording on an already-settled payment

Security

Closed a wallet-debit race that could drive a balance negative — the funds check read a possibly-stale wallet_balance, and wasn't atomic with the decrement

Security

Prevented double-refunding the same payment — refund eligibility only checked payment status, not whether a refund was already queued, leaving a window between 'refund row created' and 'job completes'

Security

Closed the subscription/module renewal double-charge race — two overlapping scheduler runs could both see auto_renew=true and both call chargeAuthorization() against the tenant's saved card

Fixed

Fixed a real overbooking bug in Booking::scopeBlocking(), found while adding row-locking to BookingService::createSingle() to close a separate double-booking race

Security

Added defense-in-depth locking to ad-renewal processing, file-type allowlists to three upload endpoints, and a dedicated rate limit on refunds

New

Added multi-provider SMS routing (Kudi + Termii) — first piece of Africa expansion beyond Nigeria's primary carrier

New

Wired notifications through to the places that were silently missing them: payment_failed, ad auto-renewal, recruitment applicant/interviewer updates, an anonymity-safe whistleblower channel, maintenance requests, visitor passes, and payslip payment receipts

New

Added a manual-review fallback for identity verification for non-Nigerian users, and escalating panic-alert re-notification every 3 minutes until acknowledged (was push+in-app only)

Improved

Landlord dashboard: AI meeting-agenda drafting, a dedicated meeting link separate from the overloaded location field, a hard-to-miss panic-alert banner, poll voting info, richer job-opening/expense/vendor/maintenance forms with proper dropdowns, and Support promoted to a standalone nav item for every role

Fixed

Fixed operational summary defaulting to $ instead of ₦, a gap where paid bookings could skip commission recording entirely, and staff menus that were under-permissive for several roles

Get notified on new releases

We email release notes to all property owners automatically. Update your notification preferences in account settings.

Settings

Hotel AI Assistant

Online

Hello! 👋 I'm your Hotel AI Assistant. I can help with bookings, room status, pricing, operational insights and more. How can I help you today?

UseLodger Technologies Limited · Available 24/7