From 1ded8bee3357765dbde58f4922c5b04609cc91e3 Mon Sep 17 00:00:00 2001 From: Alex <$(pass /github/email)> Date: Sun, 29 Sep 2024 20:58:42 +0200 Subject: [PATCH] moved db indices to uint --- internal/controllers/user_controller.go | 9 +++---- internal/controllers/user_controller_test.go | 2 +- internal/database/db.go | 4 ++-- internal/middlewares/auth.go | 24 +++++++++---------- internal/middlewares/auth_test.go | 4 ++-- internal/models/bank_account.go | 15 ++++++------ internal/models/consents.go | 9 ++++--- internal/models/membership.go | 7 +++--- internal/models/subscription_model.go | 6 ++--- internal/models/user.go | 3 +-- internal/models/verification.go | 4 ++-- internal/repositories/banking_repository.go | 4 ++-- internal/repositories/consents_repository.go | 4 ++-- .../repositories/membership_repository.go | 9 +++---- .../subscription_model_repository.go | 4 ++-- internal/repositories/user_repository.go | 18 +++++++------- internal/services/consent_service.go | 4 ++-- internal/services/email_service.go | 4 ++-- internal/services/membership_service.go | 14 +++++------ internal/services/user_service.go | 10 ++++---- internal/utils/crypto.go | 1 - internal/utils/validators.go | 16 ++++++++----- 22 files changed, 90 insertions(+), 85 deletions(-) diff --git a/internal/controllers/user_controller.go b/internal/controllers/user_controller.go index 5ebd12c..803d676 100644 --- a/internal/controllers/user_controller.go +++ b/internal/controllers/user_controller.go @@ -49,8 +49,9 @@ func (uc *UserController) UpdateHandler(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"error": "JWT parsing error"}) return } - jwtUserID := int64((*claims)["user_id"].(float64)) + jwtUserID := uint((*claims)["user_id"].(float64)) userRole := int8((*claims)["role_id"].(float64)) + if user.ID == 0 { logger.Error.Printf("No User.ID in request from user with id: %v, aborting", jwtUserID) c.JSON(http.StatusBadRequest, gin.H{"error": "No user id provided"}) @@ -94,15 +95,15 @@ func (uc *UserController) CurrentUserHandler(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"error": "Missing or invalid user ID type"}) return } - userID, ok := userIDInterface.(int64) + userID, ok := userIDInterface.(uint) if !ok { - logger.Error.Printf("Error: user_id is not of type int64") + logger.Error.Printf("Error: user_id is not of type uint") c.JSON(http.StatusInternalServerError, gin.H{"error": "Invalid user ID type"}) return } - user, err := uc.Service.GetUserByID(int64(userID)) + user, err := uc.Service.GetUserByID(uint(userID)) if err != nil { logger.Error.Printf("Error retrieving valid user: %v", err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Error retrieving user."}) diff --git a/internal/controllers/user_controller_test.go b/internal/controllers/user_controller_test.go index f926af2..2132c13 100644 --- a/internal/controllers/user_controller_test.go +++ b/internal/controllers/user_controller_test.go @@ -493,7 +493,7 @@ func testUpdateUser(t *testing.T, loginEmail string, loginCookie http.Cookie) { } // Create request - req, _ := http.NewRequest("PUT", "/users/"+strconv.FormatInt(user.ID, 10), bytes.NewBuffer(jsonData)) + req, _ := http.NewRequest("PUT", "/users/"+strconv.FormatUint(uint64(user.ID), 10), bytes.NewBuffer(jsonData)) req.Header.Set("Content-Type", "application/json") tt.setupCookie(req) diff --git a/internal/database/db.go b/internal/database/db.go index 9fedfe4..728a118 100644 --- a/internal/database/db.go +++ b/internal/database/db.go @@ -38,7 +38,7 @@ func Open(dbPath string, adminMail string) error { var count int64 db.Model(&models.User{}).Count(&count) if count == 0 { - admin, err := seedAdmin(adminMail) + admin, err := createAdmin(adminMail, createdModel.ID) if err != nil { return err } @@ -51,7 +51,7 @@ func Open(dbPath string, adminMail string) error { } // TODO: Landing page to create an admin -func seedAdmin(userMail string) (*models.User, error) { +func createAdmin(userMail string, subscriptionModelID uint) (*models.User, error) { passwordBytes := make([]byte, 12) _, err := rand.Read(passwordBytes) if err != nil { diff --git a/internal/middlewares/auth.go b/internal/middlewares/auth.go index bdad303..4756554 100644 --- a/internal/middlewares/auth.go +++ b/internal/middlewares/auth.go @@ -17,7 +17,7 @@ import ( ) type Session struct { - UserID int64 + UserID uint ExpiresAt time.Time } @@ -28,27 +28,27 @@ var ( sessions = make(map[string]*Session) ) -func verifyAndRenewToken(tokenString string) (string, int64, error) { +func verifyAndRenewToken(tokenString string) (string, uint, error) { if tokenString == "" { logger.Error.Printf("empty tokenstring") - return "", -1, fmt.Errorf("Authorization token is required") + return "", 0, fmt.Errorf("Authorization token is required") } token, claims, err := ExtractContentFrom(tokenString) if err != nil { logger.Error.Printf("Couldn't parse JWT token String: %v", err) - return "", -1, err + return "", 0, err } sessionID := (*claims)["session_id"].(string) - userID := int64((*claims)["user_id"].(float64)) + userID := uint((*claims)["user_id"].(float64)) roleID := int8((*claims)["role_id"].(float64)) session, ok := sessions[sessionID] if !ok { logger.Error.Printf("session not found") - return "", -1, fmt.Errorf("session not found") + return "", 0, fmt.Errorf("session not found") } if userID != session.UserID { - return "", -1, fmt.Errorf("Cookie has been altered, aborting..") + return "", 0, fmt.Errorf("Cookie has been altered, aborting..") } if token.Valid { // token is valid, so we can return the old tokenString @@ -58,7 +58,7 @@ func verifyAndRenewToken(tokenString string) (string, int64, error) { if time.Now().After(sessions[sessionID].ExpiresAt) { delete(sessions, sessionID) logger.Error.Printf("session expired") - return "", -1, fmt.Errorf("session expired") + return "", 0, fmt.Errorf("session expired") } session.ExpiresAt = time.Now().Add(sessionDuration) @@ -67,7 +67,7 @@ func verifyAndRenewToken(tokenString string) (string, int64, error) { user := models.User{ID: userID, RoleID: roleID} newTokenString, err := GenerateToken(config.Auth.JWTSecret, &user, sessionID) if err != nil { - return "", -1, err + return "", 0, err } return newTokenString, session.UserID, nil @@ -86,7 +86,7 @@ func AuthMiddleware() gin.HandlerFunc { newToken, userID, err := verifyAndRenewToken(tokenString) if err != nil { if err == customerrors.ErrValidToken { - c.Set("user_id", int64(userID)) + c.Set("user_id", uint(userID)) c.Next() return } @@ -97,7 +97,7 @@ func AuthMiddleware() gin.HandlerFunc { } utils.SetCookie(c, newToken) - c.Set("user_id", int64(userID)) + c.Set("user_id", uint(userID)) c.Next() } } @@ -141,7 +141,7 @@ func ExtractContentFrom(tokenString string) (*jwt.Token, *jwt.MapClaims, error) return token, &claims, nil } -func UpdateSession(sessionID string, userID int64) { +func UpdateSession(sessionID string, userID uint) { sessions[sessionID] = &Session{ UserID: userID, ExpiresAt: time.Now().Add(sessionDuration), diff --git a/internal/middlewares/auth_test.go b/internal/middlewares/auth_test.go index a6c9a71..67dbde8 100644 --- a/internal/middlewares/auth_test.go +++ b/internal/middlewares/auth_test.go @@ -51,7 +51,7 @@ func TestAuthMiddleware(t *testing.T) { setupAuth func(r *http.Request) expectedStatus int expectNewCookie bool - expectedUserID int64 + expectedUserID uint }{ { name: "Valid Token", @@ -169,7 +169,7 @@ func TestAuthMiddleware(t *testing.T) { assert.Equal(t, tt.expectedStatus, w.Code) if tt.expectedStatus == http.StatusOK { - var response map[string]int64 + var response map[string]uint err := json.Unmarshal(w.Body.Bytes(), &response) assert.NoError(t, err) assert.Equal(t, tt.expectedUserID, response["user_id"]) diff --git a/internal/models/bank_account.go b/internal/models/bank_account.go index c42330b..671c9f4 100644 --- a/internal/models/bank_account.go +++ b/internal/models/bank_account.go @@ -5,12 +5,11 @@ import "time" type BankAccount struct { CreatedAt time.Time UpdatedAt time.Time - MandateDateSigned time.Time `gorm:"not null"` // json:"mandate_date_signed"` - Bank string //`json:"bank_name" validate:"omitempty,alphanumunicode,safe_content"` - AccountHolderName string //`json:"account_holder_name" validate:"omitempty,alphaunicode,safe_content"` - IBAN string `gorm:"not null" json:"iban" validate:"required,iban"` - BIC string //`json:"bic" validate:"omitempty,bic"` - MandateReference string `gorm:"not null"` //json:"mandate_reference"` - ID int64 `gorm:"primaryKey"` - UserID int64 //`json:"user_id"` + MandateDateSigned time.Time `gorm:"not null" json:"mandate_date_signed"` + Bank string `json:"bank_name" validate:"omitempty,alphanumunicode,safe_content"` + AccountHolderName string `json:"account_holder_name" validate:"omitempty,alphaunicode,safe_content"` + IBAN string `gorm:"not null" json:"iban" validate:"iban"` + BIC string `json:"bic" validate:"omitempty,bic"` + MandateReference string `gorm:"not null" json:"mandate_reference"` + ID uint `gorm:"primaryKey"` } diff --git a/internal/models/consents.go b/internal/models/consents.go index 9f068e6..1576c68 100644 --- a/internal/models/consents.go +++ b/internal/models/consents.go @@ -1,6 +1,8 @@ package models -import "time" +import ( + "time" +) type Consent struct { CreatedAt time.Time @@ -9,6 +11,7 @@ type Consent struct { LastName string `gorm:"not null" json:"last_name" validate:"safe_content"` Email string `json:"email" validate:"email,safe_content"` ConsentType string `gorm:"not null" json:"consent_type" validate:"safe_content"` - ID int64 `gorm:"primaryKey"` - UserID int64 `gorm:"not null" json:"user_id"` + ID uint `gorm:"primaryKey"` + User User + UserID uint } diff --git a/internal/models/membership.go b/internal/models/membership.go index dae0019..1f093fe 100644 --- a/internal/models/membership.go +++ b/internal/models/membership.go @@ -9,8 +9,7 @@ type Membership struct { EndDate time.Time `json:"end_date"` Status string `json:"status" validate:"safe_content"` SubscriptionModel SubscriptionModel `gorm:"foreignKey:SubscriptionModelID" json:"subscription_model"` - ParentMembershipID int64 `json:"parent_member_id" validate:"omitempty,omitnil,number"` - SubscriptionModelID int64 `json:"subsription_model_id"` - ID int64 `json:"id"` - UserID int64 `json:"user_id"` + SubscriptionModelID uint `json:"subsription_model_id"` + ParentMembershipID uint `json:"parent_member_id" validate:"omitempty,omitnil,number"` + ID uint `json:"id"` } diff --git a/internal/models/subscription_model.go b/internal/models/subscription_model.go index e0cb5d8..a65842a 100644 --- a/internal/models/subscription_model.go +++ b/internal/models/subscription_model.go @@ -11,9 +11,9 @@ type SubscriptionModel struct { Details string `json:"details" validate:"required"` Conditions string `json:"conditions"` RequiredMembershipField string `json:"required_membership_field" validate:"membershipField"` - ID int64 `gorm:"primaryKey"` - MonthlyFee float32 `json:"monthly_fee" validate:"required,number,gte=0"` - HourlyRate float32 `json:"hourly_rate" validate:"required,number,gte=0"` + ID uint `json:"id" gorm:"primaryKey"` + MonthlyFee float32 `json:"monthly_fee" validate:"number,gte=0"` + HourlyRate float32 `json:"hourly_rate" validate:"number,gte=0"` IncludedPerYear int16 `json:"included_hours_per_year" validate:"omitempty,number,gte=0"` IncludedPerMonth int16 `json:"included_hours_per_month" validate:"omitempty,number,gte=0"` } diff --git a/internal/models/user.go b/internal/models/user.go index 680d922..8798325 100644 --- a/internal/models/user.go +++ b/internal/models/user.go @@ -9,9 +9,7 @@ import ( ) type User struct { - UpdatedAt time.Time DateOfBirth time.Time `gorm:"not null" json:"date_of_birth" validate:"required,age"` - CreatedAt time.Time Company string `json:"company" validate:"omitempty,omitnil,safe_content"` Phone string `json:"phone" validate:"omitempty,omitnil,safe_content"` Notes *string `json:"notes,safe_content"` @@ -31,6 +29,7 @@ type User struct { PaymentStatus int8 `json:"payment_status"` Status int8 `json:"status"` RoleID int8 `json:"role_id"` + gorm.Model } // BeforeCreate sets the default value for Status diff --git a/internal/models/verification.go b/internal/models/verification.go index f52fd67..bf8027b 100644 --- a/internal/models/verification.go +++ b/internal/models/verification.go @@ -8,6 +8,6 @@ type Verification struct { EmailVerifiedAt *time.Time `gorm:"Default:NULL" json:"email_verified_at"` IDVerifiedAt *time.Time `gorm:"Default:NULL" json:"id_verified_at"` VerificationToken string `json:"token"` - ID int64 `gorm:"primaryKey"` - UserID int64 `gorm:"unique;" json:"user_id"` + ID uint `gorm:"primaryKey"` + UserID uint `gorm:"unique;" json:"user_id"` } diff --git a/internal/repositories/banking_repository.go b/internal/repositories/banking_repository.go index 464da0e..a6c7085 100644 --- a/internal/repositories/banking_repository.go +++ b/internal/repositories/banking_repository.go @@ -6,12 +6,12 @@ import ( ) type BankAccountRepositoryInterface interface { - CreateBankAccount(account *models.BankAccount) (int64, error) + CreateBankAccount(account *models.BankAccount) (uint, error) } type BankAccountRepository struct{} -func (repo *BankAccountRepository) CreateBankAccount(account *models.BankAccount) (int64, error) { +func (repo *BankAccountRepository) CreateBankAccount(account *models.BankAccount) (uint, error) { result := database.DB.Create(account) if result.Error != nil { return 0, result.Error diff --git a/internal/repositories/consents_repository.go b/internal/repositories/consents_repository.go index 2373b92..3a47632 100644 --- a/internal/repositories/consents_repository.go +++ b/internal/repositories/consents_repository.go @@ -6,12 +6,12 @@ import ( ) type ConsentRepositoryInterface interface { - CreateConsent(consent *models.Consent) (int64, error) + CreateConsent(consent *models.Consent) (uint, error) } type ConsentRepository struct{} -func (repo *ConsentRepository) CreateConsent(consent *models.Consent) (int64, error) { +func (repo *ConsentRepository) CreateConsent(consent *models.Consent) (uint, error) { result := database.DB.Create(consent) if result.Error != nil { diff --git a/internal/repositories/membership_repository.go b/internal/repositories/membership_repository.go index 3dd29d1..5643101 100644 --- a/internal/repositories/membership_repository.go +++ b/internal/repositories/membership_repository.go @@ -2,19 +2,20 @@ package repositories import ( "GoMembership/internal/database" + "gorm.io/gorm" "GoMembership/internal/models" ) type MembershipRepositoryInterface interface { - CreateMembership(membership *models.Membership) (int64, error) - FindMembershipByUserID(userID int64) (*models.Membership, error) + CreateMembership(membership *models.Membership) (uint, error) + FindMembershipByUserID(userID uint) (*models.Membership, error) } type MembershipRepository struct{} -func (repo *MembershipRepository) CreateMembership(membership *models.Membership) (int64, error) { +func (repo *MembershipRepository) CreateMembership(membership *models.Membership) (uint, error) { result := database.DB.Create(membership) if result.Error != nil { return 0, result.Error @@ -22,7 +23,7 @@ func (repo *MembershipRepository) CreateMembership(membership *models.Membership return membership.ID, nil } -func (repo *MembershipRepository) FindMembershipByUserID(userID int64) (*models.Membership, error) { +func (repo *MembershipRepository) FindMembershipByUserID(userID uint) (*models.Membership, error) { var membership models.Membership result := database.DB.First(&membership, userID) diff --git a/internal/repositories/subscription_model_repository.go b/internal/repositories/subscription_model_repository.go index 4edb11d..993480b 100644 --- a/internal/repositories/subscription_model_repository.go +++ b/internal/repositories/subscription_model_repository.go @@ -9,7 +9,7 @@ import ( ) type SubscriptionModelsRepositoryInterface interface { - CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (int64, error) + CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (uint, error) GetMembershipModelNames() ([]string, error) GetModelByName(modelname *string) (*models.SubscriptionModel, error) GetSubscriptions(where map[string]interface{}) (*[]models.SubscriptionModel, error) @@ -17,7 +17,7 @@ type SubscriptionModelsRepositoryInterface interface { type SubscriptionModelsRepository struct{} -func (sr *SubscriptionModelsRepository) CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (int64, error) { +func (sr *SubscriptionModelsRepository) CreateSubscriptionModel(subscriptionModel *models.SubscriptionModel) (uint, error) { result := database.DB.Create(subscriptionModel) if result.Error != nil { diff --git a/internal/repositories/user_repository.go b/internal/repositories/user_repository.go index 00ca4cd..8d65fe0 100644 --- a/internal/repositories/user_repository.go +++ b/internal/repositories/user_repository.go @@ -13,19 +13,19 @@ import ( ) type UserRepositoryInterface interface { - CreateUser(user *models.User) (int64, error) + CreateUser(user *models.User) (uint, error) UpdateUser(user *models.User) (*models.User, error) GetUsers(where map[string]interface{}) (*[]models.User, error) - GetUserByID(userID *int64) (*models.User, error) + GetUserByID(userID *uint) (*models.User, error) GetUserByEmail(email string) (*models.User, error) - SetVerificationToken(verification *models.Verification) (int64, error) - IsVerified(userID *int64) (bool, error) + SetVerificationToken(verification *models.Verification) (uint, error) + IsVerified(userID *uint) (bool, error) GetVerificationOfToken(token *string) (*models.Verification, error) } type UserRepository struct{} -func (ur *UserRepository) CreateUser(user *models.User) (int64, error) { +func (ur *UserRepository) CreateUser(user *models.User) (uint, error) { result := database.DB.Create(user) if result.Error != nil { return 0, result.Error @@ -83,7 +83,7 @@ func (ur *UserRepository) GetUsers(where map[string]interface{}) (*[]models.User return &users, nil } -func (ur *UserRepository) GetUserByID(userID *int64) (*models.User, error) { +func (ur *UserRepository) GetUserByID(userID *uint) (*models.User, error) { var user models.User result := database.DB. Preload("Consents"). @@ -113,7 +113,7 @@ func (ur *UserRepository) GetUserByEmail(email string) (*models.User, error) { return &user, nil } -func (ur *UserRepository) IsVerified(userID *int64) (bool, error) { +func (ur *UserRepository) IsVerified(userID *uint) (bool, error) { var user models.User result := database.DB.Select("status").First(&user, userID) if result.Error != nil { @@ -138,7 +138,7 @@ func (ur *UserRepository) GetVerificationOfToken(token *string) (*models.Verific return &emailVerification, nil } -func (ur *UserRepository) SetVerificationToken(verification *models.Verification) (int64, error) { +func (ur *UserRepository) SetVerificationToken(verification *models.Verification) (uint, error) { // Use GORM to insert or update the Verification record result := database.DB.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "user_id"}}, @@ -146,7 +146,7 @@ func (ur *UserRepository) SetVerificationToken(verification *models.Verification }).Create(&verification) if result.Error != nil { - return -1, result.Error + return 0, result.Error } return verification.ID, nil diff --git a/internal/services/consent_service.go b/internal/services/consent_service.go index 69a578b..d67e813 100644 --- a/internal/services/consent_service.go +++ b/internal/services/consent_service.go @@ -8,14 +8,14 @@ import ( ) type ConsentServiceInterface interface { - RegisterConsent(consent *models.Consent) (int64, error) + RegisterConsent(consent *models.Consent) (uint, error) } type ConsentService struct { Repo repositories.ConsentRepositoryInterface } -func (service *ConsentService) RegisterConsent(consent *models.Consent) (int64, error) { +func (service *ConsentService) RegisterConsent(consent *models.Consent) (uint, error) { consent.CreatedAt = time.Now() consent.UpdatedAt = time.Now() return service.Repo.CreateConsent(consent) diff --git a/internal/services/email_service.go b/internal/services/email_service.go index 3f589e3..5cdcf85 100644 --- a/internal/services/email_service.go +++ b/internal/services/email_service.go @@ -90,7 +90,7 @@ func (s *EmailService) SendWelcomeEmail(user *models.User) error { FirstName string MembershipModel string BASEURL string - MembershipID int64 + MembershipID uint MembershipFee float32 Logo string WebsiteTitle string @@ -131,7 +131,7 @@ func (s *EmailService) SendRegistrationNotification(user *models.User) error { Company string ZipCode string BASEURL string - MembershipID int64 + MembershipID uint RentalFee float32 MembershipFee float32 Logo string diff --git a/internal/services/membership_service.go b/internal/services/membership_service.go index d75de8f..f1ddfb5 100644 --- a/internal/services/membership_service.go +++ b/internal/services/membership_service.go @@ -13,9 +13,9 @@ import ( ) type MembershipServiceInterface interface { - RegisterMembership(membership *models.Membership) (int64, error) - FindMembershipByUserID(userID int64) (*models.Membership, error) - RegisterSubscription(subscription *models.SubscriptionModel) (int64, error) + RegisterMembership(membership *models.Membership) (uint, error) + FindMembershipByUserID(userID uint) (*models.Membership, error) + RegisterSubscription(subscription *models.SubscriptionModel) (uint, error) GetMembershipModelNames() ([]string, error) GetModelByName(modelname *string) (*models.SubscriptionModel, error) GetSubscriptions(where map[string]interface{}) (*[]models.SubscriptionModel, error) @@ -26,19 +26,19 @@ type MembershipService struct { SubscriptionRepo repositories.SubscriptionModelsRepositoryInterface } -func (service *MembershipService) RegisterMembership(membership *models.Membership) (int64, error) { +func (service *MembershipService) RegisterMembership(membership *models.Membership) (uint, error) { membership.StartDate = time.Now() return service.Repo.CreateMembership(membership) } -func (service *MembershipService) FindMembershipByUserID(userID int64) (*models.Membership, error) { +func (service *MembershipService) FindMembershipByUserID(userID uint) (*models.Membership, error) { return service.Repo.FindMembershipByUserID(userID) } // Membership_Subscriptions -func (service *MembershipService) RegisterSubscription(subscription *models.SubscriptionModel) (int64, error) { +func (service *MembershipService) RegisterSubscription(subscription *models.SubscriptionModel) (uint, error) { if err := validateSubscriptionData(subscription); err != nil { - return -1, err + return 0, err } return service.SubscriptionRepo.CreateSubscriptionModel(subscription) } diff --git a/internal/services/user_service.go b/internal/services/user_service.go index c348113..2c04153 100644 --- a/internal/services/user_service.go +++ b/internal/services/user_service.go @@ -19,12 +19,12 @@ import ( ) type UserServiceInterface interface { - RegisterUser(user *models.User) (int64, string, error) + RegisterUser(user *models.User) (uint, string, error) GetUserByEmail(email string) (*models.User, error) - GetUserByID(id int64) (*models.User, error) + GetUserByID(id uint) (*models.User, error) GetUsers(where map[string]interface{}) (*[]models.User, error) VerifyUser(token *string) (*models.User, error) - UpdateUser(user *models.User) (*models.User, error) + UpdateUser(user *models.User, userRole int8) (*models.User, error) } type UserService struct { @@ -58,8 +58,8 @@ func (service *UserService) UpdateUser(user *models.User) (*models.User, error) return updatedUser, nil } -func (service *UserService) RegisterUser(user *models.User) (int64, string, error) { if err := validateUserData(user); err != nil { +func (service *UserService) RegisterUser(user *models.User) (uint, string, error) { return http.StatusNotAcceptable, "", err } @@ -108,7 +108,7 @@ func (service *UserService) RegisterUser(user *models.User) (int64, string, erro return id, token, nil } -func (service *UserService) GetUserByID(id int64) (*models.User, error) { +func (service *UserService) GetUserByID(id uint) (*models.User, error) { return service.Repo.GetUserByID(&id) } diff --git a/internal/utils/crypto.go b/internal/utils/crypto.go index d6aa2f2..38ff6ab 100644 --- a/internal/utils/crypto.go +++ b/internal/utils/crypto.go @@ -98,5 +98,4 @@ func EncodeQuotedPrintable(s string) string { // Encode the result into a MIME header return mime.QEncoding.Encode("UTF-8", buf.String()) - } diff --git a/internal/utils/validators.go b/internal/utils/validators.go index cf102d6..97a5948 100644 --- a/internal/utils/validators.go +++ b/internal/utils/validators.go @@ -33,6 +33,10 @@ var xssPatterns = []*regexp.Regexp{ regexp.MustCompile(`(?i)base64`), } +func ValidateToTrue(fl validator.FieldLevel) bool { + return true +} + func AgeValidator(fl validator.FieldLevel) bool { fieldValue := fl.Field() dateOfBirth := fieldValue.Interface().(time.Time) @@ -92,17 +96,17 @@ func ValidateRequiredMembershipField(fl validator.FieldLevel) bool { logger.Info.Println("fieldValue is not a nil pointer") - // Ensure that the fieldValue is an int64 - var fieldInt64 int64 - if fieldValue.Kind() == reflect.Int64 { - fieldInt64 = fieldValue.Int() + // Ensure that the fieldValue is an uint + var fieldUint uint + if fieldValue.Kind() == reflect.Uint { + fieldUint = uint(fieldValue.Uint()) } else { return false } logger.Info.Println("fieldValue is a int") - var membershipIDs []int64 + var membershipIDs []uint if err := database.DB.Model(&models.Membership{}).Pluck("id", &membershipIDs).Error; err != nil { logger.Error.Fatalf("Couldn't get SubscriptionModel names: %#v", err) return false @@ -112,7 +116,7 @@ func ValidateRequiredMembershipField(fl validator.FieldLevel) bool { // logger.Info.Printf("FIELD_NAME: %#v\nVALUE: %#v", fieldName, fieldValue) // Check if the field value is zero (empty) - return slices.Contains(membershipIDs, fieldInt64) + return slices.Contains(membershipIDs, fieldUint) } func BICValidator(fl validator.FieldLevel) bool {