/// <summary>
        /// 创建新的用户Session
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="ip"></param>
        /// <param name="mac"></param>
        /// <param name="stateEvent"></param>
        /// <param name="sessionEvent">触发创建的事件类型</param>
        /// <returns></returns>
        public UserSession CreateSession(string userID, string ip, string mac, LoginTypeEnum authType, UserSessionEventEnum sessionEvent)
        {
            UserSession session = new UserSession(userID);

            session.LogonInfo.IP       = ip;
            session.LogonInfo.MAC      = mac;
            session.LogonInfo.AuthType = authType;
            session.SessionEvent       = sessionEvent;

            try
            {
                lock (_sessions)
                {
                    _sessions.Add(session.SessionID, session);
                }
            }
            catch (Exception) { }

            /*--写事件日志开始--*/
            SysEvent evt = new SysEvent();

            evt.UserID    = session.User.UserID;
            evt.LoginName = session.User.LoginName;
            evt.IP        = session.LogonInfo.IP;
            evt.Record    = String.Format("CreateSession({0}, {1}, {2}, {3})", userID, ip, authType.ToString(), sessionEvent.ToString());
            evt.DoCreate();
            /*--写事件日志结束--*/

            return(session);
        }
Beispiel #2
0
        public UserData FindUserByFacebookUserId(LoginTypeEnum authenticationType, string userId)
        {
            var users = _mongoDb.GetCollection <UserData>("users").AsQueryable().ToList();

            var user = users.FirstOrDefault(x => x.UserId == userId);

            return(user);
        }
        /// <summary>
        /// 设置预登出
        /// </summary>
        /// <param name="logMode">登出模式</param>
        /// <param name="sessionID"></param>
        public void SetPrepRelease(string sessionID, LoginTypeEnum logMode)
        {
            UserSession userSession = _sessions[sessionID];

            if (userSession != null)
            {
                userSession.SessionEvent = UserSessionEventEnum.PrepTimeout;
            }
        }
Beispiel #4
0
 public HttpResponseMessage Register(string uName, string uPwd, string rePwd, LoginTypeEnum loginType = LoginTypeEnum.None)
 {
     return(base.WrapperTransaction((userId) => this._userLoginInSideService.Register(new UserLoginInSide
     {
         LoginType = (byte)loginType,
         LoginName = uName,
         LoginPwd = uPwd
     }, rePwd)));
 }
Beispiel #5
0
 /// <summary>
 /// 设置预释放(包含登录模式)
 /// </summary>
 /// <param name="sessionID"></param>
 public bool SetPrepRelease(string sessionID, LoginTypeEnum logMode)
 {
     try
     {
         Server.SetPrepRelease(sessionID, logMode);
         return(true);
     }
     catch (Exception ex)
     {
         return(false);
     }
 }
Beispiel #6
0
 public Member(string workerId, string workerPwd, string roleCode, string roleName,
               LoginTypeEnum loginType, string[] rolePermission, string workerName, string assistantID, string lastIp, string currentIp)
 {
     WorkerID    = workerId;
     WorkerPwd   = workerPwd;
     Role_Code   = roleCode;
     Role_Name   = roleName;
     LoginType   = loginType;
     MenuArray   = rolePermission;
     WorkerName  = workerName;
     AssistantID = assistantID;
     LastIp      = lastIp;
     CurrentIp   = currentIp;
 }
        /// <summary>
        /// 创建新的用户Session
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="ip"></param>
        /// <param name="mac"></param>
        /// <param name="stateEvent"></param>
        /// <returns></returns>
        public UserSession CreateSession(string userID, string ip, string mac, LoginTypeEnum authType)
        {
            UserSession[] orgSession = _sessions.Values.Where(s => s.User.UserID == userID).ToArray();
            UserSession   session;

            if (orgSession.Count() <= 0)
            {
                session = new UserSession(userID);

                session.LogonInfo.IP       = ip;
                session.LogonInfo.MAC      = mac;
                session.LogonInfo.AuthType = authType;

                if (authType == LoginTypeEnum.PCIE || authType == LoginTypeEnum.PCClient)
                {
                    session.SessionEvent = UserSessionEventEnum.Login;
                }

                try
                {
                    lock (_sessions)
                    {
                        _sessions.Add(session.SessionID, session);
                    }
                }
                catch (Exception) { }
            }
            else
            {
                session = orgSession[0];

                session.RefreshState();
            }

            /*--写事件日志开始--*/
            SysEvent evt = new SysEvent();

            evt.UserID    = session.User.UserID;
            evt.LoginName = session.User.LoginName;
            evt.IP        = session.LogonInfo.IP;
            evt.Record    = String.Format("CreateSession({0}, {1}, {2}, {3})", userID, ip, mac, authType.ToString());
            evt.DoCreate();
            /*--写事件日志结束--*/

            return(session);
        }
