Extend the API with a function which updates the client configuration

This commit is contained in:
Cosmin Cojocar 2018-08-08 17:21:02 +02:00
parent 57b1031352
commit 9926a0dced
3 changed files with 233 additions and 68 deletions

View File

@ -13,6 +13,8 @@ It has these top-level messages:
CreateClientResp
DeleteClientReq
DeleteClientResp
UpdateClientReq
UpdateClientResp
Password
CreatePasswordReq
CreatePasswordResp
@ -194,6 +196,80 @@ func (m *DeleteClientResp) GetNotFound() bool {
return false
}
// UpdateClientReq is a request to update an exisitng client.
type UpdateClientReq struct {
Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
RedirectUris []string `protobuf:"bytes,2,rep,name=redirect_uris,json=redirectUris" json:"redirect_uris,omitempty"`
TrustedPeers []string `protobuf:"bytes,3,rep,name=trusted_peers,json=trustedPeers" json:"trusted_peers,omitempty"`
Public bool `protobuf:"varint,4,opt,name=public" json:"public,omitempty"`
Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"`
LogoUrl string `protobuf:"bytes,6,opt,name=logo_url,json=logoUrl" json:"logo_url,omitempty"`
}
func (m *UpdateClientReq) Reset() { *m = UpdateClientReq{} }
func (m *UpdateClientReq) String() string { return proto.CompactTextString(m) }
func (*UpdateClientReq) ProtoMessage() {}
func (*UpdateClientReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *UpdateClientReq) GetId() string {
if m != nil {
return m.Id
}
return ""
}
func (m *UpdateClientReq) GetRedirectUris() []string {
if m != nil {
return m.RedirectUris
}
return nil
}
func (m *UpdateClientReq) GetTrustedPeers() []string {
if m != nil {
return m.TrustedPeers
}
return nil
}
func (m *UpdateClientReq) GetPublic() bool {
if m != nil {
return m.Public
}
return false
}
func (m *UpdateClientReq) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *UpdateClientReq) GetLogoUrl() string {
if m != nil {
return m.LogoUrl
}
return ""
}
// UpdateClientResp returns the reponse form updating a client.
type UpdateClientResp struct {
NotFound bool `protobuf:"varint,1,opt,name=not_found,json=notFound" json:"not_found,omitempty"`
}
func (m *UpdateClientResp) Reset() { *m = UpdateClientResp{} }
func (m *UpdateClientResp) String() string { return proto.CompactTextString(m) }
func (*UpdateClientResp) ProtoMessage() {}
func (*UpdateClientResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (m *UpdateClientResp) GetNotFound() bool {
if m != nil {
return m.NotFound
}
return false
}
// Password is an email for password mapping managed by the storage.
type Password struct {
Email string `protobuf:"bytes,1,opt,name=email" json:"email,omitempty"`
@ -206,7 +282,7 @@ type Password struct {
func (m *Password) Reset() { *m = Password{} }
func (m *Password) String() string { return proto.CompactTextString(m) }
func (*Password) ProtoMessage() {}
func (*Password) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (*Password) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *Password) GetEmail() string {
if m != nil {
@ -244,7 +320,7 @@ type CreatePasswordReq struct {
func (m *CreatePasswordReq) Reset() { *m = CreatePasswordReq{} }
func (m *CreatePasswordReq) String() string { return proto.CompactTextString(m) }
func (*CreatePasswordReq) ProtoMessage() {}
func (*CreatePasswordReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (*CreatePasswordReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
func (m *CreatePasswordReq) GetPassword() *Password {
if m != nil {
@ -261,7 +337,7 @@ type CreatePasswordResp struct {
func (m *CreatePasswordResp) Reset() { *m = CreatePasswordResp{} }
func (m *CreatePasswordResp) String() string { return proto.CompactTextString(m) }
func (*CreatePasswordResp) ProtoMessage() {}
func (*CreatePasswordResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (*CreatePasswordResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
func (m *CreatePasswordResp) GetAlreadyExists() bool {
if m != nil {
@ -281,7 +357,7 @@ type UpdatePasswordReq struct {
func (m *UpdatePasswordReq) Reset() { *m = UpdatePasswordReq{} }
func (m *UpdatePasswordReq) String() string { return proto.CompactTextString(m) }
func (*UpdatePasswordReq) ProtoMessage() {}
func (*UpdatePasswordReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
func (*UpdatePasswordReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (m *UpdatePasswordReq) GetEmail() string {
if m != nil {
@ -312,7 +388,7 @@ type UpdatePasswordResp struct {
func (m *UpdatePasswordResp) Reset() { *m = UpdatePasswordResp{} }
func (m *UpdatePasswordResp) String() string { return proto.CompactTextString(m) }
func (*UpdatePasswordResp) ProtoMessage() {}
func (*UpdatePasswordResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
func (*UpdatePasswordResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (m *UpdatePasswordResp) GetNotFound() bool {
if m != nil {
@ -329,7 +405,7 @@ type DeletePasswordReq struct {
func (m *DeletePasswordReq) Reset() { *m = DeletePasswordReq{} }
func (m *DeletePasswordReq) String() string { return proto.CompactTextString(m) }
func (*DeletePasswordReq) ProtoMessage() {}
func (*DeletePasswordReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (*DeletePasswordReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *DeletePasswordReq) GetEmail() string {
if m != nil {
@ -346,7 +422,7 @@ type DeletePasswordResp struct {
func (m *DeletePasswordResp) Reset() { *m = DeletePasswordResp{} }
func (m *DeletePasswordResp) String() string { return proto.CompactTextString(m) }
func (*DeletePasswordResp) ProtoMessage() {}
func (*DeletePasswordResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (*DeletePasswordResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (m *DeletePasswordResp) GetNotFound() bool {
if m != nil {
@ -362,7 +438,7 @@ type ListPasswordReq struct {
func (m *ListPasswordReq) Reset() { *m = ListPasswordReq{} }
func (m *ListPasswordReq) String() string { return proto.CompactTextString(m) }
func (*ListPasswordReq) ProtoMessage() {}
func (*ListPasswordReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (*ListPasswordReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
// ListPasswordResp returns a list of passwords.
type ListPasswordResp struct {
@ -372,7 +448,7 @@ type ListPasswordResp struct {
func (m *ListPasswordResp) Reset() { *m = ListPasswordResp{} }
func (m *ListPasswordResp) String() string { return proto.CompactTextString(m) }
func (*ListPasswordResp) ProtoMessage() {}
func (*ListPasswordResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (*ListPasswordResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (m *ListPasswordResp) GetPasswords() []*Password {
if m != nil {
@ -388,7 +464,7 @@ type VersionReq struct {
func (m *VersionReq) Reset() { *m = VersionReq{} }
func (m *VersionReq) String() string { return proto.CompactTextString(m) }
func (*VersionReq) ProtoMessage() {}
func (*VersionReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (*VersionReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
// VersionResp holds the version info of components.
type VersionResp struct {
@ -402,7 +478,7 @@ type VersionResp struct {
func (m *VersionResp) Reset() { *m = VersionResp{} }
func (m *VersionResp) String() string { return proto.CompactTextString(m) }
func (*VersionResp) ProtoMessage() {}
func (*VersionResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (*VersionResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (m *VersionResp) GetServer() string {
if m != nil {
@ -430,7 +506,7 @@ type RefreshTokenRef struct {
func (m *RefreshTokenRef) Reset() { *m = RefreshTokenRef{} }
func (m *RefreshTokenRef) String() string { return proto.CompactTextString(m) }
func (*RefreshTokenRef) ProtoMessage() {}
func (*RefreshTokenRef) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (*RefreshTokenRef) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (m *RefreshTokenRef) GetId() string {
if m != nil {
@ -469,7 +545,7 @@ type ListRefreshReq struct {
func (m *ListRefreshReq) Reset() { *m = ListRefreshReq{} }
func (m *ListRefreshReq) String() string { return proto.CompactTextString(m) }
func (*ListRefreshReq) ProtoMessage() {}
func (*ListRefreshReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (*ListRefreshReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (m *ListRefreshReq) GetUserId() string {
if m != nil {
@ -486,7 +562,7 @@ type ListRefreshResp struct {
func (m *ListRefreshResp) Reset() { *m = ListRefreshResp{} }
func (m *ListRefreshResp) String() string { return proto.CompactTextString(m) }
func (*ListRefreshResp) ProtoMessage() {}
func (*ListRefreshResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (*ListRefreshResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (m *ListRefreshResp) GetRefreshTokens() []*RefreshTokenRef {
if m != nil {
@ -505,7 +581,7 @@ type RevokeRefreshReq struct {
func (m *RevokeRefreshReq) Reset() { *m = RevokeRefreshReq{} }
func (m *RevokeRefreshReq) String() string { return proto.CompactTextString(m) }
func (*RevokeRefreshReq) ProtoMessage() {}
func (*RevokeRefreshReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (*RevokeRefreshReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func (m *RevokeRefreshReq) GetUserId() string {
if m != nil {
@ -530,7 +606,7 @@ type RevokeRefreshResp struct {
func (m *RevokeRefreshResp) Reset() { *m = RevokeRefreshResp{} }
func (m *RevokeRefreshResp) String() string { return proto.CompactTextString(m) }
func (*RevokeRefreshResp) ProtoMessage() {}
func (*RevokeRefreshResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (*RevokeRefreshResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
func (m *RevokeRefreshResp) GetNotFound() bool {
if m != nil {
@ -545,6 +621,8 @@ func init() {
proto.RegisterType((*CreateClientResp)(nil), "api.CreateClientResp")
proto.RegisterType((*DeleteClientReq)(nil), "api.DeleteClientReq")
proto.RegisterType((*DeleteClientResp)(nil), "api.DeleteClientResp")
proto.RegisterType((*UpdateClientReq)(nil), "api.UpdateClientReq")
proto.RegisterType((*UpdateClientResp)(nil), "api.UpdateClientResp")
proto.RegisterType((*Password)(nil), "api.Password")
proto.RegisterType((*CreatePasswordReq)(nil), "api.CreatePasswordReq")
proto.RegisterType((*CreatePasswordResp)(nil), "api.CreatePasswordResp")
@ -576,6 +654,8 @@ const _ = grpc.SupportPackageIsVersion4
type DexClient interface {
// CreateClient creates a client.
CreateClient(ctx context.Context, in *CreateClientReq, opts ...grpc.CallOption) (*CreateClientResp, error)
// UpdateClient updates an exisitng client
UpdateClient(ctx context.Context, in *UpdateClientReq, opts ...grpc.CallOption) (*UpdateClientResp, error)
// DeleteClient deletes the provided client.
DeleteClient(ctx context.Context, in *DeleteClientReq, opts ...grpc.CallOption) (*DeleteClientResp, error)
// CreatePassword creates a password.
@ -613,6 +693,15 @@ func (c *dexClient) CreateClient(ctx context.Context, in *CreateClientReq, opts
return out, nil
}
func (c *dexClient) UpdateClient(ctx context.Context, in *UpdateClientReq, opts ...grpc.CallOption) (*UpdateClientResp, error) {
out := new(UpdateClientResp)
err := grpc.Invoke(ctx, "/api.Dex/UpdateClient", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dexClient) DeleteClient(ctx context.Context, in *DeleteClientReq, opts ...grpc.CallOption) (*DeleteClientResp, error) {
out := new(DeleteClientResp)
err := grpc.Invoke(ctx, "/api.Dex/DeleteClient", in, out, c.cc, opts...)
@ -690,6 +779,8 @@ func (c *dexClient) RevokeRefresh(ctx context.Context, in *RevokeRefreshReq, opt
type DexServer interface {
// CreateClient creates a client.
CreateClient(context.Context, *CreateClientReq) (*CreateClientResp, error)
// UpdateClient updates an exisitng client
UpdateClient(context.Context, *UpdateClientReq) (*UpdateClientResp, error)
// DeleteClient deletes the provided client.
DeleteClient(context.Context, *DeleteClientReq) (*DeleteClientResp, error)
// CreatePassword creates a password.
@ -732,6 +823,24 @@ func _Dex_CreateClient_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
func _Dex_UpdateClient_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateClientReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DexServer).UpdateClient(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/api.Dex/UpdateClient",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DexServer).UpdateClient(ctx, req.(*UpdateClientReq))
}
return interceptor(ctx, in, info, handler)
}
func _Dex_DeleteClient_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteClientReq)
if err := dec(in); err != nil {
@ -884,6 +993,10 @@ var _Dex_serviceDesc = grpc.ServiceDesc{
MethodName: "CreateClient",
Handler: _Dex_CreateClient_Handler,
},
{
MethodName: "UpdateClient",
Handler: _Dex_UpdateClient_Handler,
},
{
MethodName: "DeleteClient",
Handler: _Dex_DeleteClient_Handler,
@ -924,56 +1037,59 @@ var _Dex_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("api/api.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 801 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x6d, 0x4f, 0xe3, 0x46,
0x10, 0x4e, 0xe2, 0x90, 0x38, 0x93, 0xf7, 0x6d, 0x00, 0x13, 0x54, 0x09, 0x16, 0x55, 0x02, 0x55,
0x0a, 0x85, 0x4a, 0xad, 0x54, 0x54, 0xfa, 0x02, 0x6d, 0x41, 0xaa, 0x2a, 0x64, 0x35, 0xfd, 0x58,
0xcb, 0xc4, 0x03, 0xac, 0x30, 0xb6, 0xbb, 0xbb, 0x21, 0xf4, 0xfe, 0xdd, 0xe9, 0xfe, 0xd8, 0x69,
0xd7, 0x9b, 0x60, 0x3b, 0xb9, 0x0b, 0xdf, 0x3c, 0xcf, 0xce, 0x3c, 0xb3, 0xf3, 0xec, 0xcc, 0xc8,
0xd0, 0xf6, 0x13, 0x76, 0xec, 0x27, 0x6c, 0x94, 0xf0, 0x58, 0xc6, 0xc4, 0xf2, 0x13, 0x46, 0xdf,
0x97, 0xa1, 0x76, 0x11, 0x32, 0x8c, 0x24, 0xe9, 0x40, 0x85, 0x05, 0x4e, 0x79, 0xaf, 0x7c, 0xd8,
0x70, 0x2b, 0x2c, 0x20, 0x5b, 0x50, 0x13, 0x38, 0xe1, 0x28, 0x9d, 0x8a, 0xc6, 0x8c, 0x45, 0x0e,
0xa0, 0xcd, 0x31, 0x60, 0x1c, 0x27, 0xd2, 0x9b, 0x72, 0x26, 0x1c, 0x6b, 0xcf, 0x3a, 0x6c, 0xb8,
0xad, 0x39, 0x38, 0xe6, 0x4c, 0x28, 0x27, 0xc9, 0xa7, 0x42, 0x62, 0xe0, 0x25, 0x88, 0x5c, 0x38,
0xd5, 0xd4, 0xc9, 0x80, 0x37, 0x0a, 0x53, 0x19, 0x92, 0xe9, 0x6d, 0xc8, 0x26, 0xce, 0xc6, 0x5e,
0xf9, 0xd0, 0x76, 0x8d, 0x45, 0x08, 0x54, 0x23, 0xff, 0x09, 0x9d, 0x9a, 0xce, 0xab, 0xbf, 0xc9,
0x0e, 0xd8, 0x61, 0x7c, 0x1f, 0x7b, 0x53, 0x1e, 0x3a, 0x75, 0x8d, 0xd7, 0x95, 0x3d, 0xe6, 0x21,
0xfd, 0x0e, 0xba, 0x17, 0x1c, 0x7d, 0x89, 0x69, 0x21, 0x2e, 0xfe, 0x47, 0x0e, 0xa0, 0x36, 0xd1,
0x86, 0xae, 0xa7, 0x79, 0xda, 0x1c, 0xa9, 0xba, 0xcd, 0xb9, 0x39, 0xa2, 0xff, 0x42, 0x2f, 0x1f,
0x27, 0x12, 0xf2, 0x15, 0x74, 0xfc, 0x90, 0xa3, 0x1f, 0xfc, 0xef, 0xe1, 0x0b, 0x13, 0x52, 0x68,
0x02, 0xdb, 0x6d, 0x1b, 0xf4, 0x37, 0x0d, 0x66, 0xf8, 0x2b, 0x9f, 0xe6, 0xdf, 0x87, 0xee, 0x25,
0x86, 0x98, 0xbd, 0x57, 0x41, 0x63, 0x7a, 0x0c, 0xbd, 0xbc, 0x8b, 0x48, 0xc8, 0x2e, 0x34, 0xa2,
0x58, 0x7a, 0x77, 0xf1, 0x34, 0x0a, 0x4c, 0x76, 0x3b, 0x8a, 0xe5, 0xef, 0xca, 0xa6, 0x0c, 0xec,
0x1b, 0x5f, 0x88, 0x59, 0xcc, 0x03, 0x32, 0x80, 0x0d, 0x7c, 0xf2, 0x59, 0x68, 0xf8, 0x52, 0x43,
0x89, 0xf7, 0xe0, 0x8b, 0x07, 0x7d, 0xb1, 0x96, 0xab, 0xbf, 0xc9, 0x10, 0xec, 0xa9, 0x40, 0xae,
0x45, 0xb5, 0xb4, 0xf3, 0xc2, 0x26, 0xdb, 0x50, 0x57, 0xdf, 0x1e, 0x0b, 0x9c, 0x6a, 0xfa, 0xce,
0xca, 0xbc, 0x0e, 0xe8, 0x39, 0xf4, 0x53, 0x79, 0xe6, 0x09, 0x55, 0x01, 0x47, 0x60, 0x27, 0xc6,
0x34, 0xd2, 0xb6, 0x75, 0xe9, 0x0b, 0x9f, 0xc5, 0x31, 0x3d, 0x03, 0x52, 0x8c, 0x7f, 0xb3, 0xc0,
0xf4, 0x1e, 0xfa, 0xe3, 0x24, 0x28, 0x24, 0x5f, 0x5d, 0xf0, 0x0e, 0xd8, 0x11, 0xce, 0xbc, 0x4c,
0xd1, 0xf5, 0x08, 0x67, 0x57, 0xaa, 0xee, 0x7d, 0x68, 0xa9, 0xa3, 0x42, 0xed, 0xcd, 0x08, 0x67,
0x63, 0x03, 0xd1, 0x13, 0x20, 0xc5, 0x44, 0xeb, 0xde, 0xe0, 0x08, 0xfa, 0xe9, 0xa3, 0xad, 0xbd,
0x9b, 0x62, 0x2f, 0xba, 0xae, 0x63, 0xef, 0x43, 0xf7, 0x4f, 0x26, 0x64, 0x86, 0x9b, 0xfe, 0x04,
0xbd, 0x3c, 0x24, 0x12, 0xf2, 0x35, 0x34, 0xe6, 0x4a, 0x2b, 0x09, 0xad, 0xe5, 0x97, 0x78, 0x3d,
0xa7, 0x2d, 0x80, 0x7f, 0x90, 0x0b, 0x16, 0x47, 0x8a, 0xee, 0x7b, 0x68, 0x2e, 0x2c, 0x91, 0xa4,
0x73, 0xce, 0x9f, 0x91, 0x9b, 0xab, 0x1b, 0x8b, 0xf4, 0x40, 0x6d, 0x08, 0x2d, 0xe9, 0x86, 0xab,
0x97, 0xc5, 0x3b, 0xe8, 0xba, 0x78, 0xc7, 0x51, 0x3c, 0xfc, 0x1d, 0x3f, 0x62, 0xe4, 0xe2, 0xdd,
0xd2, 0xd2, 0xd8, 0x85, 0x46, 0xda, 0xfd, 0xaa, 0x9f, 0xd2, 0xbd, 0x61, 0xa7, 0xc0, 0x75, 0x40,
0xbe, 0x04, 0x98, 0xe8, 0x8e, 0x08, 0x3c, 0x5f, 0xea, 0x99, 0xb7, 0xdc, 0x86, 0x41, 0x7e, 0x91,
0x2a, 0x36, 0xf4, 0x85, 0x54, 0xcf, 0x15, 0xe8, 0xd9, 0xb7, 0x5c, 0x5b, 0x01, 0x63, 0x81, 0x4a,
0xf4, 0x8e, 0xd2, 0xc0, 0xe4, 0x57, 0x8a, 0x67, 0x1a, 0xb7, 0x9c, 0x6b, 0xdc, 0xbf, 0x52, 0x05,
0x17, 0xae, 0x22, 0x21, 0x67, 0xd0, 0xe1, 0xa9, 0xe9, 0x49, 0x75, 0xf5, 0xb9, 0x64, 0x03, 0x2d,
0x59, 0xa1, 0x28, 0xb7, 0xcd, 0x33, 0x80, 0xa0, 0x57, 0xd0, 0x73, 0xf1, 0x39, 0x7e, 0xc4, 0x37,
0x24, 0xff, 0xac, 0x00, 0xf4, 0x1b, 0xe8, 0x17, 0x98, 0xd6, 0x74, 0xc3, 0xe9, 0x87, 0x2a, 0x58,
0x97, 0xf8, 0x42, 0x7e, 0x84, 0x56, 0x76, 0x57, 0x91, 0xf4, 0xe2, 0x85, 0xb5, 0x37, 0xdc, 0x5c,
0x81, 0x8a, 0x84, 0x96, 0x54, 0x78, 0x76, 0xcf, 0x98, 0xf0, 0xc2, 0x76, 0x32, 0xe1, 0xc5, 0x85,
0x44, 0x4b, 0xe4, 0x02, 0x3a, 0xf9, 0x51, 0x26, 0x5b, 0x99, 0x4c, 0x99, 0x56, 0x1d, 0x6e, 0xaf,
0xc4, 0xe7, 0x24, 0xf9, 0x49, 0x33, 0x24, 0x4b, 0x73, 0x6e, 0x48, 0x96, 0xc7, 0x32, 0x25, 0xc9,
0x0f, 0x94, 0x21, 0x59, 0x1a, 0x48, 0x43, 0xb2, 0x3c, 0x7d, 0xb4, 0x44, 0xce, 0xa1, 0x9d, 0x9d,
0x27, 0x61, 0xe4, 0x28, 0x8c, 0x9d, 0x91, 0xa3, 0x38, 0x79, 0xb4, 0x44, 0x4e, 0x00, 0xfe, 0x40,
0x69, 0x66, 0x88, 0x74, 0xb5, 0xdb, 0xeb, 0x7c, 0x0d, 0x7b, 0x79, 0x40, 0x87, 0xfc, 0x00, 0xcd,
0x4c, 0x4f, 0x92, 0x2f, 0x16, 0xd4, 0xaf, 0x3d, 0x35, 0x1c, 0x2c, 0x83, 0x3a, 0xf6, 0x67, 0x68,
0xe7, 0xba, 0x86, 0x6c, 0x9a, 0xae, 0xcd, 0xf7, 0xe4, 0x70, 0x6b, 0x15, 0xac, 0x18, 0x7e, 0x1d,
0x00, 0x99, 0xc4, 0x4f, 0xa3, 0x49, 0xcc, 0x31, 0x16, 0xa3, 0x00, 0x5f, 0x94, 0xe7, 0x6d, 0x4d,
0xff, 0x07, 0x7c, 0xfb, 0x31, 0x00, 0x00, 0xff, 0xff, 0xbd, 0x6a, 0x64, 0xe2, 0x18, 0x08, 0x00,
0x00,
// 851 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xdb, 0x4e, 0xf3, 0x46,
0x10, 0x4e, 0x62, 0x92, 0x38, 0x93, 0xf3, 0x36, 0x3f, 0x84, 0xa0, 0x4a, 0xb0, 0xa8, 0x12, 0xa8,
0x52, 0x28, 0x54, 0x6a, 0xa5, 0xa2, 0xd2, 0x03, 0xb4, 0x05, 0xa9, 0xaa, 0x90, 0xd5, 0xf4, 0xb2,
0x96, 0x89, 0x07, 0x58, 0x61, 0x6c, 0x77, 0x77, 0x43, 0x68, 0x2f, 0xfb, 0x48, 0x7d, 0x83, 0xbe,
0xd9, 0xaf, 0x5d, 0x6f, 0x82, 0x0f, 0x81, 0x70, 0xe7, 0xf9, 0x76, 0xe6, 0x9b, 0xf3, 0xc8, 0xd0,
0xf6, 0x62, 0x76, 0xe4, 0xc5, 0x6c, 0x1c, 0xf3, 0x48, 0x46, 0xc4, 0xf2, 0x62, 0x46, 0xff, 0x2f,
0x43, 0xed, 0x3c, 0x60, 0x18, 0x4a, 0xd2, 0x81, 0x0a, 0xf3, 0x87, 0xe5, 0xdd, 0xf2, 0x41, 0xc3,
0xa9, 0x30, 0x9f, 0x6c, 0x42, 0x4d, 0xe0, 0x94, 0xa3, 0x1c, 0x56, 0x34, 0x66, 0x24, 0xb2, 0x0f,
0x6d, 0x8e, 0x3e, 0xe3, 0x38, 0x95, 0xee, 0x8c, 0x33, 0x31, 0xb4, 0x76, 0xad, 0x83, 0x86, 0xd3,
0x5a, 0x80, 0x13, 0xce, 0x84, 0x52, 0x92, 0x7c, 0x26, 0x24, 0xfa, 0x6e, 0x8c, 0xc8, 0xc5, 0x70,
0x23, 0x51, 0x32, 0xe0, 0xb5, 0xc2, 0x94, 0x87, 0x78, 0x76, 0x13, 0xb0, 0xe9, 0xb0, 0xba, 0x5b,
0x3e, 0xb0, 0x1d, 0x23, 0x11, 0x02, 0x1b, 0xa1, 0xf7, 0x88, 0xc3, 0x9a, 0xf6, 0xab, 0xbf, 0xc9,
0x36, 0xd8, 0x41, 0x74, 0x17, 0xb9, 0x33, 0x1e, 0x0c, 0xeb, 0x1a, 0xaf, 0x2b, 0x79, 0xc2, 0x03,
0xfa, 0x15, 0x74, 0xcf, 0x39, 0x7a, 0x12, 0x93, 0x44, 0x1c, 0xfc, 0x8b, 0xec, 0x43, 0x6d, 0xaa,
0x05, 0x9d, 0x4f, 0xf3, 0xa4, 0x39, 0x56, 0x79, 0x9b, 0x77, 0xf3, 0x44, 0xff, 0x84, 0x5e, 0xd6,
0x4e, 0xc4, 0xe4, 0x33, 0xe8, 0x78, 0x01, 0x47, 0xcf, 0xff, 0xdb, 0xc5, 0x67, 0x26, 0xa4, 0xd0,
0x04, 0xb6, 0xd3, 0x36, 0xe8, 0x4f, 0x1a, 0x4c, 0xf1, 0x57, 0x5e, 0xe7, 0xdf, 0x83, 0xee, 0x05,
0x06, 0x98, 0x8e, 0x2b, 0x57, 0x63, 0x7a, 0x04, 0xbd, 0xac, 0x8a, 0x88, 0xc9, 0x0e, 0x34, 0xc2,
0x48, 0xba, 0xb7, 0xd1, 0x2c, 0xf4, 0x8d, 0x77, 0x3b, 0x8c, 0xe4, 0xcf, 0x4a, 0xa6, 0xff, 0x95,
0xa1, 0x3b, 0x89, 0x7d, 0xef, 0x0d, 0xd2, 0x62, 0x83, 0x2a, 0xef, 0x69, 0x90, 0xf5, 0x66, 0x83,
0x36, 0x56, 0x36, 0xa8, 0xfa, 0x4a, 0x83, 0x6a, 0xd9, 0x06, 0x1d, 0x41, 0x2f, 0x1b, 0xf3, 0xba,
0x2c, 0x19, 0xd8, 0xd7, 0x9e, 0x10, 0xf3, 0x88, 0xfb, 0x64, 0x00, 0x55, 0x7c, 0xf4, 0x58, 0x60,
0x12, 0x4c, 0x04, 0x15, 0xc1, 0xbd, 0x27, 0xee, 0x75, 0xf9, 0x5b, 0x8e, 0xfe, 0x26, 0x23, 0xb0,
0x67, 0x02, 0xb9, 0x8e, 0xcc, 0xd2, 0xca, 0x4b, 0x99, 0x6c, 0x41, 0x5d, 0x7d, 0xbb, 0xcc, 0xd7,
0xa9, 0x34, 0x9c, 0x9a, 0x12, 0xaf, 0x7c, 0x7a, 0x06, 0xfd, 0x64, 0x08, 0x16, 0x0e, 0x55, 0x45,
0x0f, 0xc1, 0x8e, 0x8d, 0x68, 0x06, 0xa8, 0xad, 0x1b, 0xbc, 0xd4, 0x59, 0x3e, 0xd3, 0x53, 0x20,
0x79, 0xfb, 0x77, 0x8f, 0x11, 0xbd, 0x83, 0x7e, 0x52, 0x98, 0xb4, 0xf3, 0xd5, 0x09, 0x6f, 0x83,
0x1d, 0xe2, 0xdc, 0x4d, 0x25, 0x5d, 0x0f, 0x71, 0x7e, 0xa9, 0xf2, 0xde, 0x83, 0x96, 0x7a, 0xca,
0xe5, 0xde, 0x0c, 0x71, 0x3e, 0x31, 0x10, 0x3d, 0x06, 0x92, 0x77, 0xb4, 0xae, 0x07, 0x87, 0xd0,
0x4f, 0x46, 0x73, 0x6d, 0x6c, 0x8a, 0x3d, 0xaf, 0xba, 0x8e, 0xbd, 0x0f, 0xdd, 0x5f, 0x99, 0x90,
0x29, 0x6e, 0xfa, 0x1d, 0xf4, 0xb2, 0x90, 0x88, 0xc9, 0xe7, 0xd0, 0x58, 0x54, 0x5a, 0x95, 0xd0,
0x2a, 0x76, 0xe2, 0xe5, 0x9d, 0xb6, 0x00, 0xfe, 0x40, 0x2e, 0x58, 0x14, 0x2a, 0xba, 0xaf, 0xa1,
0xb9, 0x94, 0x44, 0x9c, 0x5c, 0x33, 0xfe, 0x84, 0xdc, 0x84, 0x6e, 0x24, 0xd2, 0x03, 0x75, 0x07,
0x75, 0x49, 0xab, 0x8e, 0x3e, 0x89, 0xff, 0x40, 0xd7, 0xc1, 0x5b, 0x8e, 0xe2, 0xfe, 0xf7, 0xe8,
0x01, 0x43, 0x07, 0x6f, 0x0b, 0x1b, 0xb6, 0x03, 0x8d, 0x64, 0xc7, 0xd5, 0x3c, 0x25, 0xd7, 0xd1,
0x4e, 0x80, 0x2b, 0x9f, 0x7c, 0x0a, 0x30, 0xd5, 0x13, 0xe1, 0xbb, 0x9e, 0xd4, 0x2b, 0x62, 0x39,
0x0d, 0x83, 0xfc, 0x20, 0x95, 0x6d, 0xe0, 0x09, 0xa9, 0xda, 0xe5, 0xeb, 0x45, 0xb1, 0x1c, 0x5b,
0x01, 0x13, 0x81, 0xaa, 0xe8, 0x1d, 0x55, 0x03, 0xe3, 0x5f, 0x55, 0x3c, 0x35, 0xb8, 0xe5, 0xcc,
0xe0, 0xfe, 0x96, 0x54, 0x70, 0xa9, 0x2a, 0x62, 0x72, 0x0a, 0x1d, 0x9e, 0x88, 0xae, 0x54, 0xa1,
0x2f, 0x4a, 0x36, 0xd0, 0x25, 0xcb, 0x25, 0xe5, 0xb4, 0x79, 0x0a, 0x10, 0xf4, 0x12, 0x7a, 0x0e,
0x3e, 0x45, 0x0f, 0xf8, 0x0e, 0xe7, 0x6f, 0x16, 0x80, 0x7e, 0x01, 0xfd, 0x1c, 0xd3, 0x9a, 0x69,
0x38, 0xf9, 0xb7, 0x0a, 0xd6, 0x05, 0x3e, 0x93, 0x6f, 0xa1, 0x95, 0xbe, 0xc8, 0x24, 0x09, 0x3c,
0x77, 0xdc, 0x47, 0x1f, 0x56, 0xa0, 0x22, 0xa6, 0x25, 0x65, 0x9e, 0xbe, 0x33, 0xc6, 0x3c, 0x77,
0x2e, 0x8d, 0x79, 0xfe, 0x20, 0x25, 0xe6, 0xe9, 0x63, 0x6c, 0xcc, 0x73, 0x27, 0xdc, 0x98, 0xe7,
0xaf, 0x36, 0x2d, 0x91, 0x73, 0xe8, 0x64, 0x2f, 0x01, 0xd9, 0x4c, 0x05, 0x9a, 0x9a, 0xf4, 0xd1,
0xd6, 0x4a, 0x7c, 0x41, 0x92, 0x5d, 0x54, 0x43, 0x52, 0x38, 0x13, 0x86, 0xa4, 0xb8, 0xd5, 0x09,
0x49, 0x76, 0x1f, 0x0d, 0x49, 0x61, 0x9f, 0x0d, 0x49, 0x71, 0x79, 0x69, 0x89, 0x9c, 0x41, 0x3b,
0xbd, 0x8e, 0xc2, 0x94, 0x23, 0xb7, 0xb5, 0xa6, 0x1c, 0xf9, 0xc5, 0xa5, 0x25, 0x72, 0x0c, 0xf0,
0x0b, 0x4a, 0xb3, 0x82, 0xa4, 0xab, 0xd5, 0x5e, 0xd6, 0x73, 0xd4, 0xcb, 0x02, 0xda, 0xe4, 0x1b,
0x68, 0xa6, 0x46, 0x9a, 0x7c, 0xb2, 0xa4, 0x7e, 0x19, 0xc9, 0xd1, 0xa0, 0x08, 0x6a, 0xdb, 0xef,
0xa1, 0x9d, 0x19, 0x3a, 0xf2, 0xc1, 0x0c, 0x7d, 0x76, 0xa4, 0x47, 0x9b, 0xab, 0x60, 0xc5, 0xf0,
0xe3, 0x00, 0xc8, 0x34, 0x7a, 0x1c, 0x4f, 0x23, 0x8e, 0x91, 0x18, 0xfb, 0xf8, 0xac, 0x34, 0x6f,
0x6a, 0xfa, 0x67, 0xe9, 0xcb, 0x8f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x39, 0xfe, 0xc5, 0x3d,
0x09, 0x00, 0x00,
}

View File

@ -36,6 +36,21 @@ message DeleteClientResp {
bool not_found = 1;
}
// UpdateClientReq is a request to update an exisitng client.
message UpdateClientReq {
string id = 1;
repeated string redirect_uris = 2;
repeated string trusted_peers = 3;
bool public = 4;
string name = 5;
string logo_url = 6;
}
// UpdateClientResp returns the reponse form updating a client.
message UpdateClientResp {
bool not_found = 1;
}
// TODO(ericchiang): expand this.
// Password is an email for password mapping managed by the storage.
@ -138,6 +153,8 @@ message RevokeRefreshResp {
service Dex {
// CreateClient creates a client.
rpc CreateClient(CreateClientReq) returns (CreateClientResp) {};
// UpdateClient updates an exisitng client
rpc UpdateClient(UpdateClientReq) returns (UpdateClientResp) {};
// DeleteClient deletes the provided client.
rpc DeleteClient(DeleteClientReq) returns (DeleteClientResp) {};
// CreatePassword creates a password.

View File

@ -80,6 +80,38 @@ func (d dexAPI) CreateClient(ctx context.Context, req *api.CreateClientReq) (*ap
}, nil
}
func (d dexAPI) UpdateClient(ctx context.Context, req *api.UpdateClientReq) (*api.UpdateClientResp, error) {
if req.Id == "" {
return nil, errors.New("update client: no client ID supplied")
}
err := d.s.UpdateClient(req.Id, func(old storage.Client) (storage.Client, error) {
if req.RedirectUris != nil && len(req.RedirectUris) > 0 {
old.RedirectURIs = req.RedirectUris
}
if req.TrustedPeers != nil && len(req.TrustedPeers) > 0 {
old.TrustedPeers = req.TrustedPeers
}
old.Public = req.Public
if req.Name != "" {
old.Name = req.Name
}
if req.LogoUrl != "" {
old.LogoURL = req.LogoUrl
}
return old, nil
})
if err != nil {
if err == storage.ErrNotFound {
return &api.UpdateClientResp{NotFound: true}, nil
}
d.logger.Errorf("api: failed to update the client: %v", err)
return nil, fmt.Errorf("update client: %v", err)
}
return &api.UpdateClientResp{}, nil
}
func (d dexAPI) DeleteClient(ctx context.Context, req *api.DeleteClientReq) (*api.DeleteClientResp, error) {
err := d.s.DeleteClient(req.Id)
if err != nil {