feat: support "permissionNames" field in JWT-Custom token (#4154)

This commit is contained in:
DacongDA
2025-09-06 00:05:47 +08:00
committed by GitHub
parent 21da9f5ff2
commit 89c6ef5aae
2 changed files with 7 additions and 1 deletions

View File

@@ -370,6 +370,12 @@ func getClaimsCustom(claims Claims, tokenField []string) jwt.MapClaims {
res[fieldName] = finalField.Interface()
}
} else if field == "permissionNames" {
permissionNames := []string{}
for _, val := range claims.User.Permissions {
permissionNames = append(permissionNames, val.Name)
}
res[util.SnakeToCamel(util.CamelToSnakeCase(field))] = permissionNames
} else { // Use selected user field as claims.
userField := userValue.FieldByName(field)
if userField.IsValid() {

View File

@@ -463,7 +463,7 @@ class ApplicationEditPage extends React.Component {
<Select virtual={false} disabled={this.state.application.tokenFormat !== "JWT-Custom"} mode="tags" showSearch style={{width: "100%"}} value={this.state.application.tokenFields} onChange={(value => {this.updateApplicationField("tokenFields", value);})}>
<Option key={"provider"} value={"provider"}>{"Provider"}</Option>)
{
Setting.getUserCommonFields().map((item, index) => <Option key={index} value={item}>{item}</Option>)
[...Setting.getUserCommonFields(), "permissionNames"].map((item, index) => <Option key={index} value={item}>{item}</Option>)
}
</Select>
</Col>