ZPRP_Rental/gin/controllers/user.go

105 lines
2.4 KiB
Go

package controllers
import (
"../forms"
"../models"
"net/http"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
)
//UserController ...
type UserController struct{}
var userModel = new(models.UserModel)
//getUserID ...
func getUserID(c *gin.Context) int64 {
session := sessions.Default(c)
userID := session.Get("user_id")
if userID != nil {
return models.ConvertToInt64(userID)
}
return 0
}
//getSessionUserInfo ...
func getSessionUserInfo(c *gin.Context) (userSessionInfo models.UserSessionInfo) {
session := sessions.Default(c)
userID := session.Get("user_id")
if userID != nil {
userSessionInfo.ID = models.ConvertToInt64(userID)
userSessionInfo.Name = session.Get("user_name").(string)
userSessionInfo.Email = session.Get("user_email").(string)
}
return userSessionInfo
}
//Signin ...Zaloguj
func (ctrl UserController) Signin(c *gin.Context) {
var signinForm forms.SigninForm
if c.BindJSON(&signinForm) != nil {
c.JSON(http.StatusNotAcceptable, gin.H{"message": "Invalid form", "form": signinForm})
c.Abort()
return
}
user, err := userModel.Signin(signinForm)
if err == nil {
session := sessions.Default(c)
session.Set("user_id", user.ID)
session.Set("user_email", user.Email)
session.Set("user_name", user.Name)
session.Save()
// c.JSON(http.StatusOK, gin.H{"message": "User signed in", "user": user.ID})
} else {
c.JSON(http.StatusNotAcceptable, gin.H{"message": "Invalid signin details", "error": err.Error()})
}
}
//Signup ...Zarejestruj
func (ctrl UserController) Signup(c *gin.Context) {
var signupForm forms.SignupForm
if c.BindJSON(&signupForm) != nil {
c.JSON(http.StatusNotAcceptable, gin.H{"message": "Invalid form", "form": signupForm})
c.Abort()
return
}
user, err := userModel.Signup(signupForm)
if err != nil {
c.JSON(http.StatusNotAcceptable, gin.H{"message": err.Error()})
c.Abort()
return
}
if err == nil {
session := sessions.Default(c)
session.Set("user_id", user.ID)
session.Set("user_email", user.Email)
session.Set("user_name", user.Name)
session.Save()
c.JSON(http.StatusOK, gin.H{"message": "Success signup", "user": user})
} else {
c.JSON(http.StatusNotAcceptable, gin.H{"message": "Could not signup this user", "error": err.Error()})
}
}
//Signout ...
func (ctrl UserController) Signout(c *gin.Context) {
session := sessions.Default(c)
session.Clear()
session.Save()
c.JSON(http.StatusOK, gin.H{"message": "Signed out..."})
}