# HG changeset patch # User unc0rr # Date 1482524940 -10800 # Node ID cdadc1d487f1b5d105637b716d507813aa895ca3 # Parent 72f5d670bbee7132ffbad7cd66ffb913b4a5a755 Only registered players regain their teams on rejoin diff -r 72f5d670bbee -r cdadc1d487f1 gameServer/Actions.hs --- a/gameServer/Actions.hs Fri Dec 23 23:12:00 2016 +0300 +++ b/gameServer/Actions.hs Fri Dec 23 23:29:00 2016 +0300 @@ -515,12 +515,12 @@ rnc <- gets roomsClients clientNick <- client's nick clProto <- client's clientProto - isAuthenticated <- liftM (not . B.null) $ client's webPassword + isAuthenticated <- liftM isRegistered $ client's id isAdmin <- client's isAdministrator isContr <- client's isContributor loggedInClients <- liftM (Prelude.filter isVisible) $! allClientsS let (lobbyNicks, clientsChans) = unzip . L.map (nick &&& sendChan) $ loggedInClients - let authenticatedNicks = L.map nick . L.filter (not . B.null . webPassword) $ loggedInClients + let authenticatedNicks = L.map nick . L.filter isRegistered $ loggedInClients let adminsNicks = L.map nick . L.filter isAdministrator $ loggedInClients let contrNicks = L.map nick . L.filter isContributor $ loggedInClients inRoomNicks <- io $ diff -r 72f5d670bbee -r cdadc1d487f1 gameServer/HWProtoInRoomState.hs --- a/gameServer/HWProtoInRoomState.hs Fri Dec 23 23:12:00 2016 +0300 +++ b/gameServer/HWProtoInRoomState.hs Fri Dec 23 23:29:00 2016 +0300 @@ -111,7 +111,6 @@ clChan <- thisClientChans othChans <- roomOthersChans roomChans <- roomClientsChans - let isRegistered = (<) 0 . B.length . webPassword $ cl teamColor <- if clientProto cl < 42 then return color @@ -123,7 +122,7 @@ minimum [hhnum $ head roomTeams, canAddNumber roomTeams] else defaultHedgehogsNumber rm - let newTeam = clNick `seq` TeamInfo clNick tName teamColor grave fort voicepack flag isRegistered dif hhNum (hhsList hhsInfo) + let newTeam = clNick `seq` TeamInfo clNick tName teamColor grave fort voicepack flag (isRegistered cl) dif hhNum (hhsList hhsInfo) return $ if not . null . drop (teamsNumberLimit rm - 1) $ roomTeams then [Warning $ loc "too many teams"] diff -r 72f5d670bbee -r cdadc1d487f1 gameServer/HWProtoLobbyState.hs --- a/gameServer/HWProtoLobbyState.hs Fri Dec 23 23:12:00 2016 +0300 +++ b/gameServer/HWProtoLobbyState.hs Fri Dec 23 23:29:00 2016 +0300 @@ -83,7 +83,7 @@ let chans = map sendChan (cl : jRoomClients) let isBanned = host cl `elem` roomBansList jRoom let clTeams = - if (clientProto cl >= 48) && (isJust $ gameInfo jRoom) then + if (clientProto cl >= 48) && (isJust $ gameInfo jRoom) && isRegistered cl then filter (\t -> teamowner t == nick cl) . teamsAtStart . fromJust $ gameInfo jRoom else [] @@ -95,7 +95,7 @@ [Warning $ loc "Room version incompatible to your hedgewars version"] else if isRestrictedJoins jRoom && not (hasSuperPower cl) then [Warning $ loc "Joining restricted"] - else if isRegisteredOnly jRoom && (B.null . webPassword $ cl) && not (isAdministrator cl) then + else if isRegisteredOnly jRoom && (not $ isRegistered cl) && not (isAdministrator cl) then [Warning $ loc "Registered users only"] else if isBanned then [Warning $ loc "You are banned in this room"] diff -r 72f5d670bbee -r cdadc1d487f1 gameServer/Utils.hs --- a/gameServer/Utils.hs Fri Dec 23 23:12:00 2016 +0300 +++ b/gameServer/Utils.hs Fri Dec 23 23:29:00 2016 +0300 @@ -245,3 +245,6 @@ where sc c | isAlphaNum c = c | otherwise = '_' + +isRegistered :: ClientInfo -> Bool +isRegistered = (<) 0 . B.length . webPassword