105 lines
2.4 KiB
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..."})
|
|
}
|