first version functional with authlib-injector

This commit is contained in:
TaiAurori 2022-06-25 11:18:55 -04:00
parent 7e089795c7
commit 8ff55a4174
4 changed files with 25 additions and 12 deletions

20
auth.go
View File

@ -1,6 +1,7 @@
package main package main
import ( import (
"log"
"net/http" "net/http"
"github.com/gorilla/mux" "github.com/gorilla/mux"
@ -29,8 +30,13 @@ func authenticateEndpoint(w http.ResponseWriter, r *http.Request) {
// checks username and password // checks username and password
authToken, err := getAuthToken(authPayload.Username, authPayload.Password) authToken, err := getAuthToken(authPayload.Username, authPayload.Password)
log.Println(err)
if err != nil { if err != nil {
err := YggError{Code: 401, Error: "Unauthorized", ErrorMessage: "The username or password is incorrect"} err := YggError{
Code: 403,
Error: "ForbiddenOperationException",
ErrorMessage: "Invalid credentials.",
}
sendError(w, err) sendError(w, err)
return return
} }
@ -95,7 +101,11 @@ func refreshTokenEndpoint(w http.ResponseWriter, r *http.Request) {
return return
} }
if refreshPayload == responsePayload { if refreshPayload == responsePayload {
err := YggError{Code: 400, Error: "Bad Request", ErrorMessage: "The access token is invalid or has expired"} err := YggError{
Code: 403,
Error: "ForbiddenOperationException",
ErrorMessage: "Invalid token.",
}
sendError(w, err) sendError(w, err)
return return
} }
@ -115,7 +125,11 @@ func validateEndpoint(w http.ResponseWriter, r *http.Request) {
return return
} }
if !isValid { if !isValid {
err := YggError{Code: 403, Error: "Bad Request", ErrorMessage: "The access token is invalid or has expired"} err := YggError{
Code: 403,
Error: "ForbiddenOperationException",
ErrorMessage: "Invalid token.",
}
sendError(w, err) sendError(w, err)
return return
} }

3
db.go
View File

@ -199,7 +199,8 @@ func createUser(username string, adminToken string) (string, error) {
return "", err return "", err
} }
if !exists { if !exists {
password := uuid.New().String() // shrunk so it fits into Auth Me login
password := shrinkUUID(uuid.New().String())
insertUser(username, password) insertUser(username, password)
return password, nil return password, nil
} else { } else {

View File

@ -8,7 +8,6 @@ import (
"errors" "errors"
"io/fs" "io/fs"
"os" "os"
"log"
) )
func _playerExistsBy(query string, value any) (bool, error) { func _playerExistsBy(query string, value any) (bool, error) {
@ -64,7 +63,6 @@ func getPlayerByUsername(username string) (PlayerData, error) {
return _getPlayerBy("username", username) return _getPlayerBy("username", username)
} }
func getPlayerByAuthToken(auth string) (PlayerData, error) { func getPlayerByAuthToken(auth string) (PlayerData, error) {
log.Println(auth)
return _getPlayerBy("auth_token", auth) return _getPlayerBy("auth_token", auth)
} }

View File

@ -3,10 +3,10 @@ package main
import ( import (
"encoding/base64" "encoding/base64"
"encoding/json" "encoding/json"
"log"
"net/http" "net/http"
"os" "os"
"strings" "strings"
"log"
"github.com/gorilla/mux" "github.com/gorilla/mux"
) )
@ -56,11 +56,12 @@ func hasJoinedEndpoint(w http.ResponseWriter, r *http.Request) {
return return
} }
response, err := generateProfileResponse(params.Get("username"), player.UUID) response, err := generateProfileResponse(player.UUID, params.Get("username"))
if err != nil { if err != nil {
handleError(w, err) handleError(w, err)
return return
} }
log.Println(response)
sendJSON(w, response) sendJSON(w, response)
} }
@ -82,7 +83,7 @@ func joinEndpoint(w http.ResponseWriter, r *http.Request) {
handleError(w, err) handleError(w, err)
return return
} }
log.Println(payload.SelectedProfile, ",", player.UUID)
if payload.SelectedProfile != shrinkUUID(player.UUID) { if payload.SelectedProfile != shrinkUUID(player.UUID) {
sendError(w, YggError{ sendError(w, YggError{
Code: 400, Code: 400,
@ -103,14 +104,13 @@ func registerSessionEndpoints(r *mux.Router) {
func generateProfileResponse(uuid string, username string) (ProfileResponse, error) { func generateProfileResponse(uuid string, username string) (ProfileResponse, error) {
// todo: make this more visually appealing if possible // todo: make this more visually appealing if possible
clearUUID := strings.Join(strings.Split(uuid, "-"), "")
skin := SkinTexture{} skin := SkinTexture{}
skin.Url = config.BaseUrl + "/getTexture/" + uuid + "?type=skin" skin.Url = config.BaseUrl + "/getTexture/" + uuid + "?type=skin"
skin.Metadata = SkinMetadata{} skin.Metadata = SkinMetadata{}
skin.Metadata.Model = "default" skin.Metadata.Model = "default"
textures := ProfileTextureMetadata{} textures := ProfileTextureMetadata{}
textures.Id = clearUUID textures.Id = shrinkUUID(uuid)
textures.Name = username textures.Name = username
textures.Textures = ProfileTextures{} textures.Textures = ProfileTextures{}
textures.Textures.Skin = skin textures.Textures.Skin = skin
@ -129,7 +129,7 @@ func generateProfileResponse(uuid string, username string) (ProfileResponse, err
encodedTextures := base64.StdEncoding.EncodeToString(marshalledTextures) encodedTextures := base64.StdEncoding.EncodeToString(marshalledTextures)
response := ProfileResponse{} response := ProfileResponse{}
response.Id = clearUUID response.Id = shrinkUUID(uuid)
response.Name = username response.Name = username
response.Properties = []Property{ response.Properties = []Property{
{ {