- JWT strategy: Option B (GoTrue as OIDC proxy, not direct Keycloak JWT) - Self-registration enabled in Keycloak realm - Multiple collectives per user with sidebar switcher - Invitations are link-only (no email/Resend integration) - Avatar upload uses in-browser crop (cropperjs) at 1:1 ratio - Removed Edge Functions from plan; invitation logic handled in SvelteKit server actions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
142 lines
3.2 KiB
JSON
142 lines
3.2 KiB
JSON
{
|
|
"id": "colectivo",
|
|
"realm": "colectivo",
|
|
"displayName": "Colectivo",
|
|
"enabled": true,
|
|
"sslRequired": "external",
|
|
"registrationAllowed": true,
|
|
"loginWithEmailAllowed": true,
|
|
"duplicateEmailsAllowed": false,
|
|
"resetPasswordAllowed": true,
|
|
"editUsernameAllowed": false,
|
|
"bruteForceProtected": true,
|
|
"accessTokenLifespan": 3600,
|
|
"refreshTokenMaxReuse": 0,
|
|
"offlineSessionMaxLifespanEnabled": false,
|
|
"clients": [
|
|
{
|
|
"clientId": "colectivo-web",
|
|
"name": "Colectivo Web App",
|
|
"enabled": true,
|
|
"publicClient": true,
|
|
"standardFlowEnabled": true,
|
|
"implicitFlowEnabled": false,
|
|
"directAccessGrantsEnabled": false,
|
|
"serviceAccountsEnabled": false,
|
|
"protocol": "openid-connect",
|
|
"attributes": {
|
|
"pkce.code.challenge.method": "S256"
|
|
},
|
|
"redirectUris": [
|
|
"http://localhost:5173/*",
|
|
"http://localhost:3000/*"
|
|
],
|
|
"webOrigins": [
|
|
"http://localhost:5173",
|
|
"http://localhost:3000"
|
|
],
|
|
"fullScopeAllowed": true,
|
|
"defaultClientScopes": [
|
|
"web-origins",
|
|
"profile",
|
|
"roles",
|
|
"email"
|
|
],
|
|
"optionalClientScopes": [
|
|
"address",
|
|
"phone",
|
|
"offline_access",
|
|
"microprofile-jwt"
|
|
]
|
|
}
|
|
],
|
|
"users": [
|
|
{
|
|
"id": "11111111-1111-1111-1111-111111111111",
|
|
"username": "ana",
|
|
"email": "ana@dev.local",
|
|
"emailVerified": true,
|
|
"enabled": true,
|
|
"firstName": "Ana",
|
|
"lastName": "García",
|
|
"credentials": [
|
|
{
|
|
"type": "password",
|
|
"value": "test1234",
|
|
"temporary": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "22222222-2222-2222-2222-222222222222",
|
|
"username": "borja",
|
|
"email": "borja@dev.local",
|
|
"emailVerified": true,
|
|
"enabled": true,
|
|
"firstName": "Borja",
|
|
"lastName": "López",
|
|
"credentials": [
|
|
{
|
|
"type": "password",
|
|
"value": "test1234",
|
|
"temporary": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "33333333-3333-3333-3333-333333333333",
|
|
"username": "carmen",
|
|
"email": "carmen@dev.local",
|
|
"emailVerified": true,
|
|
"enabled": true,
|
|
"firstName": "Carmen",
|
|
"lastName": "Martínez",
|
|
"credentials": [
|
|
{
|
|
"type": "password",
|
|
"value": "test1234",
|
|
"temporary": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "44444444-4444-4444-4444-444444444444",
|
|
"username": "david",
|
|
"email": "david@dev.local",
|
|
"emailVerified": true,
|
|
"enabled": true,
|
|
"firstName": "David",
|
|
"lastName": "Fernández",
|
|
"credentials": [
|
|
{
|
|
"type": "password",
|
|
"value": "test1234",
|
|
"temporary": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "55555555-5555-5555-5555-555555555555",
|
|
"username": "eva",
|
|
"email": "eva@dev.local",
|
|
"emailVerified": true,
|
|
"enabled": true,
|
|
"firstName": "Eva",
|
|
"lastName": "Ruiz",
|
|
"credentials": [
|
|
{
|
|
"type": "password",
|
|
"value": "test1234",
|
|
"temporary": false
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"scopeMappings": [],
|
|
"clientScopeMappings": {},
|
|
"roles": {
|
|
"realm": [],
|
|
"client": {}
|
|
}
|
|
}
|