refactor: minor changement
parent
0dcc5cca99
commit
89a062520c
|
@ -7,72 +7,59 @@
|
|||
package controllers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"github.com/fbonhomm/api-go/source/libs"
|
||||
"github.com/fbonhomm/api-go/source/models"
|
||||
"github.com/fbonhomm/api-go/source/services"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// AuthLogin
|
||||
func AuthLogin(c *gin.Context) {
|
||||
user := models.User{
|
||||
var accessToken string
|
||||
var refreshToken string
|
||||
var err error
|
||||
var user = models.User{
|
||||
Email: c.PostForm("email"),
|
||||
}
|
||||
|
||||
if err := services.Db.First(&user).Error; err != nil {
|
||||
if err = services.Db.First(&user).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
if err := user.Compare(c.PostForm("password")); err != nil {
|
||||
} else if err = user.Compare(c.PostForm("password")); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error() })
|
||||
return
|
||||
} else if accessToken, err = libs.GenerateAccessToken(user); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
} else if refreshToken, err = libs.GenerateRefreshToken(user); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
} else {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"access_token": accessToken,
|
||||
"refresh_token": refreshToken,
|
||||
})
|
||||
}
|
||||
|
||||
accessToken, err := libs.GenerateAccessToken(user)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error() })
|
||||
return
|
||||
}
|
||||
|
||||
refreshToken, err := libs.GenerateRefreshToken(user)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error() })
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"access_token": accessToken,
|
||||
"refresh_token": refreshToken,
|
||||
})
|
||||
}
|
||||
|
||||
// AuthRefresh
|
||||
func AuthRefresh(c *gin.Context) {
|
||||
user := models.User{}
|
||||
var accessToken string
|
||||
var refreshToken string
|
||||
var err error
|
||||
var user = models.User{}
|
||||
|
||||
token, _ := c.Get("Token")
|
||||
info := token.(map[string]string)
|
||||
token, _ := GetToken(c)
|
||||
|
||||
if err := services.Db.First(&user, info["id"]).Error; err != nil {
|
||||
if err = services.Db.First(&user, token["id"]).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
} else if accessToken, err = libs.GenerateAccessToken(user); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
} else if refreshToken, err = libs.GenerateRefreshToken(user); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
} else {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"access_token": accessToken,
|
||||
"refresh_token": refreshToken,
|
||||
})
|
||||
}
|
||||
|
||||
accessToken, err := libs.GenerateAccessToken(user)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error() })
|
||||
return
|
||||
}
|
||||
|
||||
refreshToken, err := libs.GenerateRefreshToken(user)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error() })
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"access_token": accessToken,
|
||||
"refresh_token": refreshToken,
|
||||
})
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
/**
|
||||
* Created by fbonhomm
|
||||
* Email: flo-github@outlook.fr
|
||||
* Licence: MIT
|
||||
*/
|
||||
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// GetToken
|
||||
func GetToken(c *gin.Context) (info map[string]string, err error) {
|
||||
token, ok := c.Get("Token")
|
||||
|
||||
if ok == false {
|
||||
err = errors.New("token is not found")
|
||||
} else {
|
||||
info = token.(map[string]string)
|
||||
}
|
||||
|
||||
return info, err
|
||||
}
|
|
@ -7,10 +7,12 @@
|
|||
package libs
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/dgrijalva/jwt-go"
|
||||
|
||||
"github.com/fbonhomm/api-go/source/models"
|
||||
"github.com/fbonhomm/api-go/source/services"
|
||||
"time"
|
||||
)
|
||||
|
||||
// GenerateAccessToken
|
||||
|
|
|
@ -11,6 +11,11 @@ import (
|
|||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
|
||||
// ID uint `gorm:"primary_key"`
|
||||
// CreatedAt time.Time
|
||||
// UpdatedAt time.Time
|
||||
// DeletedAt *time.Time `sql:"index"`
|
||||
|
||||
type User struct {
|
||||
gorm.Model
|
||||
Name string `gorm:"type:varchar(50);not null" json:"name"`
|
||||
|
|
|
@ -17,6 +17,6 @@ import (
|
|||
func Auth(router *gin.Engine) {
|
||||
route := router.Group("/auth")
|
||||
|
||||
route.POST("/", validators.ValidateAuthLogin, controllers.AuthLogin)
|
||||
route.POST("", validators.ValidateAuthLogin, controllers.AuthLogin)
|
||||
route.POST("/refresh", middlewares.AuthRefresh, validators.ValidateAuthRefresh, controllers.AuthRefresh)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
/**
|
||||
* Created by fbonhomm
|
||||
* Email: flo-github@outlook.fr
|
||||
* Licence: MIT
|
||||
*/
|
||||
|
||||
package routers
|
||||
|
||||
import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/gin-contrib/cors"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// RouterInitialize
|
||||
// Initialize all api route
|
||||
func RouterInitialize() *gin.Engine {
|
||||
routerEngine := gin.Default()
|
||||
|
||||
routerEngine.Use(cors.New(cors.Config{
|
||||
AllowOrigins: []string{os.Getenv("HOST") + ":" + os.Getenv("PORT")},
|
||||
AllowMethods: []string{"OPTIONS", "GET", "POST", "PUT", "DELETE"},
|
||||
AllowHeaders: []string{"Origin", "Content-Type", "Content-Length", "Accept-Encoding", "Authorization"},
|
||||
ExposeHeaders: []string{"Content-Length"},
|
||||
AllowCredentials: true,
|
||||
MaxAge: 12 * time.Hour,
|
||||
}))
|
||||
|
||||
User(routerEngine)
|
||||
Auth(routerEngine)
|
||||
|
||||
return routerEngine
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@ import (
|
|||
func User(router *gin.Engine) {
|
||||
route := router.Group("/users")
|
||||
|
||||
route.POST("/", middlewares.Auth, validators.ValidateUserCreate, controllers.UserCreate)
|
||||
route.POST("", middlewares.Auth, validators.ValidateUserCreate, controllers.UserCreate)
|
||||
route.GET("/:id", middlewares.Auth, validators.ValidateUserGetId, controllers.UserGetId)
|
||||
route.DELETE("/:id", middlewares.Auth, validators.ValidateUserDeleteId, controllers.UserDeleteId)
|
||||
}
|
||||
|
|
|
@ -8,11 +8,12 @@ package services
|
|||
|
||||
import (
|
||||
"crypto/ecdsa"
|
||||
"github.com/dgrijalva/jwt-go"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"github.com/dgrijalva/jwt-go"
|
||||
)
|
||||
|
||||
const ROOT = "./source/services"
|
||||
|
||||
var PublicKeyAccess *ecdsa.PublicKey
|
||||
var PrivateKeyAccess *ecdsa.PrivateKey
|
||||
|
@ -22,16 +23,17 @@ var err error
|
|||
|
||||
func Jwt() {
|
||||
var tmp []byte
|
||||
var root = os.Getenv("ROOT") + "/source/services"
|
||||
|
||||
tmp, _ = ioutil.ReadFile(ROOT + "/jwt/access.public.pem")
|
||||
tmp, err = ioutil.ReadFile(root + "/jwt/access.public.pem")
|
||||
PublicKeyAccess, _ = jwt.ParseECPublicKeyFromPEM(tmp)
|
||||
|
||||
tmp, _ = ioutil.ReadFile(ROOT + "/jwt/access.private.pem")
|
||||
tmp, _ = ioutil.ReadFile(root + "/jwt/access.private.pem")
|
||||
PrivateKeyAccess, _ = jwt.ParseECPrivateKeyFromPEM(tmp)
|
||||
|
||||
tmp, _ = ioutil.ReadFile(ROOT + "/jwt/refresh.public.pem")
|
||||
tmp, _ = ioutil.ReadFile(root + "/jwt/refresh.public.pem")
|
||||
PublicKeyRefresh, _ = jwt.ParseECPublicKeyFromPEM(tmp)
|
||||
|
||||
tmp, _ = ioutil.ReadFile(ROOT + "/jwt/refresh.private.pem")
|
||||
tmp, _ = ioutil.ReadFile(root + "/jwt/refresh.private.pem")
|
||||
PrivateKeyRefresh, _ = jwt.ParseECPrivateKeyFromPEM(tmp)
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@ import (
|
|||
)
|
||||
|
||||
type authLogin struct {
|
||||
Email string `form:"email" binding:"required,email"`
|
||||
Password string `form:"password" binding:"required,min=8,max=50"`
|
||||
Email string `form:"email" binding:"required,email"`
|
||||
Password string `form:"password" binding:"required,min=8,max=50"`
|
||||
}
|
||||
|
||||
type authRefresh struct {
|
||||
|
|
|
@ -7,8 +7,9 @@
|
|||
package validators
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func errorHandling(c *gin.Context, msg string) {
|
Loading…
Reference in New Issue