/// <summary>
        /// 使用账号登录
        /// </summary>
        /// <param name="dto">登录信息</param>
        /// <returns>业务操作结果</returns>
        public async Task <OperationResult <User> > Login(LoginDto dto)
        {
            Check.NotNull(dto, nameof(dto));

            User user = await FindUserByAccount(dto.Account);

            if (user == null)
            {
                return(new OperationResult <User>(OperationResultType.Error, "用户不存在"));
            }
            if (user.IsLocked)
            {
                return(new OperationResult <User>(OperationResultType.Error, "用户已被冻结,无法登录"));
            }
            SignInResult signInResult = await _signInManager.CheckPasswordSignInAsync(user, dto.Password, true);

            OperationResult <User> result = ToOperationResult(signInResult, user);

            if (!result.Succeeded)
            {
                return(result);
            }
            _logger.LogInformation(1, $"用户 {user.Id} 使用账号登录系统成功");

            //触发登录成功事件
            LoginEventData loginEventData = new LoginEventData()
            {
                LoginDto = dto, User = user
            };

            _eventBus.Publish(loginEventData);

            return(result);
        }
        private void HandleLogout()
        {
            LoginEventData l  = new LoginEventData(Program.clientController.userAccount.Username, "");
            Event          ev = new Event(Event.EventTypeEnum.UserLogOff, l);

            networkHandler.SendMessage(ev);
            Program.clientController.userAccount = null;
        }
Example #3
0
        private void WidgetLoginEvent(LoginEventData loginData)
        {
            Model.IsLoggedDMarket = Widget.IsLogged;
            Model.SetChanges();

            if (IsBasicIntegration)
            {
                ShowNotification("DMarket login was successful");
            }
        }
Example #4
0
        private void OnDMarketLogin(LoginEventData login)
        {
            var message = new AppUpdateMarketTokenMessage
            {
                MarketToken        = login.MarketAccessToken,
                RefreshMarketToken = login.MarketRefreshAccessToken
            };

            Client.Send(message);
        }
Example #5
0
        private void OnWidgetLogin(LoginEventData data)
        {
            Debug.Log(string.Format("UserLogged.MarketAccessToken: {0}\nMarketRefreshAccessToken: {1}",
                                    data.MarketAccessToken, data.MarketRefreshAccessToken));

            _marketAccessToken.text  = data.MarketAccessToken;
            _marketRefreshToken.text = data.MarketRefreshAccessToken;

            _clientApi.MarketToken = _marketAccessToken.text;
        }
        private async void LogLoginEvent(LoginEventData data)
        {
            await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                string loginNavigation = $"Navigated to {data.Url}";
                string authCode        = $"Received authorization code: {data.AuthCode}";

                LogEntries.Add(new EventData {
                    StaticText = loginNavigation, IsRequest = true
                });
                LogEntries.Add(new EventData {
                    StaticText = authCode, IsRequest = false
                });

                NotifyLogWindow();
            });
        }
Example #7
0
        private void LogLoginEvent(object sender, LoginEventData data)
        {
            if (data != null)
            {
                string loginNavigation = $"Navigated to {data.Url}";
                string authCode        = $"Received authorization code: {data.AuthCode}";

                // These items should be the very first in the log
                _items.Insert(0, new EventData {
                    StaticText = authCode, IsRequest = false
                });
                _items.Insert(0, new EventData {
                    StaticText = loginNavigation, IsRequest = true
                });

                NotifyLogWindow();
            }
        }
Example #8
0
        public async Task UpdateLogin(LoginEventData data)
        {
            var user = await _userRep.GetAsync(data.UserId.Value);

            if (user == null)
            {
                return;
            }
            user.LastLoginTime = data.LoginTime;
            user.LastLoginIP   = data.LoginIP;

            await _userRep.UpdateAsync(user, user => new { user.LastLoginTime, user.LastLoginIP });


            var record = new SysLoginRecord();

            record.UserId        = user.Id;
            record.IP            = user.LastLoginIP;
            record.Time          = user.LastLoginTime;
            record.JwtExpireTime = data.JwtExpireTime;
            record.JwtJti        = data.JwtJti;

            await _recordRep.InsertAsync(record);
        }
