@@ -22,41 +22,77 @@ import {
22
22
DeleteAuthProviderRequest ,
23
23
DeleteAuthProviderResponse ,
24
24
} from "@gitpod/public-api/lib/gitpod/v1/authprovider_pb" ;
25
+ import { AuthProviderService } from "../auth/auth-provider-service" ;
26
+ import { AuthProviderEntry } from "@gitpod/gitpod-protocol" ;
25
27
26
28
@injectable ( )
27
29
export class AuthProviderServiceAPI implements ServiceImpl < typeof AuthProviderServiceInterface > {
28
- @inject ( PublicAPIConverter )
29
- private readonly apiConverter : PublicAPIConverter ;
30
+ constructor (
31
+ @inject ( PublicAPIConverter ) private readonly apiConverter : PublicAPIConverter ,
32
+ @inject ( AuthProviderService ) private readonly authProviderService : AuthProviderService ,
33
+ ) { }
30
34
31
35
async createAuthProvider (
32
- req : CreateAuthProviderRequest ,
36
+ request : CreateAuthProviderRequest ,
33
37
context : HandlerContext ,
34
38
) : Promise < CreateAuthProviderResponse > {
35
39
throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
36
40
}
37
- async getAuthProvider ( req : GetAuthProviderRequest , context : HandlerContext ) : Promise < GetAuthProviderResponse > {
38
- throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
41
+ async getAuthProvider ( request : GetAuthProviderRequest , context : HandlerContext ) : Promise < GetAuthProviderResponse > {
42
+ if ( ! request . authProviderId ) {
43
+ throw new ConnectError ( "authProviderId is required" , Code . InvalidArgument ) ;
44
+ }
45
+
46
+ const authProvider = await this . authProviderService . getAuthProvider ( context . user . id , request . authProviderId ) ;
47
+ if ( ! authProvider ) {
48
+ throw new ConnectError ( "Provider not found." , Code . NotFound ) ;
49
+ }
50
+
51
+ return new GetAuthProviderResponse ( {
52
+ authProvider : this . apiConverter . toAuthProvider ( authProvider ) ,
53
+ } ) ;
39
54
}
55
+
40
56
async listAuthProviders (
41
- req : ListAuthProvidersRequest ,
57
+ request : ListAuthProvidersRequest ,
42
58
context : HandlerContext ,
43
59
) : Promise < ListAuthProvidersResponse > {
44
- throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
60
+ const target = request . id ;
61
+ const ownerId = target . case === "userId" ? target . value : undefined ;
62
+ const organizationId = target . case === "organizationId" ? target . value : undefined ;
63
+
64
+ if ( ! organizationId && ! ownerId ) {
65
+ throw new ConnectError ( "organizationId or ownerId is required" , Code . InvalidArgument ) ;
66
+ }
67
+
68
+ const authProviders = organizationId
69
+ ? await this . authProviderService . getAuthProvidersOfOrg ( context . user . id , organizationId )
70
+ : await this . authProviderService . getAuthProvidersOfUser ( context . user . id ) ;
71
+
72
+ const redacted = authProviders . map ( AuthProviderEntry . redact . bind ( AuthProviderEntry ) ) ;
73
+
74
+ const result = new ListAuthProvidersResponse ( {
75
+ list : redacted . map ( ( ap ) => this . apiConverter . toAuthProvider ( ap ) ) ,
76
+ } ) ;
77
+ return result ;
45
78
}
79
+
46
80
async listAuthProviderDescriptions (
47
- req : ListAuthProviderDescriptionsRequest ,
81
+ request : ListAuthProviderDescriptionsRequest ,
48
82
context : HandlerContext ,
49
83
) : Promise < ListAuthProviderDescriptionsResponse > {
50
84
throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
51
85
}
86
+
52
87
async updateAuthProvider (
53
- req : UpdateAuthProviderRequest ,
88
+ request : UpdateAuthProviderRequest ,
54
89
context : HandlerContext ,
55
90
) : Promise < UpdateAuthProviderResponse > {
56
91
throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
57
92
}
93
+
58
94
async deleteAuthProvider (
59
- req : DeleteAuthProviderRequest ,
95
+ request : DeleteAuthProviderRequest ,
60
96
context : HandlerContext ,
61
97
) : Promise < DeleteAuthProviderResponse > {
62
98
throw new ConnectError ( "unimplemented" , Code . Unimplemented ) ;
0 commit comments