Skip to content

Commit dd2d0eb

Browse files
committed
feat(keycloak): add user profile for each realm.
chore: do not allow user to update email/username.
1 parent ddd7860 commit dd2d0eb

3 files changed

Lines changed: 112 additions & 1 deletion

File tree

.github/workflows/cd-keycloak.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
host: ${{ secrets.HOST }}
2222
username: deploy
2323
key: ${{ secrets.SSH_PRIVATE_KEY }}
24-
source: "infra/compose/docker-compose.keycloak.yml,infra/keycloak/realm-export.json,infra/scripts/,Makefile"
24+
source: "infra/compose/docker-compose.keycloak.yml,infra/keycloak/,infra/scripts/,Makefile"
2525
target: "/home/deploy/survey-app"
2626
strip_components: 0
2727
rm: false

infra/compose/docker-compose.keycloak.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ services:
8181
KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
8282
volumes:
8383
- ../keycloak/realm-export.json:/opt/keycloak/data/import/realm-export.json
84+
- ../keycloak/user-profile.json:/opt/keycloak/data/import/user-profile.json
8485
depends_on:
8586
- db
8687

infra/keycloak/user-profile.json

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
{
2+
"attributes": [
3+
{
4+
"name": "username",
5+
"displayName": "${username}",
6+
"validations": {
7+
"length": {
8+
"min": 3,
9+
"max": 255
10+
},
11+
"username-prohibited-characters": {},
12+
"up-username-not-idn-homograph": {}
13+
},
14+
"permissions": {
15+
"view": [
16+
"admin",
17+
"user"
18+
],
19+
"edit": [
20+
"admin"
21+
]
22+
},
23+
"multivalued": false
24+
},
25+
{
26+
"name": "email",
27+
"displayName": "${email}",
28+
"validations": {
29+
"email": {},
30+
"length": {
31+
"max": 255
32+
}
33+
},
34+
"required": {
35+
"roles": [
36+
"user"
37+
]
38+
},
39+
"permissions": {
40+
"view": [
41+
"admin",
42+
"user"
43+
],
44+
"edit": [
45+
"admin"
46+
]
47+
},
48+
"multivalued": false
49+
},
50+
{
51+
"name": "firstName",
52+
"displayName": "${firstName}",
53+
"validations": {
54+
"length": {
55+
"max": 255
56+
},
57+
"person-name-prohibited-characters": {}
58+
},
59+
"required": {
60+
"roles": [
61+
"user"
62+
]
63+
},
64+
"permissions": {
65+
"view": [
66+
"admin",
67+
"user"
68+
],
69+
"edit": [
70+
"admin",
71+
"user"
72+
]
73+
},
74+
"multivalued": false
75+
},
76+
{
77+
"name": "lastName",
78+
"displayName": "${lastName}",
79+
"validations": {
80+
"length": {
81+
"max": 255
82+
},
83+
"person-name-prohibited-characters": {}
84+
},
85+
"required": {
86+
"roles": [
87+
"user"
88+
]
89+
},
90+
"permissions": {
91+
"view": [
92+
"admin",
93+
"user"
94+
],
95+
"edit": [
96+
"admin",
97+
"user"
98+
]
99+
},
100+
"multivalued": false
101+
}
102+
],
103+
"groups": [
104+
{
105+
"name": "user-metadata",
106+
"displayHeader": "User metadata",
107+
"displayDescription": "Attributes, which refer to user metadata"
108+
}
109+
]
110+
}

0 commit comments

Comments
 (0)