...

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

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

     1  package database
     2  
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  
     7  	"github.com/pkg/errors"
     8  
     9  	"edge-infra.dev/pkg/edge/iam/config"
    10  	"edge-infra.dev/pkg/edge/iam/device"
    11  )
    12  
    13  func (s *Store) GetDeviceAccount(ctx context.Context, username string) (acct *device.Account, err error) {
    14  	key := keyFrom(KeyPrefixDeviceAccount, username)
    15  	// try and get the doc
    16  	var doc *Doc
    17  	if doc, err = s.getDoc(ctx, key); err != nil {
    18  		return nil, errors.WithMessage(err, "failed to retrieve device account")
    19  	}
    20  	// not found
    21  	if doc == nil {
    22  		return nil, nil
    23  	}
    24  	// found; unmarshal
    25  	data := doc.Value
    26  	if err := json.Unmarshal(data, &acct); err != nil {
    27  		return nil, errors.WithMessage(err, "device account schema not valid")
    28  	}
    29  	return acct, nil
    30  }
    31  
    32  func (s *Store) SaveDeviceAccount(ctx context.Context, acc device.Account) error {
    33  	key := keyFrom(KeyPrefixDeviceAccount, acc.Username)
    34  	payload, err := json.Marshal(acc)
    35  	if err != nil {
    36  		return errors.WithStack(err)
    37  	}
    38  	if err := s.updateDoc(ctx, key, payload, WithExpiration(config.GetPINTTL())); err != nil {
    39  		return errors.WithStack(err)
    40  	}
    41  	return nil
    42  }
    43  

View as plain text