add support for 1.19 "Secure Chat Signing"

This commit is contained in:
2022-09-18 02:53:08 +08:00
parent fa86f0cfdb
commit 3dd53caea4
7 changed files with 172 additions and 34 deletions

View File

@@ -33,6 +33,7 @@ type MetaInfo struct {
FeatureNonEmailLogin bool `json:"feature.non_email_login,omitempty"`
FeatureLegacySkinApi bool `json:"feature.legacy_skin_api,omitempty"`
FeatureNoMojangNamespace bool `json:"feature.no_mojang_namespace,omitempty"`
FeatureEnableProfileKey bool `json:"feature.enable_profile_key,omitempty"`
}
type ServerMeta struct {

View File

@@ -76,4 +76,5 @@ func InitRouters(router *gin.Engine, db *gorm.DB, meta *ServerMeta, skinRootUrl
api.DELETE("/user/profile/:uuid/:textureType", textureRouter.DeleteTexture)
api.GET("/users/profiles/minecraft/:username", userRouter.UsernameToUUID)
}
router.POST("/minecraftservices/player/certificates", userRouter.ProfileKey)
}

View File

@@ -37,6 +37,7 @@ type UserRouter interface {
UsernameToUUID(c *gin.Context)
QueryUUIDs(c *gin.Context)
QueryProfile(c *gin.Context)
ProfileKey(c *gin.Context)
}
type userRouterImpl struct {
@@ -263,3 +264,18 @@ func (u *userRouterImpl) QueryProfile(c *gin.Context) {
}
c.JSON(http.StatusOK, response)
}
func (u *userRouterImpl) ProfileKey(c *gin.Context) {
bearerToken := c.GetHeader("Authorization")
if len(bearerToken) < 8 {
c.AbortWithStatusJSON(http.StatusUnauthorized, util.NewForbiddenOperationError(util.MessageInvalidToken))
return
}
accessToken := bearerToken[7:]
response, err := u.userService.ProfileKey(accessToken)
if err != nil {
util.HandleError(c, err)
return
}
c.JSON(http.StatusOK, response)
}