func GetScopePermissionsFromAuthError()

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
}