forked from mystiq/dex
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
|
||
|
}
|