Make sure signv2 returns user token ID

Noticed when refactoring 'mhf-iel' to support F5 that this info was
not mapped correctly.
This commit is contained in:
rockisch
2023-11-30 01:11:38 -03:00
parent 51e1860a92
commit b14b75ee23
2 changed files with 16 additions and 13 deletions

View File

@@ -32,13 +32,14 @@ func (s *Server) createNewUser(ctx context.Context, username string, password st
return id, rights, err return id, rights, err
} }
func (s *Server) createLoginToken(ctx context.Context, uid uint32) (string, error) { func (s *Server) createLoginToken(ctx context.Context, uid uint32) (uint32, string, error) {
loginToken := token.Generate(16) loginToken := token.Generate(16)
_, err := s.db.ExecContext(ctx, "INSERT INTO sign_sessions (user_id, token) VALUES ($1, $2)", uid, loginToken) var tid uint32
err := s.db.QueryRowContext(ctx, "INSERT INTO sign_sessions (user_id, token) VALUES ($1, $2) RETURNING id", uid, loginToken).Scan(&tid)
if err != nil { if err != nil {
return "", err return 0, "", err
} }
return loginToken, nil return tid, loginToken, nil
} }
func (s *Server) userIDFromToken(ctx context.Context, token string) (uint32, error) { func (s *Server) userIDFromToken(ctx context.Context, token string) (uint32, error) {

View File

@@ -27,8 +27,9 @@ type LauncherResponse struct {
} }
type User struct { type User struct {
Token string `json:"token"` TokenID uint32 `json:"tokenId"`
Rights uint32 `json:"rights"` Token string `json:"token"`
Rights uint32 `json:"rights"`
} }
type Character struct { type Character struct {
@@ -65,14 +66,15 @@ type ExportData struct {
Character map[string]interface{} `json:"character"` Character map[string]interface{} `json:"character"`
} }
func (s *Server) newAuthData(userID uint32, userRights uint32, userToken string, characters []Character) AuthData { func (s *Server) newAuthData(userID uint32, userRights uint32, userTokenID uint32, userToken string, characters []Character) AuthData {
resp := AuthData{ resp := AuthData{
CurrentTS: uint32(channelserver.TimeAdjusted().Unix()), CurrentTS: uint32(channelserver.TimeAdjusted().Unix()),
ExpiryTS: uint32(s.getReturnExpiry(userID).Unix()), ExpiryTS: uint32(s.getReturnExpiry(userID).Unix()),
EntranceCount: 1, EntranceCount: 1,
User: User{ User: User{
Rights: userRights, Rights: userRights,
Token: userToken, TokenID: userTokenID,
Token: userToken,
}, },
Characters: characters, Characters: characters,
PatchServer: s.erupeConfig.SignV2.PatchServer, PatchServer: s.erupeConfig.SignV2.PatchServer,
@@ -142,7 +144,7 @@ func (s *Server) Login(w http.ResponseWriter, r *http.Request) {
return return
} }
userToken, err := s.createLoginToken(ctx, userID) userTokenID, userToken, err := s.createLoginToken(ctx, userID)
if err != nil { if err != nil {
s.logger.Warn("Error registering login token", zap.Error(err)) s.logger.Warn("Error registering login token", zap.Error(err))
w.WriteHeader(500) w.WriteHeader(500)
@@ -157,7 +159,7 @@ func (s *Server) Login(w http.ResponseWriter, r *http.Request) {
if characters == nil { if characters == nil {
characters = []Character{} characters = []Character{}
} }
respData := s.newAuthData(userID, userRights, userToken, characters) respData := s.newAuthData(userID, userRights, userTokenID, userToken, characters)
w.Header().Add("Content-Type", "application/json") w.Header().Add("Content-Type", "application/json")
json.NewEncoder(w).Encode(respData) json.NewEncoder(w).Encode(respData)
} }
@@ -191,13 +193,13 @@ func (s *Server) Register(w http.ResponseWriter, r *http.Request) {
return return
} }
userToken, err := s.createLoginToken(ctx, userID) userTokenID, userToken, err := s.createLoginToken(ctx, userID)
if err != nil { if err != nil {
s.logger.Error("Error registering login token", zap.Error(err)) s.logger.Error("Error registering login token", zap.Error(err))
w.WriteHeader(500) w.WriteHeader(500)
return return
} }
respData := s.newAuthData(userID, userRights, userToken, []Character{}) respData := s.newAuthData(userID, userRights, userTokenID, userToken, []Character{})
w.Header().Add("Content-Type", "application/json") w.Header().Add("Content-Type", "application/json")
json.NewEncoder(w).Encode(respData) json.NewEncoder(w).Encode(respData)
} }