RLS Examples
Practical Row-Level Security patterns for common application types. Important: Base44 RLS supports:- Logical operators:
$or,$and,$norfor combining conditions - Field operators (for
data.*fields):$in,$nin,$ne,$all - user_condition: Equality only (no operators)
Contents
- Simple Patterns (JSON Schema)
- Using Operators
- Field-Level Security Examples
- Complex Patterns (Dashboard UI or Backend)
- Best Practices
Simple Patterns (JSON Schema)
These patterns work with the JSON schema RLS format.Todo App - Owner-only access
Users see and manage only their own tasks.Contact Form - Public create, admin-only read
Anyone can submit, only admins can view submissions.User Profile - Self-management
Users can only access their own profile.Department Data - Same department access
Users can only see records from their department.Subscription - Admin-managed, user-readable via email field
Private Data - Owner-only
Public Read, Authenticated Write
Anyone can read, only logged-in users can create/edit their own records.Using Operators
Logical Operators
Combine multiple conditions using$or, $and, or $nor:
Owner OR Admin access:
Field Operators for data.* Fields
Use$in, $nin, $ne, $all for comparing entity data fields:
Access based on tags ($in):
Combining Logical and Field Operators
Field-Level Security Examples
Control access to specific fields within an entity.Sensitive Salary Field
Admin-Only Internal Fields
Complex Patterns (Dashboard UI or Backend)
Some patterns may still require the Dashboard UI or backend functions.Bidirectional Relationships (e.g., Friendships, Matches)
Requirement: Either party in a relationship should have access. Now possible with $or:- Entity redesign: Store two records per relationship (one for each party)
- Backend function: Query with custom logic
Complex Business Logic
Requirement: Access depends on multiple entity fields with complex conditions. JSON Schema limitation: While operators help, very complex business logic may still be hard to express. Solution options:- Backend function: Implement custom access logic
- Combine simpler rules: Break complex rules into simpler entity-level and field-level rules