# How To ## Authentication Setup (Ory) ### Prerequisites 1. Copy `.env.example` to `.env` and configure: - `PORT=3000` (your app port) - `TUNNEL_PORT=4000` (Ory tunnel port) ### Running the Application with Ory 1. Start the database and services: ```bash docker-compose up ``` 2. Apply the Ory identity migration: ```bash docker exec -i $(docker ps -q -f name=db) psql -U party -d partydb < migrations/010_add_ory_identity_id.sql ``` 3. In one terminal, start your Go server: ```bash go run cmd/server/main.go ``` 4. In another terminal, start the Ory tunnel: ```bash npx @ory/cli tunnel --dev http://localhost:3000 ``` 5. Access your app through the tunnel URL (typically `http://localhost:4000`) ### How It Works - Users authenticate through Ory's hosted UI - On first login, a user record is created in your database with their Ory identity ID - Protected routes (`/profile`, `/api/bookings`) require authentication - User context is available in handlers via `auth.GetUser(r.Context())` ### Amending postgres table ```bash docker exec -i $(docker ps -q -f name=db) psql -U party -d partydb < migrations/002_add_service_image_url.sql ``` ### Entering Postgres CLI ```bash docker exec -it $(docker ps -q -f name=db) psql -U party -d partydb ``` ### Run Ory in Docker ```bash docker run --rm -it oryd/ory help ```