Добавил RegisterUser в котроллере и роуты в апи

This commit is contained in:
songl 2024-06-06 21:33:15 +05:00
parent 44e65efd42
commit 411232dee4
2 changed files with 98 additions and 11 deletions

View File

@ -32,25 +32,82 @@ type TokenStruct struct {
token string token string
} }
func RegisterUser(c *gin.Context, user database.User) { //func RegisterUser(c *gin.Context, user database.User) {
// db := database.Connector()
// validate := validators.Validate
// response := message.Response{Status: 200}
// if err := validate.Struct(user); err != nil {
// response.Error = libs.GetValidationErrors(err.(validator.ValidationErrors))
// response.Status = 400
// message.SendResponse(c, response)
// return
// }
// hash, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12)
// if err != nil {
// return
// }
// user.Password = string(hash)
// if err := db.Create(user).Error; err != nil {
// return
// }
// return
//}
func RegisterUser(c *gin.Context, register database.User) {
var user database.User
db := database.Connector() db := database.Connector()
validate := validators.Validate validate := validators.Validate
response := message.Response{Status: 200} response := message.Response{Status: 201}
if err := validate.Struct(user); err != nil { var token *database.Token
if err := validate.Struct(register); err != nil {
response.Error = libs.GetValidationErrors(err.(validator.ValidationErrors)) response.Error = libs.GetValidationErrors(err.(validator.ValidationErrors))
response.Status = 400 response.Status = 400
message.SendResponse(c, response) message.SendResponse(c, response)
return return
} }
hash, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12)
if err := db.Where("email =?", register.Email).First(&user).Error; err == nil {
response.Status = 400
response.Error = gin.H{
"error": "User already exists",
}
message.SendResponse(c, response)
return
}
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(register.Password), 12)
if err != nil { if err != nil {
response.Status = 500
response.Error = gin.H{
"error": "Internal Server Error",
}
message.SendResponse(c, response)
return return
} }
user.Password = string(hash)
if err := db.Create(user).Error; err != nil { user.Email = register.Email
user.Password = string(hashedPassword)
user.Name = register.Name
if err := db.Create(&user).Error; err != nil {
response.Status = 500
response.Error = gin.H{
"error": "Internal Server Error",
}
message.SendResponse(c, response)
return return
} }
return
token.Token = generateToken()
token.UserID = user.ID
user.Tokens = append(user.Tokens, token)
response.Message = gin.H{
"message": "Registration Success",
}
message.SendResponse(c, response)
} }
func LoginUser(c *gin.Context, login types.LoginRequest) { func LoginUser(c *gin.Context, login types.LoginRequest) {

38
main.go
View File

@ -70,15 +70,45 @@ func main() {
controllers.EditManufacture(c, manufacturer) controllers.EditManufacture(c, manufacturer)
}) })
//Для создания пользователя //View для создания пользователя
r.POST("/registration", func(c *gin.Context) { r.POST("/registration", func(c *gin.Context) {
var manufacturer database.Manufacturer var form database.User
if err := c.ShouldBind(&manufacturer); err != nil { if err := c.ShouldBind(&form); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
} }
controllers.CreateManufacturer(c, manufacturer) controllers.RegisterUser(c, form)
}) })
//View для аутентификации пользователя
r.POST("/login", func(c *gin.Context) {
var register types.LoginRequest
if err := c.ShouldBind(&register); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
controllers.LoginUser(c, register)
})
//View для получения пользователя
r.GET("/user", func(c *gin.Context) {})
//View для редактированя пользователя
r.PATCH("/user/edit", func(c *gin.Context) {
var user database.User
if err := c.ShouldBind(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
controllers.EditUser(c, user)
})
//View для удаления пользователя
r.DELETE("/user/delete", func(c *gin.Context) {
var form types.LoginRequest
if err := c.ShouldBind(&form); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
controllers.DeleteUser(c)
})
err := r.Run() err := r.Run()
if err != nil { if err != nil {
return return