Добавил 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
}
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()
validate := validators.Validate
response := message.Response{Status: 200}
if err := validate.Struct(user); err != nil {
response := message.Response{Status: 201}
var token *database.Token
if err := validate.Struct(register); 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 := 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 {
response.Status = 500
response.Error = gin.H{
"error": "Internal Server Error",
}
message.SendResponse(c, response)
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
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) {

38
main.go
View File

@ -70,15 +70,45 @@ func main() {
controllers.EditManufacture(c, manufacturer)
})
//Для создания пользователя
//View для создания пользователя
r.POST("/registration", func(c *gin.Context) {
var manufacturer database.Manufacturer
if err := c.ShouldBind(&manufacturer); err != nil {
var form database.User
if err := c.ShouldBind(&form); err != nil {
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()
if err != nil {
return