...

Source file src/edge-infra.dev/pkg/edge/iam/storage/database/storage_pkce.go

Documentation: edge-infra.dev/pkg/edge/iam/storage/database

     1  package database
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"edge-infra.dev/pkg/edge/iam/config"
     8  	"edge-infra.dev/pkg/edge/iam/storage"
     9  
    10  	"github.com/go-redis/redis"
    11  	"github.com/ory/fosite"
    12  	"github.com/pkg/errors"
    13  )
    14  
    15  func (s *Store) CreatePKCERequestSession(_ context.Context, signature string, req fosite.Requester) error {
    16  	key := keyFrom(KeyPrefixPKCE, signature)
    17  	r := storage.ToStorage(signature, req)
    18  	return s.set(key, r, config.GetAuthCodeTTL())
    19  }
    20  
    21  func (s *Store) GetPKCERequestSession(ctx context.Context, signature string, session fosite.Session) (fosite.Requester, error) {
    22  	key := keyFrom(KeyPrefixPKCE, signature)
    23  	req, err := s.get(key)
    24  	if err == redis.Nil {
    25  		return nil, errors.Wrap(fosite.ErrNotFound, "")
    26  	} else if err != nil {
    27  		return nil, errors.WithStack(err)
    28  	}
    29  
    30  	// Transform to a fosite.Request
    31  	iamClient, err := s.GetIAMClient(ctx, req.ClientID)
    32  	if err != nil {
    33  		s.Log.Info("failed to get client in db", "error", err, "id", req.ClientID)
    34  		return nil, err
    35  	}
    36  	request, err := req.ToFositeRequest(ctx, session, iamClient)
    37  	if err != nil {
    38  		if err == fosite.ErrNotFound {
    39  			s.Log.Info("Failed to transform a fosite session to a fosite request.", "error", err)
    40  			return nil, err
    41  		}
    42  
    43  		return nil, err
    44  	}
    45  
    46  	return request, err
    47  }
    48  
    49  func (s *Store) DeletePKCERequestSession(_ context.Context, signature string) error {
    50  	key := keyFrom(KeyPrefixPKCE, signature)
    51  	err := s.RedisDB.Del(key).Err()
    52  	if err != nil {
    53  		return errors.Wrap(err, fmt.Sprintf("Failed to delete key '%v'", key))
    54  	}
    55  
    56  	return nil
    57  }
    58  

View as plain text