diff --git a/internal/auth/password.go b/internal/auth/password.go index 5a55df5..136a311 100644 --- a/internal/auth/password.go +++ b/internal/auth/password.go @@ -7,4 +7,9 @@ import ( func HashPassword(password string) (string, error) { bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) return string(bytes), err +} + +func CheckPasswordHash(password, hash string) bool { + err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) + return err == nil } \ No newline at end of file diff --git a/internal/models/requestModels/login.go b/internal/models/requestModels/login.go new file mode 100644 index 0000000..fe79a0b --- /dev/null +++ b/internal/models/requestModels/login.go @@ -0,0 +1,6 @@ +package requestmodels + +type LoginInput struct { + Username string `json:"username" binding:"required"` + Password string `json:"password" binding:"required"` +} \ No newline at end of file diff --git a/internal/repositories/userRepo.go b/internal/repositories/userRepo.go deleted file mode 100644 index 3f43206..0000000 --- a/internal/repositories/userRepo.go +++ /dev/null @@ -1 +0,0 @@ -package repositories diff --git a/internal/services/userService.go b/internal/services/userService.go index a0dd5dc..37040ee 100644 --- a/internal/services/userService.go +++ b/internal/services/userService.go @@ -15,4 +15,10 @@ func NewUserService(db *gorm.DB) *UserService { func (us *UserService) CreateUser(user models.ComUser) int { return int(us.db.Create(&user).RowsAffected) +} + +func (us *UserService) GetUserByUsername(username string) models.ComUser { + var user models.ComUser + us.db.Where("username = ?", username).First(&user) + return user } \ No newline at end of file diff --git a/internal/web/handlers/admin/adminDash.go b/internal/web/handlers/admin/adminDash.go index 90c2014..a8978ab 100644 --- a/internal/web/handlers/admin/adminDash.go +++ b/internal/web/handlers/admin/adminDash.go @@ -61,15 +61,30 @@ func (appContext *AdminDashboardHandler) Register(c *gin.Context) { "success": false, "error": "failed to create user", }) + } else { + c.JSON(200, gin.H{ + "success": true, + }) } - - c.JSON(200, gin.H{ - "success": true, - }) } func (appContext *AdminDashboardHandler) Login(c *gin.Context) { - c.JSON(200, gin.H{ - "YouAreOn": "Login", - }) + + var input requestmodels.LoginInput + + if err := c.ShouldBindJSON(&input); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + var user = appContext.AppContext.UserService.GetUserByUsername(input.Username) + if auth.CheckPasswordHash(input.Password, user.Password) && user.IsVerified { // TODO: Add verification process + c.JSON(200, gin.H{ + "success": true, + }) + } else { + c.JSON(200, gin.H{ + "success": false, + }) + } }