From bfbeb6add27540c2eabf602a67acc39e290c8e9b Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Tue, 12 Jul 2022 08:42:32 +0530 Subject: [PATCH] fix: couple session deletion with user deletion --- server/db/providers/arangodb/session.go | 15 --------------- server/db/providers/arangodb/user.go | 10 ++++++++++ server/db/providers/cassandradb/session.go | 10 ---------- server/db/providers/cassandradb/user.go | 12 +++++++++++- server/db/providers/mongodb/session.go | 11 ----------- server/db/providers/mongodb/user.go | 6 ++++++ server/db/providers/providers.go | 2 -- server/db/providers/sql/session.go | 10 ---------- server/db/providers/sql/user.go | 5 +++++ server/resolvers/delete_user.go | 5 ----- server/test/test.go | 1 - 11 files changed, 32 insertions(+), 55 deletions(-) diff --git a/server/db/providers/arangodb/session.go b/server/db/providers/arangodb/session.go index a9ba640..96896e5 100644 --- a/server/db/providers/arangodb/session.go +++ b/server/db/providers/arangodb/session.go @@ -2,7 +2,6 @@ package arangodb import ( "context" - "fmt" "time" "github.com/authorizerdev/authorizer/server/db/models" @@ -24,17 +23,3 @@ func (p *provider) AddSession(ctx context.Context, session models.Session) error } return nil } - -// DeleteSession to delete session information from database -func (p *provider) DeleteSession(ctx context.Context, userId string) error { - query := fmt.Sprintf(`FOR d IN %s FILTER d.user_id == @userId REMOVE { _key: d._key } IN %s`, models.Collections.Session, models.Collections.Session) - bindVars := map[string]interface{}{ - "userId": userId, - } - cursor, err := p.db.Query(ctx, query, bindVars) - if err != nil { - return err - } - defer cursor.Close() - return nil -} diff --git a/server/db/providers/arangodb/user.go b/server/db/providers/arangodb/user.go index 8e1cb98..a0eb32a 100644 --- a/server/db/providers/arangodb/user.go +++ b/server/db/providers/arangodb/user.go @@ -63,6 +63,16 @@ func (p *provider) DeleteUser(ctx context.Context, user models.User) error { return err } + query := fmt.Sprintf(`FOR d IN %s FILTER d.user_id == @userId REMOVE { _key: d._key } IN %s`, models.Collections.Session, models.Collections.Session) + bindVars := map[string]interface{}{ + "userId": user.ID, + } + cursor, err := p.db.Query(ctx, query, bindVars) + if err != nil { + return err + } + defer cursor.Close() + return nil } diff --git a/server/db/providers/cassandradb/session.go b/server/db/providers/cassandradb/session.go index 8b3b56c..e6042ea 100644 --- a/server/db/providers/cassandradb/session.go +++ b/server/db/providers/cassandradb/session.go @@ -25,13 +25,3 @@ func (p *provider) AddSession(ctx context.Context, session models.Session) error } return nil } - -// DeleteSession to delete session information from database -func (p *provider) DeleteSession(ctx context.Context, userId string) error { - deleteSessionQuery := fmt.Sprintf("DELETE FROM %s WHERE user_id = '%s'", KeySpace+"."+models.Collections.Session, userId) - err := p.db.Query(deleteSessionQuery).Exec() - if err != nil { - return err - } - return nil -} diff --git a/server/db/providers/cassandradb/user.go b/server/db/providers/cassandradb/user.go index 3abef97..730a04b 100644 --- a/server/db/providers/cassandradb/user.go +++ b/server/db/providers/cassandradb/user.go @@ -131,7 +131,17 @@ func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.Use func (p *provider) DeleteUser(ctx context.Context, user models.User) error { query := fmt.Sprintf("DELETE FROM %s WHERE id = '%s'", KeySpace+"."+models.Collections.User, user.ID) err := p.db.Query(query).Exec() - return err + if err != nil { + return err + } + + deleteSessionQuery := fmt.Sprintf("DELETE FROM %s WHERE user_id = '%s'", KeySpace+"."+models.Collections.Session, user.ID) + err = p.db.Query(deleteSessionQuery).Exec() + if err != nil { + return err + } + + return nil } // ListUsers to get list of users from database diff --git a/server/db/providers/mongodb/session.go b/server/db/providers/mongodb/session.go index 58471c5..4030130 100644 --- a/server/db/providers/mongodb/session.go +++ b/server/db/providers/mongodb/session.go @@ -6,7 +6,6 @@ import ( "github.com/authorizerdev/authorizer/server/db/models" "github.com/google/uuid" - "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" ) @@ -26,13 +25,3 @@ func (p *provider) AddSession(ctx context.Context, session models.Session) error } return nil } - -// DeleteSession to delete session information from database -func (p *provider) DeleteSession(ctx context.Context, userId string) error { - sessionCollection := p.db.Collection(models.Collections.Session, options.Collection()) - _, err := sessionCollection.DeleteMany(ctx, bson.M{"user_id": userId}, options.Delete()) - if err != nil { - return err - } - return nil -} diff --git a/server/db/providers/mongodb/user.go b/server/db/providers/mongodb/user.go index 96e8c17..7518fd9 100644 --- a/server/db/providers/mongodb/user.go +++ b/server/db/providers/mongodb/user.go @@ -57,6 +57,12 @@ func (p *provider) DeleteUser(ctx context.Context, user models.User) error { return err } + sessionCollection := p.db.Collection(models.Collections.Session, options.Collection()) + _, err = sessionCollection.DeleteMany(ctx, bson.M{"user_id": user.ID}, options.Delete()) + if err != nil { + return err + } + return nil } diff --git a/server/db/providers/providers.go b/server/db/providers/providers.go index bf6745d..bd116ee 100644 --- a/server/db/providers/providers.go +++ b/server/db/providers/providers.go @@ -34,8 +34,6 @@ type Provider interface { // AddSession to save session information in database AddSession(ctx context.Context, session models.Session) error - // DeleteSession to delete session information from database - DeleteSession(ctx context.Context, userId string) error // AddEnv to save environment information in database AddEnv(ctx context.Context, env models.Env) (models.Env, error) diff --git a/server/db/providers/sql/session.go b/server/db/providers/sql/session.go index 32c7e7e..0ed7317 100644 --- a/server/db/providers/sql/session.go +++ b/server/db/providers/sql/session.go @@ -27,13 +27,3 @@ func (p *provider) AddSession(ctx context.Context, session models.Session) error } return nil } - -// DeleteSession to delete session information from database -func (p *provider) DeleteSession(ctx context.Context, userId string) error { - result := p.db.Where("user_id = ?", userId).Delete(&models.Session{}) - - if result.Error != nil { - return result.Error - } - return nil -} diff --git a/server/db/providers/sql/user.go b/server/db/providers/sql/user.go index 07a6e91..c5953ce 100644 --- a/server/db/providers/sql/user.go +++ b/server/db/providers/sql/user.go @@ -63,6 +63,11 @@ func (p *provider) DeleteUser(ctx context.Context, user models.User) error { return result.Error } + result = p.db.Where("user_id = ?", user.ID).Delete(&models.Session{}) + if result.Error != nil { + return result.Error + } + return nil } diff --git a/server/resolvers/delete_user.go b/server/resolvers/delete_user.go index f6c030e..96dd456 100644 --- a/server/resolvers/delete_user.go +++ b/server/resolvers/delete_user.go @@ -45,11 +45,6 @@ func DeleteUserResolver(ctx context.Context, params model.DeleteUserInput) (*mod return res, err } - err = db.Provider.DeleteSession(ctx, user.ID) - if err != nil { - return res, err - } - res = &model.Response{ Message: `user deleted successfully`, } diff --git a/server/test/test.go b/server/test/test.go index fa35c5f..af27fb4 100644 --- a/server/test/test.go +++ b/server/test/test.go @@ -59,7 +59,6 @@ func cleanData(email string) { dbUser, err := db.Provider.GetUserByEmail(ctx, email) if err == nil { db.Provider.DeleteUser(ctx, dbUser) - db.Provider.DeleteSession(ctx, dbUser.ID) } }