@@ -2,7 +2,6 @@ package services
22
33import (
44 "context"
5- "errors"
65 "strings"
76 "time"
87
@@ -48,7 +47,7 @@ type MemberService interface {
4847}
4948
5049func (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 )
5251 if err != nil || namespace == nil {
5352 return nil , NewErrNamespaceNotFound (req .TenantID , err )
5453 }
@@ -101,12 +100,12 @@ func (s *service) AddNamespaceMember(ctx context.Context, req *requests.Namespac
101100 return nil , err
102101 }
103102 } 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 {
105104 return nil , err
106105 }
107106 }
108107
109- return s .store .NamespaceGet (ctx , req .TenantID )
108+ return s .store .NamespaceGet (ctx , store . NamespaceIdentTenantID , req .TenantID )
110109}
111110
112111// 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
127126 member .ExpiresAt = time.Time {}
128127 }
129128
130- if err := s .store .NamespaceAddMember (ctx , req .TenantID , member ); err != nil {
129+ if err := s .store .NamespaceCreateMemberships (ctx , req .TenantID , * member ); err != nil {
131130 return err
132131 }
133132
@@ -145,19 +144,19 @@ func (s *service) addMember(memberID string, req *requests.NamespaceAddMember) s
145144// specified ID.
146145func (s * service ) resendMemberInvite (memberID string , req * requests.NamespaceAddMember ) store.TransactionCb {
147146 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}
150149
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+ // }
154153
155154 return s .client .InviteMember (ctx , req .TenantID , memberID , req .FowardedHost )
156155 }
157156}
158157
159158func (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 )
161160 if err != nil {
162161 return NewErrNamespaceNotFound (req .TenantID , err )
163162 }
@@ -172,19 +171,20 @@ func (s *service) UpdateNamespaceMember(ctx context.Context, req *requests.Names
172171 return NewErrNamespaceMemberNotFound (user .ID , err )
173172 }
174173
175- if _ , ok := namespace .FindMember (req .MemberID ); ! ok {
174+ member , ok := namespace .FindMember (req .MemberID )
175+ if ! ok {
176176 return NewErrNamespaceMemberNotFound (req .MemberID , err )
177177 }
178178
179- changes := & models.MemberChanges {Role : req .MemberRole }
180-
181- if changes .Role != authorizer .RoleInvalid {
179+ if req .MemberRole != authorizer .RoleInvalid {
182180 if ! active .Role .HasAuthority (req .MemberRole ) {
183181 return NewErrRoleInvalid ()
184182 }
183+
184+ member .Role = req .MemberRole
185185 }
186186
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 {
188188 return err
189189 }
190190
@@ -194,7 +194,7 @@ func (s *service) UpdateNamespaceMember(ctx context.Context, req *requests.Names
194194}
195195
196196func (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 )
198198 if err != nil {
199199 return nil , NewErrNamespaceNotFound (req .TenantID , err )
200200 }
@@ -218,7 +218,7 @@ func (s *service) RemoveNamespaceMember(ctx context.Context, req *requests.Names
218218 return nil , NewErrRoleInvalid ()
219219 }
220220
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 {
222222 return nil , err
223223 }
224224
@@ -229,11 +229,11 @@ func (s *service) RemoveNamespaceMember(ctx context.Context, req *requests.Names
229229 Error ("failed to uncache the token" )
230230 }
231231
232- return s .store .NamespaceGet (ctx , req .TenantID )
232+ return s .store .NamespaceGet (ctx , store . NamespaceIdentTenantID , req .TenantID )
233233}
234234
235235func (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 )
237237 if err != nil {
238238 return nil , NewErrNamespaceNotFound (req .TenantID , err )
239239 }
@@ -248,7 +248,7 @@ func (s *service) LeaveNamespace(ctx context.Context, req *requests.LeaveNamespa
248248 return nil , NewErrAuthForbidden ()
249249 }
250250
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 {
252252 return nil , err
253253 }
254254
@@ -259,7 +259,7 @@ func (s *service) LeaveNamespace(ctx context.Context, req *requests.LeaveNamespa
259259 }
260260
261261 user .Preferences .PreferredNamespace = ""
262- if err := s .store .Save (ctx , user ); err != nil {
262+ if err := s .store .UserSave (ctx , user ); err != nil {
263263 log .WithError (err ).
264264 WithField ("tenant_id" , req .TenantID ).
265265 WithField ("user_id" , req .UserID ).
@@ -276,18 +276,3 @@ func (s *service) LeaveNamespace(ctx context.Context, req *requests.LeaveNamespa
276276 // TODO: make this method a util function
277277 return s .CreateUserToken (ctx , & requests.CreateUserToken {UserID : req .UserID })
278278}
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