This setup implements Custom Auth as documented in the Nuxt Studio documentation. Here's how it works:
-
User Management: Users are stored in the
STUDIO_USERSenvironment variable- Format:
email1:password1:name1,email2:password2:name2 - Example:
admin@datalogics.com:securepass123:Admin User,john@datalogics.com:password456:John Doe
- Format:
-
Login Flow:
- User visits
/_studio→ Middleware checks auth → Redirects to/studio/loginif not authenticated - User enters email/password on login page
POST /api/studio/loginvalidates credentials- If valid,
setStudioUserSession()creates the session - User redirected to
/_studiowhere Studio detects the session
- User visits
-
Session Management:
- Studio automatically detects the session using
getStudioUserSession() - Logout clears session via
clearStudioUserSession()
- Studio automatically detects the session using
✅ server/api/studio/login.ts - Login endpoint (matches docs example)
✅ server/api/studio/logout.ts - Logout endpoint (matches docs example)
✅ server/api/studio/check.ts - Auth check endpoint
✅ pages/studio/login.vue - Login page UI
✅ middleware/studio-auth.ts - Protects /_studio route
The implementation matches the official docs:
- ✅ Uses
setStudioUserSession(event, user)- Line 36 in login.ts - ✅ Uses
clearStudioUserSession(event)- Line 5 in logout.ts - ✅ Required session fields:
name,email,providerId,avatar- All present - ✅ Redirects after login - Uses
sendRedirect(event, '/')as per docs - ✅ Personal Access Token required - Set via
STUDIO_GITHUB_TOKENenv var
-
Create GitHub Personal Access Token (from
DatalogicsMktaccount) -
Add to Netlify Environment Variables:
STUDIO_GITHUB_TOKEN= Your PATSTUDIO_USERS=email1:password1:name1,email2:password2:name2
-
Create Users:
- Format:
email:password:displayname - Multiple users separated by commas
- Example:
ryan@datalogics.com:mypassword123:Ryan Porter,jane@datalogics.com:pass456:Jane Doe
- Format:
-
Deploy and test at
/_studio
- No database needed - Users are stored in environment variables
- Passwords are plain text (for simplicity) - Use strong passwords
- To add users: Update
STUDIO_USERSenv var in Netlify and redeploy - To remove users: Remove from the
STUDIO_USERSstring
- Consider using bcrypt for password hashing
- Store hashed passwords in env vars
- Or migrate to a proper database/user management system
- Visit
/_studio→ Should redirect to/studio/login - Enter credentials from
STUDIO_USERS - After login → Redirected to
/_studiowith Studio interface - All Git operations will use
DatalogicsMktaccount via the PAT