Beispiel #8
0
        /// <summary>
        /// Посылаем при нажатии кнопки "Вход через..." или "Вход" для стендэлон
        /// </summary>
        /// <param name="loginType"></param>
        /// <param name="login"></param>
        /// <param name="pass"></param>
        public void SendAuth(LoginTypeEnum loginType, string login = "", string pass = "")
        {
            var request = new NetRequest(PacketTypes.auth);
            request.AddParam("auth_type", loginType.ToString());
            switch (loginType)
            {
                case LoginTypeEnum.stand_alone:
                    request.AddParam("login", login);
                    request.AddParam("pass", pass);
                    break;
                case LoginTypeEnum.vk:
                    break;
                default:
                    break;
            }

            SendRequest(request);
        }
Beispiel #9
0
 //新加 2014-09-19,使用现在的方法,原来的留着
 public Member(string workerId, string workerPwd, string roleCode, string roleName,
               LoginTypeEnum loginType, string[] rolePermission, string parent_WorkerID, string parent_kf, string workerCode, string workerName, string assistantID, string lastIp, string currentIp, string moPhone, byte isSMSLogin)
 {
     WorkerID        = workerId;
     WorkerPwd       = workerPwd;
     Role_Code       = roleCode;
     Role_Name       = roleName;
     LoginType       = loginType;
     MenuArray       = rolePermission;
     Parent_kf       = parent_kf;
     WorkerCode      = workerCode;
     Parent_WorkerID = parent_WorkerID;
     WorkerName      = workerName;
     AssistantID     = assistantID;
     LastIp          = lastIp;
     CurrentIp       = currentIp;
     MoPhone         = moPhone;
     IsSMSLogin      = isSMSLogin;
 }
Beispiel #10
0
 public HttpResponseMessage Login(string openId, LoginTypeEnum loginType = LoginTypeEnum.None)
 {
     return(base.WrapperTransaction((userId) =>
     {
         var result = this._userLoginOutSideService.Login(loginType, openId);
         var data = new Result <ViewUserData>
         {
             Code = result.Code,
             Msg = result.Msg,
             Data = result.Code == ResultEnum.Error? null: new ViewUserData()
             {
                 token = base.GetToken(result.Data),
                 liveurl = "http://www.xxx.com/room/" + result.Data,
                 playurl = "http://www.xxx.com/" + result.Data
             }
         };
         return data;
     }));
 }
Beispiel #11
0
        /// <summary>
        /// Посылаем при нажатии кнопки "Вход через..." или "Вход" для стендэлон
        /// </summary>
        /// <param name="loginType"></param>
        /// <param name="login"></param>
        /// <param name="pass"></param>
        public void SendAuth(LoginTypeEnum loginType, string login = "", string pass = "")
        {
            var request = new NetRequest(PacketTypes.auth);

            request.AddParam("auth_type", loginType.ToString());
            switch (loginType)
            {
            case LoginTypeEnum.stand_alone:
                request.AddParam("login", login);
                request.AddParam("pass", pass);
                break;

            case LoginTypeEnum.vk:
                break;

            default:
                break;
            }

            SendRequest(request);
        }
        public void Authenticate(LoginTypeEnum type)
        {
            var account = AccountStore.Create().FindAccountsForService(Constants.AppName).FirstOrDefault();

            if (account != null)
            {
                return;
            }

            switch (type)
            {
            case LoginTypeEnum.Facebook:
                FacebookAuth();
                break;

            case LoginTypeEnum.Twitter:
                TwitterAuth();
                break;

            case LoginTypeEnum.Instagram:
                InstagramAuth();
                break;

            case LoginTypeEnum.Google:
                GoogleAuth();
                break;

            default:
                break;
            }

            Authenticator.Completed += Authenticator_Completed;
            Authenticator.Error     += Authenticator_Error;

            var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();

            presenter.Login(Authenticator);
        }
 public FlyBirdIdentity(LoginTypeEnum authType, bool isAuth, string name)
 {
     this._AuthenticationType = authType.ToString();
     this._IsAuthenticated    = isAuth;
     this._Name = name;
 }
        public UserLogonInfo(SysUser user)
        {
            this.user = user;

            AuthType = LoginTypeEnum.Unknown;
        }
