Пример #1
0
        public static void HandleClientLoginReq(Session session, ClientLoginReq loginReq)
        {
            void SendError(uint errorCode, string errorMessage = "")
            {
                session.SendMessage(new ServerLoginResult
                {
                    ErrorCode    = errorCode,
                    ErrorMessage = errorMessage
                });
            }

            AccountModel account = DatabaseManager.Instance.AuthDatabase.GetAccount(loginReq.Username);

            if (account == null || !BCryptProvider.Verify(loginReq.Password, account.Password))
            {
                SendError(1);
                return;
            }

            session.Authenticate(account);

            // TODO: check for bans

            ulong sessionKey = RandomProvider.GenerateSessionKey();

            DatabaseManager.Instance.AuthDatabase.UpdateSessionKey(account, sessionKey);

            session.SendMessage(new ServerLoginResult
            {
                AccountId  = account.Id,
                SessionKey = sessionKey
            });

            session.SendMessage(new ServerOptionLoad
            {
            });
        }