init repo
This commit is contained in:
59
middleware/auth.go
Normal file
59
middleware/auth.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/Timothylock/go-signin-with-apple/apple"
|
||||
"github.com/nose7en/ToyBoomServer/common"
|
||||
"github.com/nose7en/ToyBoomServer/config"
|
||||
"github.com/nose7en/ToyBoomServer/defs"
|
||||
"github.com/nose7en/ToyBoomServer/rpc"
|
||||
"github.com/spf13/cast"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func ValidateAppleAppToken() func(c *gin.Context) {
|
||||
return func(c *gin.Context) {
|
||||
code := c.GetHeader(common.TokenKey)
|
||||
resp, err := rpc.GetManager().AppleCli().VerifyAppToken(c, code)
|
||||
if err != nil || len(resp.Error) > 0 {
|
||||
common.Logger(c).WithError(err).Errorf("failed to verify apple token, response error: %s", resp.Error)
|
||||
c.AbortWithStatusJSON(http.StatusOK, common.UnAuth("failed to verify apple token"))
|
||||
return
|
||||
}
|
||||
|
||||
// Get the unique user ID
|
||||
unique, err := apple.GetUniqueID(resp.IDToken)
|
||||
if err != nil {
|
||||
common.Logger(c).WithError(err).Error("failed to get apple unique id")
|
||||
c.AbortWithStatusJSON(http.StatusOK, common.UnAuth("failed to verify apple token"))
|
||||
return
|
||||
}
|
||||
|
||||
// Get detail user info
|
||||
claim, err := apple.GetClaims(resp.IDToken)
|
||||
if err != nil || claim == nil {
|
||||
common.Logger(c).WithError(err).Error("failed to get apple user info or claim is nil")
|
||||
c.AbortWithStatusJSON(http.StatusOK, common.UnAuth("failed to verify apple token"))
|
||||
return
|
||||
}
|
||||
|
||||
if config.IsDebug() {
|
||||
common.Logger(c).Debugf("apple auth success, user info: %+v", claim)
|
||||
}
|
||||
|
||||
email := cast.ToString((*claim)["email"])
|
||||
emailVerified := cast.ToBool((*claim)["email_verified"])
|
||||
isPrivateEmail := cast.ToBool((*claim)["is_private_email"])
|
||||
|
||||
userInfo := &defs.User{
|
||||
UserID: unique,
|
||||
Email: email,
|
||||
IsPrivateEmail: isPrivateEmail,
|
||||
EmailVerified: emailVerified,
|
||||
}
|
||||
common.Logger(c).Infof("apple auth success, user info: %+v", userInfo)
|
||||
c.Set(common.UserInfoKey, userInfo)
|
||||
}
|
||||
}
|
||||
4
middleware/init.go
Normal file
4
middleware/init.go
Normal file
@@ -0,0 +1,4 @@
|
||||
package middleware
|
||||
|
||||
func Init() {
|
||||
}
|
||||
Reference in New Issue
Block a user