Beispiel #15
0
        public async Task <LoginResponse> Login(LoginTypeEnum loginType, string userId, string accessToken, bool login = true)
        {
            HttpClient client = new HttpClient();
            var        me     = new LoginResponse();

            if (loginType == LoginTypeEnum.Google)
            {
                #region Google authentication

                if (login)
                {
                    var googleTokenUrl      = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=";
                    var googleUri           = new Uri(googleTokenUrl + accessToken);
                    var responseGoogleToken = await client.GetAsync(googleUri);

                    if (responseGoogleToken.IsSuccessStatusCode)
                    {
                        string contentTOKEN = await responseGoogleToken.Content.ReadAsStringAsync();

                        dynamic tokenObjGoogle = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(contentTOKEN);

                        me.Id                 = tokenObjGoogle["sub"];
                        me.Email              = tokenObjGoogle["email"];
                        me.Name               = tokenObjGoogle["name"];
                        me.IsVerified         = true;
                        me.AuthenticationType = LoginTypeEnum.Google;
                        me.Role               = "User";
                        me.Token              = Guid.NewGuid().ToString();

                        var user = _userRepository.FindOrCreateUser(me);
                        me.Role  = user.Role;
                        me.Token = user.Token;

                        return(me);
                    }
                }
                else
                {
                    var user = _userRepository.FindUserByToken(accessToken);

                    if (user != null && user.AuthenticationType == LoginTypeEnum.Google)
                    {
                        me.Id                 = user.UserId;
                        me.Email              = user.Email;
                        me.Name               = user.Name;
                        me.IsVerified         = true;
                        me.AuthenticationType = user.AuthenticationType;
                        me.Role               = user.Role;
                        me.Token              = user.Token;
                        return(me);
                    }
                    else
                    {
                        return(null);
                    }
                }

                return(null);

                #endregion
            }
            else
            {
                #region Facebook

                if (login)
                {
                    string verifyTokenEndPoint = string.Format("https://graph.facebook.com/me?access_token={0}&fields=email,name", accessToken);
                    string verifyAppEndpoint   = string.Format("https://graph.facebook.com/app?access_token={0}", accessToken);

                    Uri uri = new Uri(verifyTokenEndPoint);
                    HttpResponseMessage response = await client.GetAsync(uri);

                    if (response.IsSuccessStatusCode)
                    {
                        string content = await response.Content.ReadAsStringAsync();

                        dynamic userObj = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(content);

                        uri      = new Uri(verifyAppEndpoint);
                        response = await client.GetAsync(uri);

                        content = await response.Content.ReadAsStringAsync();

                        dynamic appObj = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(content);

                        me.Id                 = userObj["id"];
                        me.Email              = userObj["email"];
                        me.Name               = userObj["name"];
                        me.IsVerified         = true;
                        me.AuthenticationType = LoginTypeEnum.Facebook;
                        me.Role               = "User";
                        me.Token              = Guid.NewGuid().ToString();

                        var userData = _userRepository.FindOrCreateUser(me);
                        me.Role  = userData.Role;
                        me.Token = userData.Token;

                        return(me);
                    }
                    return(null);
                }
                else
                {
                    var user = _userRepository.FindUserByToken(accessToken);

                    if (user != null && user.AuthenticationType == LoginTypeEnum.Facebook)
                    {
                        me.Role  = user.Role;
                        me.Token = user.Token;
                        return(me);
                    }
                    else
                    {
                        return(null);
                    }
                }

                #endregion
            }
        }
        /// <summary>
        /// 第三方用户登录,如不存在,新建用户
        /// </summary>
        public Result <int> Login(LoginTypeEnum loginType, string openId)
        {
            var result = new Result <int>();

            #region check params
            if (string.IsNullOrEmpty(openId))
            {
                result.Msg = "OpenId不能为空";
                return(result);
            }
            if (loginType == LoginTypeEnum.None)
            {
                result.Msg = "登录类型无效";
                return(result);
            }
            #endregion

            var now        = DateTime.Now;
            var loginModel = base.CurrentRepository.Get(m => m.LoginType == (int)loginType && m.OpenId == openId).FirstOrDefault();
            if (loginModel != null)
            {
                var userInfo = this._userBaseInfoService.Get(m => m.LoginId == loginModel.ID).FirstOrDefault();
                if (userInfo == null)
                {
                    result.Msg = "用户基础信息无效";
                    return(result);
                }
                loginModel.LastLoginTime = now;
                base.CurrentRepository.Update(loginModel);
                result.Data = userInfo.ID;
            }
            else
            {
                #region 插入新的用户
                var iRet1 = base.CurrentRepository.Add(new UserLoginOutSide
                {
                    LoginType     = (byte)loginType,
                    OpenId        = openId,
                    LastLoginTime = now,
                    InsertTime    = now,
                    UpdateTime    = now
                });
                if (iRet1.ID <= 0)
                {
                    result.Msg = "注册失败1";
                    return(result);
                }
                var iRet2 = this._userBaseInfoService.Add(new UserBase()
                {
                    LoginId    = iRet1.ID,
                    UserNumber = string.Format(Const.UserNumber, LoginTypeEnum.M, iRet1.ID.ToString().PadLeft(7, '0')),
                    NickName   = "我是呆萌贱",
                    UserLevel  = 0,
                    Fans       = 0,
                    InsertTime = now,
                    UpdateTime = now
                });
                if (iRet2.Code == ResultEnum.Error || iRet2.Data.ID <= 0)
                {
                    result.Msg = "注册失败2";
                    return(result);
                }
                var iRet3 = this._userAccountService.Add(new UserAccount()
                {
                    UserId       = iRet2.Data.ID,
                    Gold         = 0,
                    Contribution = 0,
                    Profit       = 0,
                    InsertTime   = now,
                    UpdateTime   = now
                });
                if (iRet3.Code == ResultEnum.Error || iRet3.Data.UserId <= 0)
                {
                    result.Msg = "注册失败3";
                    return(result);
                }
                result.Data = iRet2.Data.ID;
                #endregion
            }
            result.Code = ResultEnum.Success;
            return(result);
        }