Latest Updates

Documenting code, one commit at a time.

Multi-Tenancy in Laravel with PostgreSQL Schemas: A Migration Story

Introduction

Row-level filtering is common for multi-tenancy, but what if you need stronger isolation? At Reimpact's platform, we're migrating towards PostgreSQL schemas to achieve true tenant separation, leveraging Laravel, Filament, and the middleware pattern.

This post details our approach to dynamically setting the PostgreSQL search_path for each tenant, ensuring data isolation and

Read more

Skipping Session Validation Middleware During Impersonation in Platform

The Problem

In the Reimpact platform, we encountered an issue where session validation middleware was causing unexpected logouts during user impersonation. Specifically, the CheckValidSession and EnsureSingleSession middlewares were interfering with the impersonation process, leading to a frustrating user experience.

The Cause

The root cause of the problem lies in how the session is

Read more
PHP CSS UI

The Case for Subtlety: When to Tone Down UI Elements

Sometimes, the most effective UI changes are the ones that make things less noticeable. Consider a 'reset chat' button. Initially, it might seem intuitive to style it with a prominent color like red, signaling a potentially destructive action. However, in practice, this can create unnecessary visual noise and even user anxiety.

The Problem with Red

Red is often associated with errors,

Read more

Streamlining Onboarding with Middleware Bypass Logic

Introduction

Imagine a scenario where specific user roles within an application are needlessly subjected to onboarding processes designed for different user groups. This post explores how to selectively bypass middleware to optimize the user experience for marketing admins in the 'landing' project.

The Problem: Unnecessary Onboarding Steps

In many applications, middleware is used to

Read more
PHP CSS UI

Unifying Chat Components for a Consistent Onboarding Experience

This post explores the recent efforts to unify the visual style of chat components within the Breniapp/brenia project, focusing on creating a consistent onboarding experience for users.

The Goal

The primary objective was to standardize the look and feel of various chat components, including Brand Assistant, Brand Section, Skeleton Section, and QA chats.

Read more

Validating Livewire Requests with Middleware in the Platform Project

In the Reimpact/platform project, a recent update addresses an issue where Livewire update requests were being incorrectly blocked by a custom middleware. This post details the problem and the solution implemented.

The Problem

The ValidationUserMiddleware was designed to handle user authentication and validation for incoming requests. However, it was inadvertently blocking unauthenticated

Read more

Handling Livewire Requests with Laravel Middleware

The Problem

In a Laravel application, particularly when using Livewire, maintaining consistent authentication behavior across different types of requests can be tricky. A common issue arises when Livewire requests, which often send Content-Type: application/json, are not correctly handled by authentication middleware, leading to unexpected 401 errors instead of redirects to the login page.

Read more

Troubleshooting 401 Errors After Login in Laravel Applications

Introduction

Experiencing a 401 Unauthorized error immediately after a successful login can be a frustrating issue in Laravel applications. This often stems from incorrect redirection targets or misconfigured middleware. Let's explore how to diagnose and resolve such problems, specifically within the context of projects using middleware for access control.

Understanding the Problem

Read more
PHP refactor UI

Streamlining Credit Settings in Breniapp

Introduction

In the Breniapp project, we've recently refactored the credit settings page to simplify the user interface and improve maintainability. The primary goal was to remove redundant configuration options and consolidate credit management under a more centralized approach.

The Old Approach: Redundancy and Confusion

Previously, the credit settings page exposed pack_size and

Read more