@@ -83,8 +83,8 @@ func findEnv(ctx context.Context, client *coder.Client, envName, userEmail strin
83
83
)
84
84
}
85
85
86
- func findImg (ctx context.Context , client * coder.Client , email , imgName string ) (* coder.Image , error ) {
87
- userImgs , err := lookupUserImgs (ctx , client , email , imgName )
86
+ func findImg (ctx context.Context , client * coder.Client , email , imgName , orgName string ) (* coder.Image , error ) {
87
+ userImgs , err := lookupUserImgs (ctx , client , email , imgName , orgName )
88
88
if err != nil {
89
89
return nil , err
90
90
}
@@ -111,8 +111,8 @@ func findImg(ctx context.Context, client *coder.Client, email, imgName string) (
111
111
return & userImgs [0 ], nil
112
112
}
113
113
114
- func getImgs (ctx context.Context , client * coder.Client , userEmail string ) ([]coder.Image , error ) {
115
- u , err := client .UserByEmail (ctx , userEmail )
114
+ func getImgs (ctx context.Context , client * coder.Client , email , orgName string ) ([]coder.Image , error ) {
115
+ u , err := client .UserByEmail (ctx , email )
116
116
if err != nil {
117
117
return nil , err
118
118
}
@@ -123,32 +123,29 @@ func getImgs(ctx context.Context, client *coder.Client, userEmail string) ([]cod
123
123
}
124
124
125
125
orgs = lookupUserOrgs (u , orgs )
126
- var importedImgs []coder.Image
127
126
128
- // Get all of the imported images for all of the orgs the user belongs to.
129
127
for _ , org := range orgs {
130
- imgs , err := client .GetOrganizationImages (ctx , org .ID )
131
- if err != nil {
132
- return nil , err
128
+ if orgName == org .Name {
129
+ imgs , err := client .GetOrganizationImages (ctx , org .ID )
130
+ if err != nil {
131
+ return nil , err
132
+ }
133
+ return imgs , nil
133
134
}
134
- importedImgs = append (importedImgs , imgs ... )
135
135
}
136
- return importedImgs , nil
136
+ return nil , xerrors . Errorf ( "org name %q not found" , orgName )
137
137
}
138
138
139
139
// returns all images that contain imgName as a substring and have been imported by the user.
140
- func lookupUserImgs (ctx context.Context , client * coder.Client , email , imgName string ) ([]coder.Image , error ) {
140
+ func lookupUserImgs (ctx context.Context , client * coder.Client , email , imgName , orgName string ) ([]coder.Image , error ) {
141
141
switch {
142
- case client == nil :
143
- return nil , xerrors .New ("nil client" )
144
142
case email == "" :
145
143
return nil , xerrors .New ("user email unset" )
146
144
case imgName == "" :
147
145
return nil , xerrors .New ("image name unset" )
148
146
}
149
147
150
- // Get all imported images for each org the user belongs to.
151
- imgs , err := getImgs (ctx , client , email )
148
+ imgs , err := getImgs (ctx , client , email , orgName )
152
149
if err != nil {
153
150
return nil , err
154
151
}
@@ -172,3 +169,26 @@ func lookupUserImgs(ctx context.Context, client *coder.Client, email, imgName st
172
169
}
173
170
return userImgs , nil
174
171
}
172
+
173
+ func isMultiOrgMember (email string ) (* bool , error ) {
174
+ ctx , cancel := context .WithCancel (context .Background ())
175
+ defer cancel ()
176
+
177
+ client , err := newClient ()
178
+ if err != nil {
179
+ return nil , err
180
+ }
181
+
182
+ u , err := client .UserByEmail (ctx , email )
183
+ if err != nil {
184
+ return nil , xerrors .New ("email not found" )
185
+ }
186
+
187
+ orgs , err := client .Organizations (ctx )
188
+ if err != nil {
189
+ return nil , err
190
+ }
191
+
192
+ isMulti := len (lookupUserOrgs (u , orgs )) > 1
193
+ return & isMulti , nil
194
+ }
0 commit comments