in pkg/domain/authorizationErrorParser.go [34:72]
func GetScopePermissionsFromAuthError(authErrMesg string) (map[string][]string, error) {
log.Debugf("Attempting to Parse Authorization Error: %s", authErrMesg)
if authErrMesg != "" && !strings.Contains(authErrMesg, "AuthorizationFailed") && !strings.Contains(authErrMesg, "Authorization failed") && !strings.Contains(authErrMesg, "AuthorizationPermissionMismatch") && !strings.Contains(authErrMesg, "LinkedAccessCheckFailed") {
log.Warnln("Non Authorization Error when creating deployment:", authErrMesg)
return nil, errors.New("Could not parse deploment error, potentially due to a Non-Authorization error")
}
var resMap map[string][]string
var err error
switch {
case strings.Count(authErrMesg, "LinkedAuthorizationFailed") >= 1:
log.Debug("Parsing LinkedAuthorizationFailed Error")
resMap, err = parseLinkedAuthorizationFailedErrors(authErrMesg)
case strings.Count(authErrMesg, "AuthorizationFailed") >= 1:
log.Debug("Parsing AuthorizationFailed Error")
resMap, err = parseMultiAuthorizationFailedErrors(authErrMesg)
case strings.Count(authErrMesg, "Authorization failed") >= 1:
log.Debug("Parsing Authorization failed Error")
resMap, err = parseMultiAuthorizationErrors(authErrMesg)
case strings.Count(authErrMesg, "AuthorizationPermissionMismatch") >= 1:
log.Debug("Parsing AuthorizationPermissionMismatch Error")
resMap, err = parseAuthorizationPermissionMismatchError(authErrMesg)
case strings.Count(authErrMesg, "LinkedAccessCheckFailed") >= 1:
log.Debug("Parsing LinkedAccessCheckFailed Error")
resMap, err = parseLinkedAccessCheckFailedError(authErrMesg)
}
if err != nil {
return nil, err
}
// If map is empty, return error
if len(resMap) == 0 {
return nil, fmt.Errorf("Could not parse deployment error for scope/permissions: %s", authErrMesg)
}
return appendPermissionsForSpecialCases(resMap), nil
}