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

View file

@ -80,6 +80,38 @@ func (d dexAPI) CreateClient(ctx context.Context, req *api.CreateClientReq) (*ap
}, nil }, 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) { func (d dexAPI) DeleteClient(ctx context.Context, req *api.DeleteClientReq) (*api.DeleteClientResp, error) {
err := d.s.DeleteClient(req.Id) err := d.s.DeleteClient(req.Id)
if err != nil { if err != nil {