Example #9
0
 private void OnWidgetLogin(LoginEventData loginEventData)
 {
     Widget.LoginEvent -= OnWidgetLogin;
     StartCoroutine(CloseWidget());
 }
Example #10
0
 private void OnDMarketLogin(LoginEventData loginData)
 {
     Client.Send(new AppUpdateMarketTokenMessage(loginData.MarketAccessToken, loginData.MarketRefreshAccessToken));
 }
Example #11
0
 private void OnLogin(LoginEventData data)
 {
     _isNeedReloadMarketData = true;
     Model.BasicAccessToken  = data.MarketAccessToken;
     Model.SetChanges();
 }
        public void HandleMessage(ServerResponse sender, Event e)
        {
            Event.EventTypeEnum enumType = e.EventType;
            Account             acc      = new Account("NULL", "NULL");

            switch (enumType)
            {
            case Event.EventTypeEnum.CreateAccount:
                //Check list of all accounts and make sure the username isn't taken. If not, send new account

                LoginEventData createAccData = JsonConvert.DeserializeObject <LoginEventData>(e.EventData.ToString());
                bool           canCreate     = true;
                if (accountList == null)
                {
                    accountList = new List <Account>();
                }
                for (int i = 0; i < accountList.Count && canCreate; i++)
                {
                    string s = accountList.ElementAt(i).Username;
                    if (s == createAccData.Username)
                    {
                        canCreate = false;
                    }
                }
                if (canCreate)
                {
                    acc = new Account(createAccData.Username, createAccData.Password);
                    accountList.Add(acc);
                    logger.NormalMessage("New user created: " + createAccData.Username);

                    //Send success response
                    //sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseSuccess, null));

                    //Send account data
                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerSendAccount, new AccountData(acc)));
                }
                else
                {
                    logger.ErrorMessage("User attempted to create an account with the same username as one that exists.");
                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseError, "Account already exists. Try again."));
                }
                break;

            case Event.EventTypeEnum.LoginAttempt:
                //Find if the username exits. If so, make sure the password is correct. Send account data
                bool           found     = false;
                LoginEventData loginData = JsonConvert.DeserializeObject <LoginEventData>(e.EventData.ToString());
                for (int i = 0; i < accountList.Count && !found; i++)
                {
                    string u = accountList.ElementAt(i).Username;
                    if (u == loginData.Username)
                    {
                        found = true;
                        acc   = accountList.ElementAt(i);
                    }
                }
                if (loginData.Password == acc.Password)
                {
                    //Successful login attempt
                    logger.NormalMessage("User " + loginData.Username + " has logged in");
                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseSuccess, null));
                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerSendAccount, acc));
                }
                else
                {
                    //Unsuccessful login attempt
                    logger.ErrorMessage("User " + loginData.Username + " made bad login attempt");
                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseError, "We couldn't find that username/password combo. Try again."));
                }
                break;

            case Event.EventTypeEnum.NULLEVENTENUM:
                logger.ErrorMessage("Null event received in ServerHandler.HandleMessage()");
                break;
            }
        }
 private void WidgetLoginEvent(LoginEventData loginData)
 {
     Model.IsLoggedDMarket = Widget.IsLogged;
     Model.SetChanges();
 }
