@@ -2,7 +2,6 @@ package services
2
2
3
3
import (
4
4
"context"
5
- "errors"
6
5
"strings"
7
6
"time"
8
7
@@ -48,7 +47,7 @@ type MemberService interface {
48
47
}
49
48
50
49
func (s * service ) AddNamespaceMember (ctx context.Context , req * requests.NamespaceAddMember ) (* models.Namespace , error ) {
51
- namespace , err := s .store .NamespaceGet (ctx , req .TenantID )
50
+ namespace , err := s .store .NamespaceGet (ctx , store . NamespaceIdentTenantID , req .TenantID )
52
51
if err != nil || namespace == nil {
53
52
return nil , NewErrNamespaceNotFound (req .TenantID , err )
54
53
}
@@ -101,12 +100,12 @@ func (s *service) AddNamespaceMember(ctx context.Context, req *requests.Namespac
101
100
return nil , err
102
101
}
103
102
} else {
104
- if err := s .store . WithTransaction ( ctx , s . addMember (passiveUser .ID , req )); err != nil {
103
+ if err := s .addMember (passiveUser .ID , req )( ctx ); err != nil {
105
104
return nil , err
106
105
}
107
106
}
108
107
109
- return s .store .NamespaceGet (ctx , req .TenantID )
108
+ return s .store .NamespaceGet (ctx , store . NamespaceIdentTenantID , req .TenantID )
110
109
}
111
110
112
111
// addMember returns a transaction callback that adds a member and sends an invite if the instance is cloud.
@@ -127,7 +126,7 @@ func (s *service) addMember(memberID string, req *requests.NamespaceAddMember) s
127
126
member .ExpiresAt = time.Time {}
128
127
}
129
128
130
- if err := s .store .NamespaceAddMember (ctx , req .TenantID , member ); err != nil {
129
+ if err := s .store .NamespaceCreateMemberships (ctx , req .TenantID , * member ); err != nil {
131
130
return err
132
131
}
133
132
@@ -145,19 +144,19 @@ func (s *service) addMember(memberID string, req *requests.NamespaceAddMember) s
145
144
// specified ID.
146
145
func (s * service ) resendMemberInvite (memberID string , req * requests.NamespaceAddMember ) store.TransactionCb {
147
146
return func (ctx context.Context ) error {
148
- expiresAt := clock .Now ().Add (7 * (24 * time .Hour ))
149
- changes := & models.MemberChanges {ExpiresAt : & expiresAt , Role : req .MemberRole }
147
+ // expiresAt := clock.Now().Add(7 * (24 * time.Hour))
148
+ // changes := &models.MemberChanges{ExpiresAt: &expiresAt, Role: req.MemberRole}
150
149
151
- if err := s .store .NamespaceUpdateMember (ctx , req .TenantID , memberID , changes ); err != nil {
152
- return err
153
- }
150
+ // if err := s.store.NamespaceUpdateMember(ctx, req.TenantID, memberID, changes); err != nil {
151
+ // return err
152
+ // }
154
153
155
154
return s .client .InviteMember (ctx , req .TenantID , memberID , req .FowardedHost )
156
155
}
157
156
}
158
157
159
158
func (s * service ) UpdateNamespaceMember (ctx context.Context , req * requests.NamespaceUpdateMember ) error {
160
- namespace , err := s .store .NamespaceGet (ctx , req .TenantID )
159
+ namespace , err := s .store .NamespaceGet (ctx , store . NamespaceIdentTenantID , req .TenantID )
161
160
if err != nil {
162
161
return NewErrNamespaceNotFound (req .TenantID , err )
163
162
}
@@ -172,19 +171,20 @@ func (s *service) UpdateNamespaceMember(ctx context.Context, req *requests.Names
172
171
return NewErrNamespaceMemberNotFound (user .ID , err )
173
172
}
174
173
175
- if _ , ok := namespace .FindMember (req .MemberID ); ! ok {
174
+ member , ok := namespace .FindMember (req .MemberID )
175
+ if ! ok {
176
176
return NewErrNamespaceMemberNotFound (req .MemberID , err )
177
177
}
178
178
179
- changes := & models.MemberChanges {Role : req .MemberRole }
180
-
181
- if changes .Role != authorizer .RoleInvalid {
179
+ if req .MemberRole != authorizer .RoleInvalid {
182
180
if ! active .Role .HasAuthority (req .MemberRole ) {
183
181
return NewErrRoleInvalid ()
184
182
}
183
+
184
+ member .Role = req .MemberRole
185
185
}
186
186
187
- if err := s .store .NamespaceUpdateMember (ctx , req .TenantID , req . MemberID , changes ); err != nil {
187
+ if err := s .store .NamespaceSaveMembership (ctx , req .TenantID , member ); err != nil {
188
188
return err
189
189
}
190
190
@@ -194,7 +194,7 @@ func (s *service) UpdateNamespaceMember(ctx context.Context, req *requests.Names
194
194
}
195
195
196
196
func (s * service ) RemoveNamespaceMember (ctx context.Context , req * requests.NamespaceRemoveMember ) (* models.Namespace , error ) {
197
- namespace , err := s .store .NamespaceGet (ctx , req .TenantID )
197
+ namespace , err := s .store .NamespaceGet (ctx , store . NamespaceIdentTenantID , req .TenantID )
198
198
if err != nil {
199
199
return nil , NewErrNamespaceNotFound (req .TenantID , err )
200
200
}
@@ -218,7 +218,7 @@ func (s *service) RemoveNamespaceMember(ctx context.Context, req *requests.Names
218
218
return nil , NewErrRoleInvalid ()
219
219
}
220
220
221
- if err := s .removeMember (ctx , namespace , req .MemberID ); err != nil { //nolint:revive
221
+ if err := s .store . NamespaceDeleteMembership (ctx , req .TenantID , passive ); err != nil {
222
222
return nil , err
223
223
}
224
224
@@ -229,11 +229,11 @@ func (s *service) RemoveNamespaceMember(ctx context.Context, req *requests.Names
229
229
Error ("failed to uncache the token" )
230
230
}
231
231
232
- return s .store .NamespaceGet (ctx , req .TenantID )
232
+ return s .store .NamespaceGet (ctx , store . NamespaceIdentTenantID , req .TenantID )
233
233
}
234
234
235
235
func (s * service ) LeaveNamespace (ctx context.Context , req * requests.LeaveNamespace ) (* models.UserAuthResponse , error ) {
236
- ns , err := s .store .NamespaceGet (ctx , req .TenantID )
236
+ ns , err := s .store .NamespaceGet (ctx , store . NamespaceIdentTenantID , req .TenantID )
237
237
if err != nil {
238
238
return nil , NewErrNamespaceNotFound (req .TenantID , err )
239
239
}
@@ -248,7 +248,7 @@ func (s *service) LeaveNamespace(ctx context.Context, req *requests.LeaveNamespa
248
248
return nil , NewErrAuthForbidden ()
249
249
}
250
250
251
- if err := s .removeMember (ctx , ns , user . ID ); err != nil { //nolint:revive
251
+ if err := s .store . NamespaceDeleteMembership (ctx , req . TenantID , member ); err != nil {
252
252
return nil , err
253
253
}
254
254
@@ -259,7 +259,7 @@ func (s *service) LeaveNamespace(ctx context.Context, req *requests.LeaveNamespa
259
259
}
260
260
261
261
user .Preferences .PreferredNamespace = ""
262
- if err := s .store .Save (ctx , user ); err != nil {
262
+ if err := s .store .UserSave (ctx , user ); err != nil {
263
263
log .WithError (err ).
264
264
WithField ("tenant_id" , req .TenantID ).
265
265
WithField ("user_id" , req .UserID ).
@@ -276,18 +276,3 @@ func (s *service) LeaveNamespace(ctx context.Context, req *requests.LeaveNamespa
276
276
// TODO: make this method a util function
277
277
return s .CreateUserToken (ctx , & requests.CreateUserToken {UserID : req .UserID })
278
278
}
279
-
280
- func (s * service ) removeMember (ctx context.Context , ns * models.Namespace , userID string ) error {
281
- if err := s .store .NamespaceRemoveMember (ctx , ns .TenantID , userID ); err != nil {
282
- switch {
283
- case errors .Is (err , store .ErrNoDocuments ):
284
- return NewErrNamespaceNotFound (ns .TenantID , err )
285
- // case errors.Is(err, mongo.ErrUserNotFound): // TODO: generic error
286
- // return NewErrNamespaceMemberNotFound(userID, err)
287
- default :
288
- return err
289
- }
290
- }
291
-
292
- return nil
293
- }
0 commit comments