Ejemplo n.º 1
0
        public void LogoutToOfflineTest()
        {
            OnlineClientDto onlineClientDto = new OnlineClientDto();

            onlineClientDto.UniqueID  = _onlineClient.UniqueID;
            onlineClientDto.Comments  = _onlineClient.Comments;
            onlineClientDto.MachineIP = _onlineClient.MachineIP;
            bool result = UserManagementService.LogoutToOffline(onlineClientDto);

            Assert.AreEqual(true, result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// is online
        /// </summary>
        /// <param name="onlineClientDto"></param>
        /// <returns></returns>
        public bool IsOnline(OnlineClientDto onlineClientDto)
        {
            string       webUserFlag     = "web login user";
            OnlineClient onlineClientOld = _OnlineClientRepository.Get(o => o.UniqueID == onlineClientDto.UniqueID &&
                                                                       o.Comments == webUserFlag && o.IsOnline == 1 && o.MachineIP == onlineClientDto.MachineIP).FirstOrDefault();

            if (onlineClientOld != null)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 3
0
        public void LoginToOnlineTest()
        {
            OnlineClientDto onlineClientDto = new OnlineClientDto();

            onlineClientDto.UniqueID  = RandomHelper.GenerateString();
            onlineClientDto.MachineIP = _onlineClient.MachineIP;
            string message = "";
            int    result  = UserManagementService.LoginToOnline(onlineClientDto, "0", out message);

            Assert.AreEqual(1, result);

            onlineClientDto.UniqueID  = _onlineClient.UniqueID;
            onlineClientDto.MachineIP = RandomHelper.GenerateString();
            result = UserManagementService.LoginToOnline(onlineClientDto, "0", out message);

            Assert.AreEqual(3, result);

            onlineClientDto.UniqueID  = _onlineClient.UniqueID;
            onlineClientDto.MachineIP = _onlineClient.MachineIP;
            onlineClientDto.Comments  = _onlineClient.Comments;
            result = UserManagementService.LoginToOnline(onlineClientDto, "0", out message);

            Assert.AreEqual(0, result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// add or update online info when login
        /// </summary>
        /// <param name="onlineClientDto"></param>
        /// <returns>0:sucess;1:error, same user login on other location;2:error, max user; 3:same user login in other location 4: can not get license data 5:license expired</returns>
        public int LoginToOnline(OnlineClientDto onlineClientDto, string isForce, out string message)
        {
            message = "";
            List <OnlineClient> onlineClientList = _OnlineClientRepository.Get(o => o.MachineIP == onlineClientDto.MachineIP && o.IsOnline == 1).ToList();

            foreach (OnlineClient onlineClient in onlineClientList)
            {
                //not selfservice login user
                if ((onlineClient.Comments == null || onlineClient.Comments.ToLower() != "selfservice login user") &&
                    string.Compare(onlineClient.UniqueID, onlineClientDto.UniqueID, true) != 0)
                {
                    //同一台机器上只能允许登陆1次,请退出后再登陆!
                    if (isForce == "0")
                    {
                        UserDto user = GetUserByID(onlineClient.UniqueID);
                        if (user != null)
                        {
                            message = user.LoginName;
                        }
                        return(1);
                    }
                    else
                    {
                        //onlineClient.IsOnline = 0;
                    }
                }
            }

            //get max value
            string        countName     = "OnlineUserCheckTimePeriod";
            string        countValue    = null;
            int           currentOnline = 0;
            SystemProfile systemProfile = null;
            SiteProfile   siteProfile   = _dbContext.Set <SiteProfile>().Where(s => s.Name == countName && s.Domain == onlineClientDto.Domain && s.Site == onlineClientDto.Site).FirstOrDefault();

            if (siteProfile != null && siteProfile.Value != null)
            {
                countValue    = siteProfile.Value;
                currentOnline = _OnlineClientRepository.Get(o => o.IsOnline == 1 && o.Domain == onlineClientDto.Domain && o.Site == onlineClientDto.Site).Count();
            }
            else
            {
                systemProfile = _dbContext.Set <SystemProfile>().Where(s => s.Name == countName && s.Domain == onlineClientDto.Domain).FirstOrDefault();
                if (systemProfile != null && systemProfile.Value != null)
                {
                    countValue    = systemProfile.Value;
                    currentOnline = _OnlineClientRepository.Get(o => o.IsOnline == 1 && o.Domain == onlineClientDto.Domain).Count();
                }
            }
            if (countValue != null)
            {
                //Max user count reached
                int profileMaxUserNumber = GetMaxOnlineUserCount(countValue);

                if (currentOnline >= profileMaxUserNumber)
                {
                    return(2);
                }
            }

            List <OnlineClient> onlineClientList2 = _OnlineClientRepository.Get(o => o.UniqueID == onlineClientDto.UniqueID && o.IsOnline == 1).ToList();

            foreach (OnlineClient onlineClient in onlineClientList2)
            {
                //not selfservice login user
                //if ((onlineClient.Comments == null || onlineClient.Comments.ToLower() != "selfservice login user")
                //    && (string.Compare(onlineClient.MachineIP, onlineClientDto.MachineIP, true) != 0
                //    || string.Compare(onlineClient.Comments, onlineClientDto.Comments, true) != 0))


                if (onlineClient.Comments != null && onlineClient.Comments.ToLower() != "selfservice login user" &&
                    string.Compare(onlineClient.MachineIP, onlineClientDto.MachineIP, true) != 0)
                {
                    //同一用户只能在一个地方登录
                    if (isForce == "0")
                    {
                        message = onlineClient.MachineName + "&" + onlineClient.MachineIP;
                        return(3);
                    }
                    else
                    {
                        //onlineClient.IsOnline = 0;
                    }
                }
            }

            //clear all offline
            List <OnlineClient> onlineClientList3 = _OnlineClientRepository.Get(o => o.UniqueID == onlineClientDto.UniqueID && o.IsOnline == 0).ToList();

            foreach (OnlineClient onlineClient in onlineClientList3)
            {
                _OnlineClientRepository.Delete(onlineClient);
            }
            _OnlineClientRepository.SaveChanges();

            //add or update online data
            string webUserFlag = "web login user";

            // check web license
            var webOnline = _OnlineClientRepository.Get(o => o.IsOnline == 1 && o.Domain == onlineClientDto.Domain && o.Comments == webUserFlag).Count();

            if (_license.IsSuccessed)
            {
                if (_license.IsExpired)
                {
                    return(5);
                }
                if (webOnline >= _license.MaxOnlineUserCount)
                {
                    return(2);
                }
            }
            else
            {
                return(4);
            }


            OnlineClient onlineClientOld = _OnlineClientRepository.Get(o => o.UniqueID == onlineClientDto.UniqueID && o.Comments != "selfservice login user").FirstOrDefault();

            if (onlineClientOld != null && onlineClientOld.IsOnline == 1)
            {
            }
            else
            {
                OnlineClient onlineClientNew = Mapper.Map <OnlineClientDto, OnlineClient>(onlineClientDto);
                onlineClientNew.RoleName = GetUserDefaultRole(new UserDto {
                    UniqueID = onlineClientDto.UniqueID, Domain = onlineClientDto.Domain
                });
                _OnlineClientRepository.Add(onlineClientNew);

                _OnlineClientRepository.SaveChanges();
            }

            return(0);
        }