in client/client.go [113:146]
func (r *remotePDPClient) CreateAuthorizationRequest(resourceId string, actions []string, jwtToken string) (*AuthorizationRequest, error) {
if strings.TrimSpace(jwtToken) == "" {
return nil, fmt.Errorf("need token in creating AuthorizationRequest")
}
tokenClaims, err := token.ExtractClaims(jwtToken)
if err != nil {
return nil, fmt.Errorf("error while parse the token, err: %v", err)
}
subjectAttributes := SubjectAttributes{}
subjectAttributes.ObjectId = tokenClaims.ObjectId
if tokenClaims.ClaimNames != nil && len(tokenClaims.Groups) == 0 {
subjectAttributes.ClaimName = GroupExpansion
} else if tokenClaims.ClaimNames == nil && len(tokenClaims.Groups) > 0 {
subjectAttributes.Groups = tokenClaims.Groups
}
actionInfos := []ActionInfo{}
for _, action := range actions {
actionInfos = append(actionInfos, ActionInfo{Id: action})
}
return &AuthorizationRequest{
Subject: SubjectInfo{
Attributes: subjectAttributes,
},
Actions: actionInfos,
Resource: ResourceInfo{
Id: resourceId,
},
}, nil
}