Example #14
0
        private void BtnLogin_Click(object sender, EventArgs e)
        {
            LoginEventData eData = new LoginEventData(uxTB_Username.Text, uxTB_Password.Text);

            Program.netHandler.SendMessage(new Event(Event.EventTypeEnum.LoginAttempt, eData));
        }
        public void HandleMessage(ServerResponse sender, Event e)
        {
            Event.EventTypeEnum enumType = e.EventType;
            Account             acc      = new Account("NULL", "NULL");

            switch (enumType)
            {
            case Event.EventTypeEnum.CreateAccount:
                //Check list of all accounts and make sure the username isn't taken. If not, send new account
                LoginEventData createAccData = JsonConvert.DeserializeObject <LoginEventData>(e.EventData.ToString());
                bool           canCreate     = true;
                if (accountList == null)
                {
                    accountList = new List <Account>();
                }
                for (int i = 0; i < accountList.Count && canCreate; i++)
                {
                    string s = accountList.ElementAt(i).Username;
                    if (s == createAccData.Username)
                    {
                        canCreate = false;
                    }
                }
                if (canCreate)
                {
                    acc          = new Account(createAccData.Username, createAccData.Password);
                    acc.IsOnline = true;
                    accountList.Add(acc);
                    updateActivityList("New user created: " + createAccData.Username);
                    updateUserList(accountList);

                    //Send success response
                    //sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseSuccess, null));

                    //Send account data
                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerSendAccount, new AccountData(acc)));
                }
                else
                {
                    updateActivityList("User attempted to create an account with the same username as one that exists.");
                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseError, new ServerErrorData("Account already exists. Try again.")));
                }
                break;

            case Event.EventTypeEnum.LoginAttempt:
                //Find if the username exits. If so, make sure the password is correct. Send account data
                bool           found     = false;
                LoginEventData loginData = JsonConvert.DeserializeObject <LoginEventData>(e.EventData.ToString());
                for (int i = 0; i < accountList.Count && !found; i++)
                {
                    string u = accountList.ElementAt(i).Username;
                    if (u == loginData.Username)
                    {
                        found = true;
                        acc   = accountList.ElementAt(i);
                    }
                }
                if (loginData.Password == acc.Password)
                {
                    //Successful login attempt
                    updateActivityList("User " + loginData.Username + " has logged in");
                    acc.IsOnline = true;
                    updateUserList(accountList);

                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerSendAccount, new AccountData(acc)));
                }
                else
                {
                    //Unsuccessful login attempt
                    updateActivityList("User " + loginData.Username + " made bad login attempt");
                    sender.SendResponseToClient(new Event(Event.EventTypeEnum.ServerResponseError, new ServerErrorData("We couldn't find that username/password combo. Try again.")));
                }
                break;

            case Event.EventTypeEnum.UserLogOff:
                LoginEventData logOffData = JsonConvert.DeserializeObject <LoginEventData>(e.EventData.ToString());
                foreach (Account a in accountList)
                {
                    if (a.Username == logOffData.Username)
                    {
                        updateActivityList(a.Username + " has logged off");
                        a.IsOnline = false;
                        updateUserList(accountList);
                        break;
                    }
                }
                break;

            case Event.EventTypeEnum.ClientStockRequest:
                StockRequestData reqData        = JsonConvert.DeserializeObject <StockRequestData>(e.EventData.ToString());
                string           reqSymbol      = reqData.StockSymbol.ToUpper();
                bool             inStockList    = false;
                Stock            reqStockToSend = new Stock("NULL");
                for (int i = 0; i < stockList.Count; i++)
                {
                    string tStock = stockList.ElementAt(i).TickerSymbol;
                    if (tStock == reqSymbol)
                    {
                        inStockList = true;
                        stockList.ElementAt(i).UpdateStock();
                        reqStockToSend = stockList.ElementAt(i);
                        break;
                    }
                }
                if (!inStockList)
                {
                    Stock tStock = new Stock(reqSymbol);
                    reqStockToSend = tStock;
                    stockList.Add(tStock);
                }
                StockData sd             = new StockData(reqStockToSend);
                Event     reqEventToSend = new Event(Event.EventTypeEnum.ServerSendStock, sd);
                sender.SendResponseToClient(reqEventToSend);
                updateStockList(stockList);
                break;

            case Event.EventTypeEnum.NULLEVENTENUM:
                updateActivityList("Null event received in ServerHandler.HandleMessage()");
                break;
            }
        }