Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
dac059a7
Commit
dac059a7
authored
Jun 16, 2025
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: identity provider service
parent
8d8e9b3b
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
388 additions
and
98 deletions
+388
-98
idp_service.proto
proto/api/v1/idp_service.proto
+66
-21
idp_service.pb.go
proto/gen/api/v1/idp_service.pb.go
+106
-44
idp_service.pb.gw.go
proto/gen/api/v1/idp_service.pb.gw.go
+28
-0
apidocs.swagger.yaml
proto/gen/apidocs.swagger.yaml
+64
-10
idp_service.go
server/router/api/v1/idp_service.go
+1
-0
CreateIdentityProviderDialog.tsx
web/src/components/CreateIdentityProviderDialog.tsx
+4
-0
idp_service.ts
web/src/types/proto/api/v1/idp_service.ts
+119
-23
No files found.
proto/api/v1/idp_service.proto
View file @
dac059a7
...
...
@@ -4,6 +4,8 @@ package memos.api.v1;
import
"google/api/annotations.proto"
;
import
"google/api/client.proto"
;
import
"google/api/field_behavior.proto"
;
import
"google/api/resource.proto"
;
import
"google/protobuf/empty.proto"
;
import
"google/protobuf/field_mask.proto"
;
...
...
@@ -14,18 +16,22 @@ service IdentityProviderService {
rpc
ListIdentityProviders
(
ListIdentityProvidersRequest
)
returns
(
ListIdentityProvidersResponse
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v1/identityProviders"
};
}
// GetIdentityProvider gets an identity provider.
rpc
GetIdentityProvider
(
GetIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v1/{name=identityProviders/*}"
};
option
(
google.api.method_signature
)
=
"name"
;
}
// CreateIdentityProvider creates an identity provider.
rpc
CreateIdentityProvider
(
CreateIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
option
(
google.api.http
)
=
{
post
:
"/api/v1/identityProviders"
body
:
"identity_provider"
};
option
(
google.api.method_signature
)
=
"identity_provider"
;
}
// UpdateIdentityProvider updates an identity provider.
rpc
UpdateIdentityProvider
(
UpdateIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
option
(
google.api.http
)
=
{
...
...
@@ -34,6 +40,7 @@ service IdentityProviderService {
};
option
(
google.api.method_signature
)
=
"identity_provider,update_mask"
;
}
// DeleteIdentityProvider deletes an identity provider.
rpc
DeleteIdentityProvider
(
DeleteIdentityProviderRequest
)
returns
(
google.protobuf.Empty
)
{
option
(
google.api.http
)
=
{
delete
:
"/api/v1/{name=identityProviders/*}"
};
...
...
@@ -42,21 +49,37 @@ service IdentityProviderService {
}
message
IdentityProvider
{
// The name of the identityProvider.
// Format: identityProviders/{id}, id is the system generated auto-incremented id.
string
name
=
1
;
option
(
google.api.resource
)
=
{
type
:
"memos.api.v1/IdentityProvider"
pattern
:
"identityProviders/{idp}"
name_field
:
"name"
singular
:
"identityProvider"
plural
:
"identityProviders"
};
// The resource name of the identity provider.
// Format: identityProviders/{idp}
string
name
=
1
[(
google.api.field_behavior
)
=
IDENTIFIER
];
// Output only. The system generated unique identifier.
string
uid
=
2
[(
google.api.field_behavior
)
=
OUTPUT_ONLY
];
// Required. The type of the identity provider.
Type
type
=
3
[(
google.api.field_behavior
)
=
REQUIRED
];
// Required. The display title of the identity provider.
string
title
=
4
[(
google.api.field_behavior
)
=
REQUIRED
];
// Optional. Filter applied to user identifiers.
string
identifier_filter
=
5
[(
google.api.field_behavior
)
=
OPTIONAL
];
// Required. Configuration for the identity provider.
IdentityProviderConfig
config
=
6
[(
google.api.field_behavior
)
=
REQUIRED
];
enum
Type
{
TYPE_UNSPECIFIED
=
0
;
OAUTH2
=
1
;
}
Type
type
=
2
;
string
title
=
3
;
string
identifier_filter
=
4
;
IdentityProviderConfig
config
=
5
;
}
message
IdentityProviderConfig
{
...
...
@@ -82,32 +105,54 @@ message OAuth2Config {
FieldMapping
field_mapping
=
7
;
}
message
ListIdentityProvidersRequest
{}
message
ListIdentityProvidersRequest
{
// Optional. The maximum number of identity providers to return.
int32
page_size
=
1
[(
google.api.field_behavior
)
=
OPTIONAL
];
// Optional. A page token for pagination.
string
page_token
=
2
[(
google.api.field_behavior
)
=
OPTIONAL
];
}
message
ListIdentityProvidersResponse
{
// The list of identity providers.
repeated
IdentityProvider
identity_providers
=
1
;
// A token for the next page of results.
string
next_page_token
=
2
;
}
message
GetIdentityProviderRequest
{
// The name of the identityProvider to get.
string
name
=
1
;
// Required. The resource name of the identity provider to get.
// Format: identityProviders/{idp}
string
name
=
1
[
(
google.api.field_behavior
)
=
REQUIRED
,
(
google.api.resource_reference
)
=
{
type
:
"memos.api.v1/IdentityProvider"
}
];
}
message
CreateIdentityProviderRequest
{
// The identityProvider to create.
IdentityProvider
identity_provider
=
1
;
// Required. The identity provider to create.
IdentityProvider
identity_provider
=
1
[(
google.api.field_behavior
)
=
REQUIRED
];
// Optional. The ID to use for the identity provider, which will become the final component of the resource name.
// If not provided, the system will generate one.
string
identity_provider_id
=
2
[(
google.api.field_behavior
)
=
OPTIONAL
];
}
message
UpdateIdentityProviderRequest
{
//
The identityP
rovider to update.
IdentityProvider
identity_provider
=
1
;
//
Required. The identity p
rovider to update.
IdentityProvider
identity_provider
=
1
[(
google.api.field_behavior
)
=
REQUIRED
]
;
// The update mask applies to the resource. Only the top level fields of
//
Required.
The update mask applies to the resource. Only the top level fields of
// IdentityProvider are supported.
google.protobuf.FieldMask
update_mask
=
2
;
google.protobuf.FieldMask
update_mask
=
2
[(
google.api.field_behavior
)
=
REQUIRED
]
;
}
message
DeleteIdentityProviderRequest
{
// The name of the identityProvider to delete.
string
name
=
1
;
// Required. The resource name of the identity provider to delete.
// Format: identityProviders/{idp}
string
name
=
1
[
(
google.api.field_behavior
)
=
REQUIRED
,
(
google.api.resource_reference
)
=
{
type
:
"memos.api.v1/IdentityProvider"
}
];
}
proto/gen/api/v1/idp_service.pb.go
View file @
dac059a7
...
...
@@ -72,13 +72,19 @@ func (IdentityProvider_Type) EnumDescriptor() ([]byte, []int) {
type
IdentityProvider
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
// The
name of the identityP
rovider.
// Format: identityProviders/{id
}, id is the system generated auto-incremented id.
// The
resource name of the identity p
rovider.
// Format: identityProviders/{id
p}
Name
string
`protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Type
IdentityProvider_Type
`protobuf:"varint,2,opt,name=type,proto3,enum=memos.api.v1.IdentityProvider_Type" json:"type,omitempty"`
Title
string
`protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
IdentifierFilter
string
`protobuf:"bytes,4,opt,name=identifier_filter,json=identifierFilter,proto3" json:"identifier_filter,omitempty"`
Config
*
IdentityProviderConfig
`protobuf:"bytes,5,opt,name=config,proto3" json:"config,omitempty"`
// Output only. The system generated unique identifier.
Uid
string
`protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
// Required. The type of the identity provider.
Type
IdentityProvider_Type
`protobuf:"varint,3,opt,name=type,proto3,enum=memos.api.v1.IdentityProvider_Type" json:"type,omitempty"`
// Required. The display title of the identity provider.
Title
string
`protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
// Optional. Filter applied to user identifiers.
IdentifierFilter
string
`protobuf:"bytes,5,opt,name=identifier_filter,json=identifierFilter,proto3" json:"identifier_filter,omitempty"`
// Required. Configuration for the identity provider.
Config
*
IdentityProviderConfig
`protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
}
...
...
@@ -120,6 +126,13 @@ func (x *IdentityProvider) GetName() string {
return
""
}
func
(
x
*
IdentityProvider
)
GetUid
()
string
{
if
x
!=
nil
{
return
x
.
Uid
}
return
""
}
func
(
x
*
IdentityProvider
)
GetType
()
IdentityProvider_Type
{
if
x
!=
nil
{
return
x
.
Type
...
...
@@ -376,6 +389,10 @@ func (x *OAuth2Config) GetFieldMapping() *FieldMapping {
type
ListIdentityProvidersRequest
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
// Optional. The maximum number of identity providers to return.
PageSize
int32
`protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A page token for pagination.
PageToken
string
`protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
}
...
...
@@ -410,9 +427,26 @@ func (*ListIdentityProvidersRequest) Descriptor() ([]byte, []int) {
return
file_api_v1_idp_service_proto_rawDescGZIP
(),
[]
int
{
4
}
}
func
(
x
*
ListIdentityProvidersRequest
)
GetPageSize
()
int32
{
if
x
!=
nil
{
return
x
.
PageSize
}
return
0
}
func
(
x
*
ListIdentityProvidersRequest
)
GetPageToken
()
string
{
if
x
!=
nil
{
return
x
.
PageToken
}
return
""
}
type
ListIdentityProvidersResponse
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
// The list of identity providers.
IdentityProviders
[]
*
IdentityProvider
`protobuf:"bytes,1,rep,name=identity_providers,json=identityProviders,proto3" json:"identity_providers,omitempty"`
// A token for the next page of results.
NextPageToken
string
`protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
}
...
...
@@ -454,9 +488,17 @@ func (x *ListIdentityProvidersResponse) GetIdentityProviders() []*IdentityProvid
return
nil
}
func
(
x
*
ListIdentityProvidersResponse
)
GetNextPageToken
()
string
{
if
x
!=
nil
{
return
x
.
NextPageToken
}
return
""
}
type
GetIdentityProviderRequest
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
// The name of the identityProvider to get.
// Required. The resource name of the identity provider to get.
// Format: identityProviders/{idp}
Name
string
`protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
...
...
@@ -501,8 +543,11 @@ func (x *GetIdentityProviderRequest) GetName() string {
type
CreateIdentityProviderRequest
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
//
The identityP
rovider to create.
//
Required. The identity p
rovider to create.
IdentityProvider
*
IdentityProvider
`protobuf:"bytes,1,opt,name=identity_provider,json=identityProvider,proto3" json:"identity_provider,omitempty"`
// Optional. The ID to use for the identity provider, which will become the final component of the resource name.
// If not provided, the system will generate one.
IdentityProviderId
string
`protobuf:"bytes,2,opt,name=identity_provider_id,json=identityProviderId,proto3" json:"identity_provider_id,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
}
...
...
@@ -544,11 +589,18 @@ func (x *CreateIdentityProviderRequest) GetIdentityProvider() *IdentityProvider
return
nil
}
func
(
x
*
CreateIdentityProviderRequest
)
GetIdentityProviderId
()
string
{
if
x
!=
nil
{
return
x
.
IdentityProviderId
}
return
""
}
type
UpdateIdentityProviderRequest
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
//
The identityP
rovider to update.
//
Required. The identity p
rovider to update.
IdentityProvider
*
IdentityProvider
`protobuf:"bytes,1,opt,name=identity_provider,json=identityProvider,proto3" json:"identity_provider,omitempty"`
// The update mask applies to the resource. Only the top level fields of
//
Required.
The update mask applies to the resource. Only the top level fields of
// IdentityProvider are supported.
UpdateMask
*
fieldmaskpb
.
FieldMask
`protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
unknownFields
protoimpl
.
UnknownFields
...
...
@@ -601,7 +653,8 @@ func (x *UpdateIdentityProviderRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
type
DeleteIdentityProviderRequest
struct
{
state
protoimpl
.
MessageState
`protogen:"open.v1"`
// The name of the identityProvider to delete.
// Required. The resource name of the identity provider to delete.
// Format: identityProviders/{idp}
Name
string
`protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
unknownFields
protoimpl
.
UnknownFields
sizeCache
protoimpl
.
SizeCache
...
...
@@ -648,17 +701,19 @@ var File_api_v1_idp_service_proto protoreflect.FileDescriptor
const
file_api_v1_idp_service_proto_rawDesc
=
""
+
"
\n
"
+
"
\x18
api/v1/idp_service.proto
\x12\f
memos.api.v1
\x1a\x1c
google/api/annotations.proto
\x1a\x17
google/api/client.proto
\x1a\x1b
google/protobuf/empty.proto
\x1a
google/protobuf/field_mask.proto
\"\x8a\x02\n
"
+
"
\x10
IdentityProvider
\x12\x12\n
"
+
"
\x04
name
\x18\x01
\x01
(
\t
R
\x04
name
\x12
7
\n
"
+
"
\x04
type
\x18\x02
\x01
(
\x0e
2#.memos.api.v1.IdentityProvider.TypeR
\x04
type
\x12\x14\n
"
+
"
\x05
title
\x18\x03
\x01
(
\t
R
\x05
title
\x12
+
\n
"
+
"
\x11
identifier_filter
\x18\x04
\x01
(
\t
R
\x10
identifierFilter
\x12
<
\n
"
+
"
\x06
config
\x18\x05
\x01
(
\v
2$.memos.api.v1.IdentityProviderConfigR
\x06
config
\"
(
\n
"
+
"
\x18
api/v1/idp_service.proto
\x12\f
memos.api.v1
\x1a\x1c
google/api/annotations.proto
\x1a\x17
google/api/client.proto
\x1a\x1f
google/api/field_behavior.proto
\x1a\x19
google/api/resource.proto
\x1a\x1b
google/protobuf/empty.proto
\x1a
google/protobuf/field_mask.proto
\"\xa2\x03\n
"
+
"
\x10
IdentityProvider
\x12\x17\n
"
+
"
\x04
name
\x18\x01
\x01
(
\t
B
\x03\xe0
A
\b
R
\x04
name
\x12\x15\n
"
+
"
\x03
uid
\x18\x02
\x01
(
\t
B
\x03\xe0
A
\x03
R
\x03
uid
\x12
<
\n
"
+
"
\x04
type
\x18\x03
\x01
(
\x0e
2#.memos.api.v1.IdentityProvider.TypeB
\x03\xe0
A
\x02
R
\x04
type
\x12\x19\n
"
+
"
\x05
title
\x18\x04
\x01
(
\t
B
\x03\xe0
A
\x02
R
\x05
title
\x12
0
\n
"
+
"
\x11
identifier_filter
\x18\x05
\x01
(
\t
B
\x03\xe0
A
\x01
R
\x10
identifierFilter
\x12
A
\n
"
+
"
\x06
config
\x18\x06
\x01
(
\v
2$.memos.api.v1.IdentityProviderConfigB
\x03\xe0
A
\x02
R
\x06
config
\"
(
\n
"
+
"
\x04
Type
\x12\x14\n
"
+
"
\x10
TYPE_UNSPECIFIED
\x10\x00\x12\n
"
+
"
\n
"
+
"
\x06
OAUTH2
\x10\x01\"
e
\n
"
+
"
\x06
OAUTH2
\x10\x01
:f
\xea
Ac
\n
"
+
"
\x1d
memos.api.v1/IdentityProvider
\x12\x17
identityProviders/{idp}
\x1a\x04
name*
\x11
identityProviders2
\x10
identityProvider
\"
e
\n
"
+
"
\x16
IdentityProviderConfig
\x12
A
\n
"
+
"
\r
oauth2_config
\x18\x01
\x01
(
\v
2
\x1a
.memos.api.v1.OAuth2ConfigH
\x00
R
\f
oauth2ConfigB
\b\n
"
+
"
\x06
config
\"\x86\x01\n
"
+
...
...
@@ -677,24 +732,31 @@ const file_api_v1_idp_service_proto_rawDesc = "" +
"
\t
token_url
\x18\x04
\x01
(
\t
R
\b
tokenUrl
\x12\"\n
"
+
"
\r
user_info_url
\x18\x05
\x01
(
\t
R
\v
userInfoUrl
\x12\x16\n
"
+
"
\x06
scopes
\x18\x06
\x03
(
\t
R
\x06
scopes
\x12
?
\n
"
+
"
\r
field_mapping
\x18\a
\x01
(
\v
2
\x1a
.memos.api.v1.FieldMappingR
\f
fieldMapping
\"\x1e\n
"
+
"
\x1c
ListIdentityProvidersRequest
\"
n
\n
"
+
"
\r
field_mapping
\x18\a
\x01
(
\v
2
\x1a
.memos.api.v1.FieldMappingR
\f
fieldMapping
\"
d
\n
"
+
"
\x1c
ListIdentityProvidersRequest
\x12
\n
"
+
"
\t
page_size
\x18\x01
\x01
(
\x05
B
\x03\xe0
A
\x01
R
\b
pageSize
\x12\"\n
"
+
"
\n
"
+
"page_token
\x18\x02
\x01
(
\t
B
\x03\xe0
A
\x01
R
\t
pageToken
\"\x96\x01\n
"
+
"
\x1d
ListIdentityProvidersResponse
\x12
M
\n
"
+
"
\x12
identity_providers
\x18\x01
\x03
(
\v
2
\x1e
.memos.api.v1.IdentityProviderR
\x11
identityProviders
\"
0
\n
"
+
"
\x1a
GetIdentityProviderRequest
\x12\x12\n
"
+
"
\x04
name
\x18\x01
\x01
(
\t
R
\x04
name
\"
l
\n
"
+
"
\x1d
CreateIdentityProviderRequest
\x12
K
\n
"
+
"
\x11
identity_provider
\x18\x01
\x01
(
\v
2
\x1e
.memos.api.v1.IdentityProviderR
\x10
identityProvider
\"\xa9\x01\n
"
+
"
\x1d
UpdateIdentityProviderRequest
\x12
K
\n
"
+
"
\x11
identity_provider
\x18\x01
\x01
(
\v
2
\x1e
.memos.api.v1.IdentityProviderR
\x10
identityProvider
\x12
;
\n
"
+
"
\v
update_mask
\x18\x02
\x01
(
\v
2
\x1a
.google.protobuf.FieldMaskR
\n
"
+
"updateMask
\"
3
\n
"
+
"
\x1d
DeleteIdentityProviderRequest
\x12\x12\n
"
+
"
\x04
name
\x18\x01
\x01
(
\t
R
\x04
name2
\xce\x06\n
"
+
"
\x12
identity_providers
\x18\x01
\x03
(
\v
2
\x1e
.memos.api.v1.IdentityProviderR
\x11
identityProviders
\x12
&
\n
"
+
"
\x0f
next_page_token
\x18\x02
\x01
(
\t
R
\r
nextPageToken
\"
W
\n
"
+
"
\x1a
GetIdentityProviderRequest
\x12
9
\n
"
+
"
\x04
name
\x18\x01
\x01
(
\t
B%
\xe0
A
\x02\xfa
A
\x1f\n
"
+
"
\x1d
memos.api.v1/IdentityProviderR
\x04
name
\"\xa8\x01\n
"
+
"
\x1d
CreateIdentityProviderRequest
\x12
P
\n
"
+
"
\x11
identity_provider
\x18\x01
\x01
(
\v
2
\x1e
.memos.api.v1.IdentityProviderB
\x03\xe0
A
\x02
R
\x10
identityProvider
\x12
5
\n
"
+
"
\x14
identity_provider_id
\x18\x02
\x01
(
\t
B
\x03\xe0
A
\x01
R
\x12
identityProviderId
\"\xb3\x01\n
"
+
"
\x1d
UpdateIdentityProviderRequest
\x12
P
\n
"
+
"
\x11
identity_provider
\x18\x01
\x01
(
\v
2
\x1e
.memos.api.v1.IdentityProviderB
\x03\xe0
A
\x02
R
\x10
identityProvider
\x12
@
\n
"
+
"
\v
update_mask
\x18\x02
\x01
(
\v
2
\x1a
.google.protobuf.FieldMaskB
\x03\xe0
A
\x02
R
\n
"
+
"updateMask
\"
Z
\n
"
+
"
\x1d
DeleteIdentityProviderRequest
\x12
9
\n
"
+
"
\x04
name
\x18\x01
\x01
(
\t
B%
\xe0
A
\x02\xfa
A
\x1f\n
"
+
"
\x1d
memos.api.v1/IdentityProviderR
\x04
name2
\xe2\x06\n
"
+
"
\x17
IdentityProviderService
\x12\x93\x01\n
"
+
"
\x15
ListIdentityProviders
\x12
*.memos.api.v1.ListIdentityProvidersRequest
\x1a
+.memos.api.v1.ListIdentityProvidersResponse
\"
!
\x82\xd3\xe4\x93\x02\x1b\x12\x19
/api/v1/identityProviders
\x12\x92\x01\n
"
+
"
\x13
GetIdentityProvider
\x12
(.memos.api.v1.GetIdentityProviderRequest
\x1a\x1e
.memos.api.v1.IdentityProvider
\"
1
\xda
A
\x04
name
\x82\xd3\xe4\x93\x02
$
\x12\"
/api/v1/{name=identityProviders/*}
\x12\x
9b
\x01\n
"
+
"
\x16
CreateIdentityProvider
\x12
+.memos.api.v1.CreateIdentityProviderRequest
\x1a\x1e
.memos.api.v1.IdentityProvider
\"
4
\x82\xd3\xe4\x93\x02
.:
\x11
identity_provider
\"\x19
/api/v1/identityProviders
\x12\xd6\x01\n
"
+
"
\x13
GetIdentityProvider
\x12
(.memos.api.v1.GetIdentityProviderRequest
\x1a\x1e
.memos.api.v1.IdentityProvider
\"
1
\xda
A
\x04
name
\x82\xd3\xe4\x93\x02
$
\x12\"
/api/v1/{name=identityProviders/*}
\x12\x
af
\x01\n
"
+
"
\x16
CreateIdentityProvider
\x12
+.memos.api.v1.CreateIdentityProviderRequest
\x1a\x1e
.memos.api.v1.IdentityProvider
\"
H
\xda
A
\x11
identity_provider
\x82\xd3\xe4\x93\x02
.:
\x11
identity_provider
\"\x19
/api/v1/identityProviders
\x12\xd6\x01\n
"
+
"
\x16
UpdateIdentityProvider
\x12
+.memos.api.v1.UpdateIdentityProviderRequest
\x1a\x1e
.memos.api.v1.IdentityProvider
\"
o
\xda
A
\x1d
identity_provider,update_mask
\x82\xd3\xe4\x93\x02
I:
\x11
identity_provider24/api/v1/{identity_provider.name=identityProviders/*}
\x12\x90\x01\n
"
+
"
\x16
DeleteIdentityProvider
\x12
+.memos.api.v1.DeleteIdentityProviderRequest
\x1a\x16
.google.protobuf.Empty
\"
1
\xda
A
\x04
name
\x82\xd3\xe4\x93\x02
$*
\"
/api/v1/{name=identityProviders/*}B
\xa7\x01\n
"
+
"
\x10
com.memos.api.v1B
\x0f
IdpServiceProtoP
\x01
Z0github.com/usememos/memos/proto/gen/api/v1;apiv1
\xa2\x02\x03
MAX
\xaa\x02\f
Memos.Api.V1
\xca\x02\f
Memos
\\
Api
\\
V1
\xe2\x02\x18
Memos
\\
Api
\\
V1
\\
GPBMetadata
\xea\x02\x0e
Memos::Api::V1b
\x06
proto3"
...
...
proto/gen/api/v1/idp_service.pb.gw.go
View file @
dac059a7
...
...
@@ -35,12 +35,20 @@ var (
_
=
metadata
.
Join
)
var
filter_IdentityProviderService_ListIdentityProviders_0
=
&
utilities
.
DoubleArray
{
Encoding
:
map
[
string
]
int
{},
Base
:
[]
int
(
nil
),
Check
:
[]
int
(
nil
)}
func
request_IdentityProviderService_ListIdentityProviders_0
(
ctx
context
.
Context
,
marshaler
runtime
.
Marshaler
,
client
IdentityProviderServiceClient
,
req
*
http
.
Request
,
pathParams
map
[
string
]
string
)
(
proto
.
Message
,
runtime
.
ServerMetadata
,
error
)
{
var
(
protoReq
ListIdentityProvidersRequest
metadata
runtime
.
ServerMetadata
)
io
.
Copy
(
io
.
Discard
,
req
.
Body
)
if
err
:=
req
.
ParseForm
();
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
if
err
:=
runtime
.
PopulateQueryParameters
(
&
protoReq
,
req
.
Form
,
filter_IdentityProviderService_ListIdentityProviders_0
);
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
msg
,
err
:=
client
.
ListIdentityProviders
(
ctx
,
&
protoReq
,
grpc
.
Header
(
&
metadata
.
HeaderMD
),
grpc
.
Trailer
(
&
metadata
.
TrailerMD
))
return
msg
,
metadata
,
err
}
...
...
@@ -50,6 +58,12 @@ func local_request_IdentityProviderService_ListIdentityProviders_0(ctx context.C
protoReq
ListIdentityProvidersRequest
metadata
runtime
.
ServerMetadata
)
if
err
:=
req
.
ParseForm
();
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
if
err
:=
runtime
.
PopulateQueryParameters
(
&
protoReq
,
req
.
Form
,
filter_IdentityProviderService_ListIdentityProviders_0
);
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
msg
,
err
:=
server
.
ListIdentityProviders
(
ctx
,
&
protoReq
)
return
msg
,
metadata
,
err
}
...
...
@@ -91,6 +105,8 @@ func local_request_IdentityProviderService_GetIdentityProvider_0(ctx context.Con
return
msg
,
metadata
,
err
}
var
filter_IdentityProviderService_CreateIdentityProvider_0
=
&
utilities
.
DoubleArray
{
Encoding
:
map
[
string
]
int
{
"identity_provider"
:
0
},
Base
:
[]
int
{
1
,
1
,
0
},
Check
:
[]
int
{
0
,
1
,
2
}}
func
request_IdentityProviderService_CreateIdentityProvider_0
(
ctx
context
.
Context
,
marshaler
runtime
.
Marshaler
,
client
IdentityProviderServiceClient
,
req
*
http
.
Request
,
pathParams
map
[
string
]
string
)
(
proto
.
Message
,
runtime
.
ServerMetadata
,
error
)
{
var
(
protoReq
CreateIdentityProviderRequest
...
...
@@ -99,6 +115,12 @@ func request_IdentityProviderService_CreateIdentityProvider_0(ctx context.Contex
if
err
:=
marshaler
.
NewDecoder
(
req
.
Body
)
.
Decode
(
&
protoReq
.
IdentityProvider
);
err
!=
nil
&&
!
errors
.
Is
(
err
,
io
.
EOF
)
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
if
err
:=
req
.
ParseForm
();
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
if
err
:=
runtime
.
PopulateQueryParameters
(
&
protoReq
,
req
.
Form
,
filter_IdentityProviderService_CreateIdentityProvider_0
);
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
msg
,
err
:=
client
.
CreateIdentityProvider
(
ctx
,
&
protoReq
,
grpc
.
Header
(
&
metadata
.
HeaderMD
),
grpc
.
Trailer
(
&
metadata
.
TrailerMD
))
return
msg
,
metadata
,
err
}
...
...
@@ -111,6 +133,12 @@ func local_request_IdentityProviderService_CreateIdentityProvider_0(ctx context.
if
err
:=
marshaler
.
NewDecoder
(
req
.
Body
)
.
Decode
(
&
protoReq
.
IdentityProvider
);
err
!=
nil
&&
!
errors
.
Is
(
err
,
io
.
EOF
)
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
if
err
:=
req
.
ParseForm
();
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
if
err
:=
runtime
.
PopulateQueryParameters
(
&
protoReq
,
req
.
Form
,
filter_IdentityProviderService_CreateIdentityProvider_0
);
err
!=
nil
{
return
nil
,
metadata
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"%v"
,
err
)
}
msg
,
err
:=
server
.
CreateIdentityProvider
(
ctx
,
&
protoReq
)
return
msg
,
metadata
,
err
}
...
...
proto/gen/apidocs.swagger.yaml
View file @
dac059a7
...
...
@@ -136,6 +136,18 @@ paths:
description
:
An unexpected error response.
schema
:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
pageSize
description
:
Optional. The maximum number of identity providers to return.
in
:
query
required
:
false
type
:
integer
format
:
int32
-
name
:
pageToken
description
:
Optional. A page token for pagination.
in
:
query
required
:
false
type
:
string
tags
:
-
IdentityProviderService
post
:
...
...
@@ -152,11 +164,20 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
identityProvider
description
:
The identityP
rovider to create.
description
:
Required. The identity p
rovider to create.
in
:
body
required
:
true
schema
:
$ref
:
'
#/definitions/apiv1IdentityProvider'
required
:
-
identityProvider
-
name
:
identityProviderId
description
:
|-
Optional. The ID to use for the identity provider, which will become the final component of the resource name.
If not provided, the system will generate one.
in: query
required: false
type: string
tags
:
-
IdentityProviderService
/api/v1/inboxes
:
...
...
@@ -722,28 +743,41 @@ paths:
parameters
:
-
name
:
identityProvider.name
description
:
|-
The
name of the identityP
rovider.
Format: identityProviders/{id
}, id is the system generated auto-incremented id.
The
resource name of the identity p
rovider.
Format: identityProviders/{id
p}
in: path
required: true
type: string
pattern: identityProviders/[^/]+
-
name
:
identityProvider
description
:
The identityP
rovider to update.
description
:
Required. The identity p
rovider to update.
in
:
body
required
:
true
schema
:
type
:
object
properties
:
uid
:
type
:
string
description
:
Output only. The system generated unique identifier.
readOnly
:
true
type
:
$ref
:
'
#/definitions/apiv1IdentityProviderType'
description
:
Required. The type of the identity provider.
title
:
type
:
string
description
:
Required. The display title of the identity provider.
identifierFilter
:
type
:
string
description
:
Optional. Filter applied to user identifiers.
config
:
$ref
:
'
#/definitions/apiv1IdentityProviderConfig'
title
:
The identityProvider to update.
description
:
Required. Configuration for the identity provider.
title
:
Required. The identity provider to update.
required
:
-
type
-
title
-
config
-
identityProvider
tags
:
-
IdentityProviderService
/api/v1/{inbox.name}
:
...
...
@@ -965,7 +999,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_2
description
:
The name of the identityProvider to get.
description
:
|-
Required. The resource name of the identity provider to get.
Format: identityProviders/{idp}
in: path
required: true
type: string
...
...
@@ -987,7 +1023,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_2
description
:
The name of the identityProvider to delete.
description
:
|-
Required. The resource name of the identity provider to delete.
Format: identityProviders/{idp}
in: path
required: true
type: string
...
...
@@ -2394,17 +2432,29 @@ definitions:
properties
:
name
:
type
:
string
description
:
|-
The name of the identityProvider.
Format: identityProviders/{id}, id is the system generated auto-incremented id.
title
:
|-
The resource name of the identity provider.
Format: identityProviders/{idp}
uid
:
type
:
string
description
:
Output only. The system generated unique identifier.
readOnly
:
true
type
:
$ref
:
'
#/definitions/apiv1IdentityProviderType'
description
:
Required. The type of the identity provider.
title
:
type
:
string
description
:
Required. The display title of the identity provider.
identifierFilter
:
type
:
string
description
:
Optional. Filter applied to user identifiers.
config
:
$ref
:
'
#/definitions/apiv1IdentityProviderConfig'
description
:
Required. Configuration for the identity provider.
required
:
-
type
-
title
-
config
apiv1IdentityProviderConfig
:
type
:
object
properties
:
...
...
@@ -3036,6 +3086,10 @@ definitions:
items
:
type
:
object
$ref
:
'
#/definitions/apiv1IdentityProvider'
description
:
The list of identity providers.
nextPageToken
:
type
:
string
description
:
A token for the next page of results.
v1ListInboxesResponse
:
type
:
object
properties
:
...
...
server/router/api/v1/idp_service.go
View file @
dac059a7
...
...
@@ -106,6 +106,7 @@ func (s *APIV1Service) DeleteIdentityProvider(ctx context.Context, request *v1pb
func
convertIdentityProviderFromStore
(
identityProvider
*
storepb
.
IdentityProvider
)
*
v1pb
.
IdentityProvider
{
temp
:=
&
v1pb
.
IdentityProvider
{
Name
:
fmt
.
Sprintf
(
"%s%d"
,
IdentityProviderNamePrefix
,
identityProvider
.
Id
),
Uid
:
fmt
.
Sprintf
(
"%d"
,
identityProvider
.
Id
),
Title
:
identityProvider
.
Name
,
IdentifierFilter
:
identityProvider
.
IdentifierFilter
,
Type
:
v1pb
.
IdentityProvider_Type
(
v1pb
.
IdentityProvider_Type_value
[
identityProvider
.
Type
.
String
()]),
...
...
web/src/components/CreateIdentityProviderDialog.tsx
View file @
dac059a7
...
...
@@ -12,6 +12,7 @@ import { generateDialog } from "./Dialog";
const
templateList
:
IdentityProvider
[]
=
[
{
name
:
""
,
uid
:
""
,
title
:
"GitHub"
,
type
:
IdentityProvider_Type
.
OAUTH2
,
identifierFilter
:
""
,
...
...
@@ -33,6 +34,7 @@ const templateList: IdentityProvider[] = [
},
{
name
:
""
,
uid
:
""
,
title
:
"GitLab"
,
type
:
IdentityProvider_Type
.
OAUTH2
,
identifierFilter
:
""
,
...
...
@@ -54,6 +56,7 @@ const templateList: IdentityProvider[] = [
},
{
name
:
""
,
uid
:
""
,
title
:
"Google"
,
type
:
IdentityProvider_Type
.
OAUTH2
,
identifierFilter
:
""
,
...
...
@@ -75,6 +78,7 @@ const templateList: IdentityProvider[] = [
},
{
name
:
""
,
uid
:
""
,
title
:
"Custom"
,
type
:
IdentityProvider_Type
.
OAUTH2
,
identifierFilter
:
""
,
...
...
web/src/types/proto/api/v1/idp_service.ts
View file @
dac059a7
...
...
@@ -13,13 +13,19 @@ export const protobufPackage = "memos.api.v1";
export
interface
IdentityProvider
{
/**
* The
name of the identityP
rovider.
* Format: identityProviders/{id
}, id is the system generated auto-incremented id.
* The
resource name of the identity p
rovider.
* Format: identityProviders/{id
p}
*/
name
:
string
;
/** Output only. The system generated unique identifier. */
uid
:
string
;
/** Required. The type of the identity provider. */
type
:
IdentityProvider_Type
;
/** Required. The display title of the identity provider. */
title
:
string
;
/** Optional. Filter applied to user identifiers. */
identifierFilter
:
string
;
/** Required. Configuration for the identity provider. */
config
?:
IdentityProviderConfig
|
undefined
;
}
...
...
@@ -78,41 +84,68 @@ export interface OAuth2Config {
}
export
interface
ListIdentityProvidersRequest
{
/** Optional. The maximum number of identity providers to return. */
pageSize
:
number
;
/** Optional. A page token for pagination. */
pageToken
:
string
;
}
export
interface
ListIdentityProvidersResponse
{
/** The list of identity providers. */
identityProviders
:
IdentityProvider
[];
/** A token for the next page of results. */
nextPageToken
:
string
;
}
export
interface
GetIdentityProviderRequest
{
/** The name of the identityProvider to get. */
/**
* Required. The resource name of the identity provider to get.
* Format: identityProviders/{idp}
*/
name
:
string
;
}
export
interface
CreateIdentityProviderRequest
{
/** The identityProvider to create. */
identityProvider
?:
IdentityProvider
|
undefined
;
/** Required. The identity provider to create. */
identityProvider
?:
|
IdentityProvider
|
undefined
;
/**
* Optional. The ID to use for the identity provider, which will become the final component of the resource name.
* If not provided, the system will generate one.
*/
identityProviderId
:
string
;
}
export
interface
UpdateIdentityProviderRequest
{
/**
The identityP
rovider to update. */
/**
Required. The identity p
rovider to update. */
identityProvider
?:
|
IdentityProvider
|
undefined
;
/**
* The update mask applies to the resource. Only the top level fields of
*
Required.
The update mask applies to the resource. Only the top level fields of
* IdentityProvider are supported.
*/
updateMask
?:
string
[]
|
undefined
;
}
export
interface
DeleteIdentityProviderRequest
{
/** The name of the identityProvider to delete. */
/**
* Required. The resource name of the identity provider to delete.
* Format: identityProviders/{idp}
*/
name
:
string
;
}
function
createBaseIdentityProvider
():
IdentityProvider
{
return
{
name
:
""
,
type
:
IdentityProvider_Type
.
TYPE_UNSPECIFIED
,
title
:
""
,
identifierFilter
:
""
,
config
:
undefined
};
return
{
name
:
""
,
uid
:
""
,
type
:
IdentityProvider_Type
.
TYPE_UNSPECIFIED
,
title
:
""
,
identifierFilter
:
""
,
config
:
undefined
,
};
}
export
const
IdentityProvider
:
MessageFns
<
IdentityProvider
>
=
{
...
...
@@ -120,17 +153,20 @@ export const IdentityProvider: MessageFns<IdentityProvider> = {
if
(
message
.
name
!==
""
)
{
writer
.
uint32
(
10
).
string
(
message
.
name
);
}
if
(
message
.
uid
!==
""
)
{
writer
.
uint32
(
18
).
string
(
message
.
uid
);
}
if
(
message
.
type
!==
IdentityProvider_Type
.
TYPE_UNSPECIFIED
)
{
writer
.
uint32
(
16
).
int32
(
identityProvider_TypeToNumber
(
message
.
type
));
writer
.
uint32
(
24
).
int32
(
identityProvider_TypeToNumber
(
message
.
type
));
}
if
(
message
.
title
!==
""
)
{
writer
.
uint32
(
26
).
string
(
message
.
title
);
writer
.
uint32
(
34
).
string
(
message
.
title
);
}
if
(
message
.
identifierFilter
!==
""
)
{
writer
.
uint32
(
34
).
string
(
message
.
identifierFilter
);
writer
.
uint32
(
42
).
string
(
message
.
identifierFilter
);
}
if
(
message
.
config
!==
undefined
)
{
IdentityProviderConfig
.
encode
(
message
.
config
,
writer
.
uint32
(
42
).
fork
()).
join
();
IdentityProviderConfig
.
encode
(
message
.
config
,
writer
.
uint32
(
50
).
fork
()).
join
();
}
return
writer
;
},
...
...
@@ -151,19 +187,19 @@ export const IdentityProvider: MessageFns<IdentityProvider> = {
continue
;
}
case
2
:
{
if
(
tag
!==
1
6
)
{
if
(
tag
!==
1
8
)
{
break
;
}
message
.
type
=
identityProvider_TypeFromJSON
(
reader
.
int32
()
);
message
.
uid
=
reader
.
string
(
);
continue
;
}
case
3
:
{
if
(
tag
!==
2
6
)
{
if
(
tag
!==
2
4
)
{
break
;
}
message
.
t
itle
=
reader
.
string
(
);
message
.
t
ype
=
identityProvider_TypeFromJSON
(
reader
.
int32
()
);
continue
;
}
case
4
:
{
...
...
@@ -171,7 +207,7 @@ export const IdentityProvider: MessageFns<IdentityProvider> = {
break
;
}
message
.
identifierFilter
=
reader
.
string
();
message
.
title
=
reader
.
string
();
continue
;
}
case
5
:
{
...
...
@@ -179,6 +215,14 @@ export const IdentityProvider: MessageFns<IdentityProvider> = {
break
;
}
message
.
identifierFilter
=
reader
.
string
();
continue
;
}
case
6
:
{
if
(
tag
!==
50
)
{
break
;
}
message
.
config
=
IdentityProviderConfig
.
decode
(
reader
,
reader
.
uint32
());
continue
;
}
...
...
@@ -197,6 +241,7 @@ export const IdentityProvider: MessageFns<IdentityProvider> = {
fromPartial
(
object
:
DeepPartial
<
IdentityProvider
>
):
IdentityProvider
{
const
message
=
createBaseIdentityProvider
();
message
.
name
=
object
.
name
??
""
;
message
.
uid
=
object
.
uid
??
""
;
message
.
type
=
object
.
type
??
IdentityProvider_Type
.
TYPE_UNSPECIFIED
;
message
.
title
=
object
.
title
??
""
;
message
.
identifierFilter
=
object
.
identifierFilter
??
""
;
...
...
@@ -466,11 +511,17 @@ export const OAuth2Config: MessageFns<OAuth2Config> = {
};
function
createBaseListIdentityProvidersRequest
():
ListIdentityProvidersRequest
{
return
{};
return
{
pageSize
:
0
,
pageToken
:
""
};
}
export
const
ListIdentityProvidersRequest
:
MessageFns
<
ListIdentityProvidersRequest
>
=
{
encode
(
_
:
ListIdentityProvidersRequest
,
writer
:
BinaryWriter
=
new
BinaryWriter
()):
BinaryWriter
{
encode
(
message
:
ListIdentityProvidersRequest
,
writer
:
BinaryWriter
=
new
BinaryWriter
()):
BinaryWriter
{
if
(
message
.
pageSize
!==
0
)
{
writer
.
uint32
(
8
).
int32
(
message
.
pageSize
);
}
if
(
message
.
pageToken
!==
""
)
{
writer
.
uint32
(
18
).
string
(
message
.
pageToken
);
}
return
writer
;
},
...
...
@@ -481,6 +532,22 @@ export const ListIdentityProvidersRequest: MessageFns<ListIdentityProvidersReque
while
(
reader
.
pos
<
end
)
{
const
tag
=
reader
.
uint32
();
switch
(
tag
>>>
3
)
{
case
1
:
{
if
(
tag
!==
8
)
{
break
;
}
message
.
pageSize
=
reader
.
int32
();
continue
;
}
case
2
:
{
if
(
tag
!==
18
)
{
break
;
}
message
.
pageToken
=
reader
.
string
();
continue
;
}
}
if
((
tag
&
7
)
===
4
||
tag
===
0
)
{
break
;
...
...
@@ -493,14 +560,16 @@ export const ListIdentityProvidersRequest: MessageFns<ListIdentityProvidersReque
create
(
base
?:
DeepPartial
<
ListIdentityProvidersRequest
>
):
ListIdentityProvidersRequest
{
return
ListIdentityProvidersRequest
.
fromPartial
(
base
??
{});
},
fromPartial
(
_
:
DeepPartial
<
ListIdentityProvidersRequest
>
):
ListIdentityProvidersRequest
{
fromPartial
(
object
:
DeepPartial
<
ListIdentityProvidersRequest
>
):
ListIdentityProvidersRequest
{
const
message
=
createBaseListIdentityProvidersRequest
();
message
.
pageSize
=
object
.
pageSize
??
0
;
message
.
pageToken
=
object
.
pageToken
??
""
;
return
message
;
},
};
function
createBaseListIdentityProvidersResponse
():
ListIdentityProvidersResponse
{
return
{
identityProviders
:
[]
};
return
{
identityProviders
:
[]
,
nextPageToken
:
""
};
}
export
const
ListIdentityProvidersResponse
:
MessageFns
<
ListIdentityProvidersResponse
>
=
{
...
...
@@ -508,6 +577,9 @@ export const ListIdentityProvidersResponse: MessageFns<ListIdentityProvidersResp
for
(
const
v
of
message
.
identityProviders
)
{
IdentityProvider
.
encode
(
v
!
,
writer
.
uint32
(
10
).
fork
()).
join
();
}
if
(
message
.
nextPageToken
!==
""
)
{
writer
.
uint32
(
18
).
string
(
message
.
nextPageToken
);
}
return
writer
;
},
...
...
@@ -526,6 +598,14 @@ export const ListIdentityProvidersResponse: MessageFns<ListIdentityProvidersResp
message
.
identityProviders
.
push
(
IdentityProvider
.
decode
(
reader
,
reader
.
uint32
()));
continue
;
}
case
2
:
{
if
(
tag
!==
18
)
{
break
;
}
message
.
nextPageToken
=
reader
.
string
();
continue
;
}
}
if
((
tag
&
7
)
===
4
||
tag
===
0
)
{
break
;
...
...
@@ -541,6 +621,7 @@ export const ListIdentityProvidersResponse: MessageFns<ListIdentityProvidersResp
fromPartial
(
object
:
DeepPartial
<
ListIdentityProvidersResponse
>
):
ListIdentityProvidersResponse
{
const
message
=
createBaseListIdentityProvidersResponse
();
message
.
identityProviders
=
object
.
identityProviders
?.
map
((
e
)
=>
IdentityProvider
.
fromPartial
(
e
))
||
[];
message
.
nextPageToken
=
object
.
nextPageToken
??
""
;
return
message
;
},
};
...
...
@@ -592,7 +673,7 @@ export const GetIdentityProviderRequest: MessageFns<GetIdentityProviderRequest>
};
function
createBaseCreateIdentityProviderRequest
():
CreateIdentityProviderRequest
{
return
{
identityProvider
:
undefined
};
return
{
identityProvider
:
undefined
,
identityProviderId
:
""
};
}
export
const
CreateIdentityProviderRequest
:
MessageFns
<
CreateIdentityProviderRequest
>
=
{
...
...
@@ -600,6 +681,9 @@ export const CreateIdentityProviderRequest: MessageFns<CreateIdentityProviderReq
if
(
message
.
identityProvider
!==
undefined
)
{
IdentityProvider
.
encode
(
message
.
identityProvider
,
writer
.
uint32
(
10
).
fork
()).
join
();
}
if
(
message
.
identityProviderId
!==
""
)
{
writer
.
uint32
(
18
).
string
(
message
.
identityProviderId
);
}
return
writer
;
},
...
...
@@ -618,6 +702,14 @@ export const CreateIdentityProviderRequest: MessageFns<CreateIdentityProviderReq
message
.
identityProvider
=
IdentityProvider
.
decode
(
reader
,
reader
.
uint32
());
continue
;
}
case
2
:
{
if
(
tag
!==
18
)
{
break
;
}
message
.
identityProviderId
=
reader
.
string
();
continue
;
}
}
if
((
tag
&
7
)
===
4
||
tag
===
0
)
{
break
;
...
...
@@ -635,6 +727,7 @@ export const CreateIdentityProviderRequest: MessageFns<CreateIdentityProviderReq
message
.
identityProvider
=
(
object
.
identityProvider
!==
undefined
&&
object
.
identityProvider
!==
null
)
?
IdentityProvider
.
fromPartial
(
object
.
identityProvider
)
:
undefined
;
message
.
identityProviderId
=
object
.
identityProviderId
??
""
;
return
message
;
},
};
...
...
@@ -857,6 +950,9 @@ export const IdentityProviderServiceDefinition = {
responseStream
:
false
,
options
:
{
_unknownFields
:
{
8410
:
[
new
Uint8Array
([
17
,
105
,
100
,
101
,
110
,
116
,
105
,
116
,
121
,
95
,
112
,
114
,
111
,
118
,
105
,
100
,
101
,
114
]),
],
578365826
:
[
new
Uint8Array
([
46
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment