aboutsummaryrefslogtreecommitdiff
path: root/api/internal/controllers/auth.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/internal/controllers/auth.go')
-rw-r--r--api/internal/controllers/auth.go18
1 files changed, 11 insertions, 7 deletions
diff --git a/api/internal/controllers/auth.go b/api/internal/controllers/auth.go
index 58653d0..ab2fbbb 100644
--- a/api/internal/controllers/auth.go
+++ b/api/internal/controllers/auth.go
@@ -38,23 +38,27 @@ func AuthHandler (c *gin.Context) {
38 38
39 var user models.User 39 var user models.User
40 var preference models.Preference 40 var preference models.Preference
41 var size models.Size
42 41
43 row := db.QueryRow("SELECT name, uuid, password, color, size, unit FROM Users u INNER JOIN Preferences p ON p.user_id = u.id INNER JOIN Sizes s ON p.size_id = s.id WHERE u.name = ?", username) 42 row := db.QueryRow("SELECT id as 'id', name, uuid, password FROM Users WHERE name = ?", username)
44 if err := row.Scan(&user.Name, &user.UUID, &user.Password, &preference.Color, &size.Size, &size.Unit); err != nil { 43 if err := row.Scan(&user.ID, &user.Name, &user.UUID, &user.Password); err != nil {
45 if errors.Is(err, sql.ErrNoRows) { 44 if errors.Is(err, sql.ErrNoRows) {
46 c.AbortWithStatus(http.StatusUnauthorized) 45 c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
47 return 46 return
48 } 47 }
49 } 48 }
50 49
50 row = db.QueryRow("SELECT id, color, size_id, user_id FROM Preferences where user_id = ?", user.ID)
51 if err := row.Scan(&preference.ID, &preference.Color, &preference.SizeID, &preference.UserID); err != nil {
52 if errors.Is(err, sql.ErrNoRows) {
53 c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
54 }
55 }
56
51 if err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password)); err != nil { 57 if err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password)); err != nil {
52 c.AbortWithStatus(http.StatusUnauthorized) 58 c.JSON(http.StatusUnauthorized, gin.H{"error": err.Error()})
53 return 59 return
54 } 60 }
55 61
56 preference.Size = size
57
58 // Generate a simple API token 62 // Generate a simple API token
59 apiToken := generateToken() 63 apiToken := generateToken()
60 c.JSON(http.StatusOK, gin.H{"token": apiToken, "user": user, "preferences": preference}) 64 c.JSON(http.StatusOK, gin.H{"token": apiToken, "user": user, "preferences": preference})