37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package client
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 
 | |
| 	"github.com/dexidp/dex/storage"
 | |
| 	"github.com/dexidp/dex/storage/ent/db/devicerequest"
 | |
| )
 | |
| 
 | |
| // CreateDeviceRequest saves provided device request into the database.
 | |
| func (d *Database) CreateDeviceRequest(request storage.DeviceRequest) error {
 | |
| 	_, err := d.client.DeviceRequest.Create().
 | |
| 		SetClientID(request.ClientID).
 | |
| 		SetClientSecret(request.ClientSecret).
 | |
| 		SetScopes(request.Scopes).
 | |
| 		SetUserCode(request.UserCode).
 | |
| 		SetDeviceCode(request.DeviceCode).
 | |
| 		// Save utc time into database because ent doesn't support comparing dates with different timezones
 | |
| 		SetExpiry(request.Expiry.UTC()).
 | |
| 		Save(context.TODO())
 | |
| 	if err != nil {
 | |
| 		return convertDBError("create device request: %w", err)
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // GetDeviceRequest extracts a device request from the database by user code.
 | |
| func (d *Database) GetDeviceRequest(userCode string) (storage.DeviceRequest, error) {
 | |
| 	deviceRequest, err := d.client.DeviceRequest.Query().
 | |
| 		Where(devicerequest.UserCode(userCode)).
 | |
| 		Only(context.TODO())
 | |
| 	if err != nil {
 | |
| 		return storage.DeviceRequest{}, convertDBError("get device request: %w", err)
 | |
| 	}
 | |
| 	return toStorageDeviceRequest(deviceRequest), nil
 | |
| }
 |