Ejemplo n.º 1
0
        public void Cb(string type)
        {
            string target = Request.QueryString["target"];

            if (string.IsNullOrEmpty(target))
            {
                target = GetUrl("/");
            }
            OAuth2Provider provider = GetProvider(type);

            if (provider != null)
            {
                OAuth2TokenAccess token = provider.Access() as OAuth2TokenAccess;
                M.OAuth2Member    user  = provider.GetUserInfo(token);
                if (!string.IsNullOrEmpty(user.UserId))
                {
                    M.Member      member;
                    M.LoginStatus status = M.OAuth2Member.Login(DataSource, type.ToLower(), user.UserId, ClientIp, out member);
                    if (status == M.LoginStatus.Success)
                    {
                        PassportAuthentication.SetAuthCookie(true, false, member);
                        OnLogined(member.Id);
                        Refresh(target);
                    }
                    else
                    {
                        if (status == M.LoginStatus.NeedBind)
                        {
                            this["Oauth2Type"]   = user.Type;
                            this["Oauth2UserId"] = user.UserId;
                            this["Target"]       = target;
                            this["Sms"]          = SMSCaptchaSection.GetSection();
                            Render("oauth2.html");
                        }
                        else
                        {
                            Redirect(GetUrl("/login"));
                        }
                    }
                }
                else
                {
                    Redirect(GetUrl("/login"));
                }
            }
            else
            {
                Redirect(GetUrl("/login"));
            }
        }
Ejemplo n.º 2
0
 public void Bind()
 {
     try
     {
         //string target = Request.Form["Target"];
         //if (string.IsNullOrEmpty(target))
         //    target = GetUrl("/");
         string         type   = Request.Form["Oauth2Type"];
         string         userId = Request.Form["Oauth2UserId"];
         M.RegisterType rt     = (M.RegisterType) int.Parse(Request.Form["RegisterType"]);
         M.Member       member = DbTable.Load <M.Member>(Request.Form);
         if (rt == M.RegisterType.Mobile)
         {
             if (!V.MobileHash.Equals(DataSource, member.Mobile, V.MobileHash.Register, Request.Form["Captcha"]))
             {
                 SetResult((int)M.LoginStatus.CaptchaError);
                 return;
             }
             member.VerMob = true;
         }
         string password = member.Password;
         member.ParentId     = Utility.GetReference(this, DataSource);
         member.Approved     = true;
         member.CreationDate = DateTime.Now;
         DataStatus status = M.OAuth2Member.Register(DataSource, type, userId, member, rt);
         if (status == DataStatus.Success)
         {
             M.LoginStatus state = M.OAuth2Member.Login(DataSource, type, userId, ClientIp, out member);
             if (state == M.LoginStatus.Success)
             {
                 PassportAuthentication.SetAuthCookie(true, false, member);
                 OnLogined(member.Id);
                 SetResult(true);
             }
             else
             {
                 SetResult((int)state);
             }
         }
         else
         {
             SetResult((int)status);
         }
     }
     catch (Exception)
     {
         SetResult(false);
     }
 }