1
- // controllers/user_controller.go
2
1
package controllers
3
2
4
3
import (
@@ -11,31 +10,27 @@ import (
11
10
)
12
11
13
12
func InitializeRoutes (router * gin.Engine , db * gorm.DB ) {
14
- // Register route with raw SQL queries
15
13
router .POST ("/register" , func (c * gin.Context ) {
16
14
var user models.User
17
15
if err := c .ShouldBindJSON (& user ); err != nil {
18
16
c .JSON (http .StatusBadRequest , gin.H {"error" : err .Error ()})
19
17
return
20
18
}
21
19
22
- // Check if the username already exists
23
20
var count int64
24
21
db .Raw ("SELECT COUNT(*) FROM users WHERE username = ?" , user .Username ).Scan (& count )
25
22
if count > 0 {
26
23
c .JSON (http .StatusBadRequest , gin.H {"error" : "Username already exists" })
27
24
return
28
25
}
29
26
30
- // Hash the password
31
27
hashedPassword , err := utils .HashPassword (user .Password )
32
28
if err != nil {
33
29
c .JSON (http .StatusInternalServerError , gin.H {"error" : "Failed to hash password" })
34
30
return
35
31
}
36
32
user .Password = hashedPassword
37
33
38
- // Insert the user using raw SQL query
39
34
result := db .Exec ("INSERT INTO users (username, password, role) VALUES (?, ?, ?)" , user .Username , user .Password , user .Role )
40
35
if result .Error != nil {
41
36
c .JSON (http .StatusInternalServerError , gin.H {"error" : "Failed to register user" , "details" : result .Error .Error ()})
@@ -45,7 +40,6 @@ func InitializeRoutes(router *gin.Engine, db *gorm.DB) {
45
40
c .JSON (http .StatusOK , gin.H {"message" : "User registered successfully" , "user" : user })
46
41
})
47
42
48
- // Login route with raw SQL queries
49
43
router .POST ("/login" , func (c * gin.Context ) {
50
44
var req struct {
51
45
Username string `json:"username" binding:"required"`
@@ -64,13 +58,11 @@ func InitializeRoutes(router *gin.Engine, db *gorm.DB) {
64
58
return
65
59
}
66
60
67
- // Compare the hashed password
68
61
if err := utils .CheckPasswordHash (req .Password , user .Password ); err != nil {
69
62
c .JSON (http .StatusUnauthorized , gin.H {"error" : "Invalid credentials" })
70
63
return
71
64
}
72
65
73
- // Generate a JWT token
74
66
token , err := utils .GenerateToken (user .Username , user .Role )
75
67
if err != nil {
76
68
c .JSON (http .StatusInternalServerError , gin.H {"error" : "Could not generate token" })
@@ -81,10 +73,9 @@ func InitializeRoutes(router *gin.Engine, db *gorm.DB) {
81
73
})
82
74
83
75
router .GET ("/profile" , utils .AuthMiddleware (), func (c * gin.Context ) {
84
- username := c .MustGet ("username" ).(string ) // Retrieve the username from the token
76
+ username := c .MustGet ("username" ).(string )
85
77
var user models.User
86
78
87
- // Fetch the user details from the database using the username
88
79
if err := db .Where ("username = ?" , username ).First (& user ).Error ; err != nil {
89
80
c .JSON (http .StatusNotFound , gin.H {"error" : "User not found" })
90
81
return
0 commit comments