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