func()

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
}