|
|
@@ -106,7 +106,6 @@ func WsHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
if err != nil {
|
|
|
config.Logger.Warn(fmt.Sprintf("Error marshalling token: %v", err))
|
|
|
}
|
|
|
- payload.Payload = structs.WsLoginPayload{}
|
|
|
token := map[string]string{
|
|
|
"id": payload.Token.ID,
|
|
|
"token": payload.Token.Token,
|
|
|
@@ -162,13 +161,23 @@ func WsHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
// validate password and add to auth session map
|
|
|
func loginHandler(conn *websocket.Conn, msg []byte, payload structs.WsPayload) error {
|
|
|
config.Logger.Info("Login")
|
|
|
- payload.Payload = structs.WsLoginPayload{}
|
|
|
- if err := json.Unmarshal(msg, &payload); err != nil {
|
|
|
- return fmt.Errorf("Error unmarshalling message: %v", err)
|
|
|
+ var msgMap map[string]interface{}
|
|
|
+ err := json.Unmarshal(msg, &msgMap)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("Couldn't unmarshal login bytes: %v",err)
|
|
|
}
|
|
|
- loginPayload, ok := payload.Payload.(structs.WsLoginPayload)
|
|
|
+ payloadData, ok := msgMap["payload"].(map[string]interface{})
|
|
|
if !ok {
|
|
|
- return fmt.Errorf("Error casting to LoginPayload")
|
|
|
+ return fmt.Errorf("Couldn't extract payload: %v",err)
|
|
|
+ }
|
|
|
+ payloadBytes, err := json.Marshal(payloadData)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("Couldn't remarshal login data: %v",err)
|
|
|
+ }
|
|
|
+ var loginPayload structs.WsLoginPayload
|
|
|
+ err = json.Unmarshal(payloadBytes, &loginPayload)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("Couldn't unmarshal login payload: %v",err)
|
|
|
}
|
|
|
isAuthenticated := auth.AuthenticateLogin(loginPayload.Password)
|
|
|
if isAuthenticated {
|