Skip to content

Commit 75ea4d7

Browse files
committed
chore(passport): change user organizations to roles
1 parent 0ca83b5 commit 75ea4d7

4 files changed

Lines changed: 24 additions & 9 deletions

File tree

rootfs/api/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ class User(AbstractUser):
99
email = models.EmailField(_('email address'), unique=True)
1010

1111
@property
12-
def organizations(self) -> list[str]:
12+
def roles(self) -> list[str]:
1313
results = []
1414
if self.is_superuser:
1515
results.append("admin")
1616
if self.is_staff:
1717
results.append("staff")
1818
if self.is_active:
19-
results.append(self.username)
19+
results.append("users")
2020
return results
2121

2222

rootfs/api/oauth2_validators.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,32 @@
33

44
class CustomOAuth2Validator(OAuth2Validator):
55

6-
oidc_claim_scope = None
6+
oidc_claim_scope = OAuth2Validator.oidc_claim_scope
7+
oidc_claim_scope.update({
8+
"id": "profile",
9+
"name": "profile",
10+
"username": "profile",
11+
"email": "email",
12+
"roles": "profile",
13+
"first_name": "profile",
14+
"last_name": "profile",
15+
"is_staff": "profile",
16+
"is_active": "profile",
17+
"is_superuser": "profile",
18+
"preferred_username": "profile",
19+
})
720

821
def get_additional_claims(self, request):
922
claims = super().get_additional_claims(request)
1023
claims["id"] = request.user.id
1124
claims["name"] = request.user.username
1225
claims["username"] = request.user.username
1326
claims["email"] = request.user.email
27+
claims["roles"] = request.user.roles
1428
claims["first_name"] = request.user.first_name
1529
claims["last_name"] = request.user.last_name
1630
claims["is_staff"] = request.user.is_staff
1731
claims["is_active"] = request.user.is_active
1832
claims["is_superuser"] = request.user.is_superuser
19-
claims["organizations"] = request.user.organizations
33+
claims["preferred_username"] = request.user.username
2034
return claims

rootfs/api/serializers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
class UserSerializer(serializers.ModelSerializer):
1818
class Meta:
1919
model = User
20-
fields = ('id', 'username', 'email', 'first_name', 'last_name',
21-
'is_staff', 'is_active', 'is_superuser', "organizations")
22-
read_only_fields = ('id', 'username', 'is_staff', 'is_active',
23-
'is_superuser', "organizations")
20+
fields = ('id', 'username', 'email', 'roles', 'first_name', 'last_name',
21+
'is_staff', 'is_active', 'is_superuser')
22+
read_only_fields = ('id', 'username', 'roles', 'is_staff', 'is_active',
23+
'is_superuser')
2424

2525

2626
class UserEmailSerializer(serializers.ModelSerializer):

rootfs/api/settings/production.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,10 +317,11 @@
317317
"REFRESH_TOKEN_EXPIRE_SECONDS": int(os.environ.get('REFRESH_TOKEN_EXPIRE_SECONDS', 60 * 86400)), # noqa
318318
"ROTATE_REFRESH_TOKEN": True,
319319
"SCOPES": {
320+
"email": "Email",
320321
"profile": "Profile",
321322
"openid": "OpenID Connect scope",
322323
},
323-
"DEFAULT_SCOPES": ['openid', ],
324+
"DEFAULT_SCOPES": ['openid', 'email', 'profile'],
324325
"DEFAULT_CODE_CHALLENGE_METHOD": 'S256',
325326
}
326327
OAUTH2_PROVIDER_APPLICATION_MODEL = 'api.Application'

0 commit comments

Comments
 (0)