diff options
Diffstat (limited to 'api/internal/controllers/auth.go')
-rw-r--r-- | api/internal/controllers/auth.go | 18 |
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}) |