mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 23:44:52 +01:00
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:
@@ -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) {
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user