Example #1
0
        public override void After(object returnValue, MethodInfo method, object[] args, object target)
        {
            Microblog blog = args[0] as Microblog;

            if (blog == null || blog.ParentId > 0)
            {
                return;
            }
            if (blog.User == null || blog.User.Id <= 0)
            {
                return;
            }

            UserConnect uc = connectService.GetConnectInfo(blog.User.Id, typeof(WeiboConnect).FullName);

            // 1. 检查:用户是否绑定,是否允许同步
            if (uc == null)
            {
                return;             // 绑定
            }
            if (uc.NoSync == 1)
            {
                logger.Info("取消同步,因为用户明确禁止");
                return;
            }

            // 2. 同步
            WeiboConnect connect = AuthConnectFactory.GetConnect(typeof(WeiboConnect).FullName) as WeiboConnect;

            connect.Publish(uc.AccessToken, _blogContent, getPicDiskPath(blog.Pic));
        }
Example #2
0
        /// <summary>抓取远程头像</summary>
        /// <param name="user"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public virtual Boolean FetchAvatar(IManageUser user, String url = null)
        {
            if (url.IsNullOrEmpty())
            {
                url = user.GetValue("Avatar") as String;
            }
            //if (av.IsNullOrEmpty()) throw new Exception("用户头像不存在 " + user);

            // 尝试从用户链接获取头像地址
            if (url.IsNullOrEmpty() || !url.StartsWithIgnoreCase("http"))
            {
                var list = UserConnect.FindAllByUserID(user.ID);
                url = list.OrderByDescending(e => e.UpdateTime)
                      .Where(e => !e.Avatar.IsNullOrEmpty() && e.Avatar.StartsWithIgnoreCase("http"))
                      .FirstOrDefault()?.Avatar;
            }

            if (url.IsNullOrEmpty())
            {
                return(false);
            }
            if (!url.StartsWithIgnoreCase("http"))
            {
                return(false);
            }

            // 不要扩展名
            var set  = Setting.Current;
            var dest = set.AvatarPath.CombinePath(user.ID + ".png").GetBasePath();

            //// 头像是否已存在
            //if (File.Exists(dest)) return false;

            LogProvider.Provider?.WriteLog(user.GetType(), "抓取头像", $"{url} => {dest}", user.ID, user + "");

            dest.EnsureDirectory(true);

            try
            {
                //var wc = new WebClientX();
                //Task.Factory.StartNew(() => wc.DownloadFileAsync(url, av)).Wait(5000);

                var client = new HttpClient();
                var rs     = client.GetAsync(url).Result;
                var buf    = rs.Content.ReadAsByteArrayAsync().Result;
                File.WriteAllBytes(dest, buf);

                // 更新头像
                user.SetValue("Avatar", "/Sso/Avatar/" + user.ID);
                (user as IEntity)?.Update();

                return(true);
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
            }

            return(false);
        }
Example #3
0
        public virtual Result Create( User user, String connectType, AccessToken token )
        {
            UserConnect connect = GetConnectInfo( token.Uid, connectType );
            if (connect != null) {
                return new Result( "本帐号已经绑定: uid=" + token.Uid + ",connectType=" + connectType );
            }

            UserConnect x = new UserConnect();

            x.User = user;
            x.ConnectType = connectType;

            x.Uid = token.Uid;
            x.Name = token.Name;

            x.AccessToken = token.Token;
            x.RefreshToken = token.RefreshToken;
            x.ExpiresIn = token.ExpiresIn;
            x.Scope = token.Scope;

            Result result = x.insert();

            if (result.IsValid) {
                user.IsBind = 1;
                user.update();
            }

            return result;
        }
Example #4
0
        /// <summary>取消绑定</summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual ActionResult UnBind(String id)
        {
            var user = Provider.Current;

            if (user == null)
            {
                throw new Exception("未登录!");
            }

            var binds = UserConnect.FindAllByUserID(user.ID);

            var uc = binds.FirstOrDefault(e => e.Provider.EqualIgnoreCase(id));

            if (uc != null)
            {
                uc.Enable = false;
                uc.Update();
            }

#if __CORE__
            var url = Request.Headers["Referer"].FirstOrDefault() + "";
#else
            var url = Request.UrlReferrer + "";
#endif
            if (url.IsNullOrEmpty())
            {
                url = "/";
            }

            return(Redirect(url));
        }
Example #5
0
        public ActionResult Binds()
        {
            var user = ManageProvider.User as XCode.Membership.User;

            if (user == null)
            {
                return(RedirectToAction("Login"));
            }

            user = XCode.Membership.User.FindByKeyForEdit(user.ID);
            if (user == null)
            {
                throw new Exception("无效用户编号!");
            }

            // 第三方绑定
            var ucs = UserConnect.FindAllByUserID(user.ID);
            var ms  = OAuthConfig.Current.Items.Where(e => !e.AppID.IsNullOrEmpty()).ToList();

            var model = new BindsModel
            {
                Name       = user.Name,
                Connects   = ucs,
                OAuthItems = ms,
            };

            return(View(model));
        }
        /// <summary>
        /// Approve or reject record
        /// </summary>
        /// <param name="document"></param>
        /// <returns></returns>
        public async Task <JsonResult> ApproveOrRejectRecord(DocumentModel document)
        {
            // Get user call api
            UserContext context = UserConnect.GetContext(HttpContext);
            UserMobile  user    = UserConnect.GetUserConnected(context.Token, context.Ip, context.UserAgent);

            try
            {
                var approvalsMgmt = GetApprove(user);
                var recordId      = "Purchase Header: 1," + document.IdDoc;
                if (document.IsApprove)
                {
                    approvalsMgmt.ApproveRecordApprovalRequest(recordId);
                }
                else
                {
                    approvalsMgmt.RejectRecordApprovalRequest(recordId);
                }
                return(new JsonResult {
                    Data = true, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                });
            }
            catch (Exception ex)
            {
                return(new JsonResult {
                    Data = false, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                });

                throw ex;
            }
        }
Example #7
0
        public static string GetBindUserNotifyUrl(UserConnect connectInfo, string userName, string birthday, int gender, string email, int isPublicEmail, int isUsedQQAvatar, string type)
        {
            DiscuzCloudConfigInfo       config = DiscuzCloudConfigInfo.Current;
            List <DiscuzOAuthParameter> list   = new List <DiscuzOAuthParameter>();

            list.Add(new DiscuzOAuthParameter("s_id", string.Empty));
            list.Add(new DiscuzOAuthParameter("openid", connectInfo.OpenId));
            list.Add(new DiscuzOAuthParameter("oauth_consumer_key", config.Connectappid));
            list.Add(new DiscuzOAuthParameter("u_id", connectInfo.Uid.ToString()));
            list.Add(new DiscuzOAuthParameter("username", userName));
            list.Add(new DiscuzOAuthParameter("birthday", birthday));
            string text = "unknown";

            text = ((gender == 1) ? "male" : text);
            text = ((gender == 2) ? "female" : text);
            list.Add(new DiscuzOAuthParameter("sex", text));
            list.Add(new DiscuzOAuthParameter("email", email));
            list.Add(new DiscuzOAuthParameter("is_public_email", isPublicEmail.ToString()));
            list.Add(new DiscuzOAuthParameter("is_use_qq_avatar", isUsedQQAvatar.ToString()));
            list.Add(new DiscuzOAuthParameter("statreferer", "forum"));
            list.Add(new DiscuzOAuthParameter("avatar_input", "234"));
            list.Add(new DiscuzOAuthParameter("avatar_agent", "23432"));
            list.Add(new DiscuzOAuthParameter("type", type));
            list.Add(new DiscuzOAuthParameter("site_ucenter_id", config.Sitekey));
            string str  = "";
            string str2 = DiscuzCloud.GenerateNotifySignature(list, config.Connectappid + "|" + config.Connectappkey, out str);

            return(CONNECT_URL + "notify/user/bind?" + str + "sig=" + str2);
        }
Example #8
0
        public ActionResult Binds()
        {
            var user = ManageProvider.User as XCode.Membership.User;

            if (user == null)
            {
                return(RedirectToAction("Login"));
            }

            user = XCode.Membership.User.FindByKeyForEdit(user.ID);
            if (user == null)
            {
                throw new Exception("无效用户编号!");
            }

            // 第三方绑定
            var ucs = UserConnect.FindAllByUserID(user.ID);
            var ms  = OAuthConfig.GetValids();

            var model = new BindsModel
            {
                Name       = user.Name,
                Connects   = ucs,
                OAuthItems = ms,
            };

            if (IsJsonRequest)
            {
                return(Ok(data: model));
            }

            return(View(model));
        }
        public override void Execute()
        {
            #line 5 "..\..\Areas\Admin\Views\UserConnect\_List_Search.cshtml"

            var fact = ViewBag.Factory as IEntityFactory;
            var page = ViewBag.Page as Pager;


            #line default
            #line hidden
            WriteLiteral("\r\n<div");

            WriteLiteral(" class=\"form-group\"");

            WriteLiteral(">\r\n    <label");

            WriteLiteral(" for=\"provider\"");

            WriteLiteral(" class=\"control-label\"");

            WriteLiteral(">提供商:</label>\r\n");

            WriteLiteral("    ");


            #line 11 "..\..\Areas\Admin\Views\UserConnect\_List_Search.cshtml"
            Write(Html.ForDropDownList("provider", UserConnect.FindAllProviderName(), Request["provider"], "全部", true));


            #line default
            #line hidden
            WriteLiteral("\r\n</div>\r\n");
        }
Example #10
0
        static void Main(string[] args)
        {
            var         process  = new Process();
            TcpListener listener = null;

            try
            {
                listener = new TcpListener(IPAddress.Parse(ServerParameters.GetIPAdr()), ServerParameters.GetPort());
                listener.Start();
                Console.WriteLine("Ожидание подключений...");

                while (true)
                {
                    TcpClient client      = listener.AcceptTcpClient();
                    var       userConnect = new UserConnect(client, new TXTTest());

                    //process.AddConnect


                    Thread clientThread = new Thread(new ThreadStart(userConnect.Process));
                    clientThread.Start();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (listener != null)
                {
                    listener.Stop();
                }
            }
        }
Example #11
0
        /// <summary>取消绑定</summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual ActionResult UnBind(String id)
        {
            var user = Provider.Current;

            if (user == null)
            {
                throw new Exception("未登录!");
            }

            var binds = UserConnect.FindAllByUserID(user.ID);

            foreach (var uc in binds)
            {
                if (uc.Provider.EqualIgnoreCase(id))
                {
                    uc.Enable = false;
                    uc.Update();
                }
            }

            if (IsJsonRequest)
            {
                return(Ok());
            }

            var url = Provider.GetReturnUrl(Request, true);

            if (url.IsNullOrEmpty())
            {
                url = "/";
            }

            return(Redirect(url));
        }
Example #12
0
        /// <summary>
        /// Get value to check
        /// </summary>
        /// <param name="document"></param>
        /// <returns></returns>
        public async Task <JsonResult> GetValueToCheck(DocumentModel document)
        {
            // Get user call api
            UserContext context = UserConnect.GetContext(HttpContext);
            UserMobile  user    = UserConnect.GetUserConnected(context.Token, context.Ip, context.UserAgent);
            LinesPurchasOrders_PortClient linesPurchasOrders_PortClient = GetLines(user);
            List <DocumentValuesModel>    documentValues = new List <DocumentValuesModel>();

            try
            {
                var lines = linesPurchasOrders_PortClient.ReadMultiple(null, null, 0).Where(art => art.Document_No == document.IdDoc.ToString());

                documentValues.Add(new DocumentValuesModel {
                    Name = "Total_Amount_Excl_VAT", Value = lines.FirstOrDefault().Total_Amount_Excl_VAT.ToString()
                });
                documentValues.Add(new DocumentValuesModel {
                    Name = "Total_Amount_Incl_VAT", Value = lines.FirstOrDefault().Total_Amount_Incl_VAT.ToString()
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(new JsonResult {
                Data = documentValues, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Example #13
0
        //public static int CreateUserConnectInfo(UserConnect userConnectInfo)
        //{
        //    return UserConnect.Insert(userConnectInfo);
        //}

        public static int UpdateUserConnectInfo(UserConnect userConnectInfo)
        {
            if (userConnectInfo.OpenId.Length < 32 || userConnectInfo.Token.Length < 16 || userConnectInfo.Secret.Length < 16)
            {
                return(-1);
            }
            return(UserConnect.Update(userConnectInfo));
        }
Example #14
0
 public static UserConnect GetUserConnectInfo(string openId)
 {
     if (openId.Length < 32)
     {
         return(null);
     }
     return(UserConnect.FindByOpenId(openId));
 }
Example #15
0
 public static int DeleteUserConnectInfo(int userId)
 {
     if (userId < 1)
     {
         return(-1);
     }
     return(UserConnect.Delete(UserConnect._.Uid == userId));
 }
Example #16
0
 public static int DeleteUserConnectInfo(string openId)
 {
     if (openId.Length < 32)
     {
         return(-1);
     }
     return(UserConnect.Delete(UserConnect._.OpenId == openId));
 }
Example #17
0
 public static UserConnect GetUserConnectInfo(int userId)
 {
     if (userId < 0)
     {
         return(null);
     }
     return(UserConnect.FindByUid(userId));
 }
Example #18
0
        /// <summary>登录成功</summary>
        /// <param name="client">OAuth客户端</param>
        /// <param name="service">服务提供者。可用于获取HttpContext成员</param>
        /// <returns></returns>
        public virtual String OnLogin(OAuthClient client, IServiceProvider service)
        {
            var openid = client.OpenID;

            if (openid.IsNullOrEmpty())
            {
                openid = client.UserName;
            }

            // 根据OpenID找到用户绑定信息
            var uc = UserConnect.FindByProviderAndOpenID(client.Name, openid);

            if (uc == null)
            {
                uc = new UserConnect {
                    Provider = client.Name, OpenID = openid
                }
            }
            ;

            uc.Fill(client);

            // 强行绑定,把第三方账号强行绑定到当前已登录账号
            var forceBind = false;
            var req       = service.GetService <HttpRequest>();

            if (req != null)
            {
                forceBind = req["sso_action"].EqualIgnoreCase("bind");
            }

            // 检查绑定
            var user = Provider.FindByID(uc.UserID);

            if (forceBind || user == null || !uc.Enable)
            {
                user = OnBind(uc, client);
            }

            // 填充昵称等数据
            Fill(client, user);

            if (user is IAuthUser user3)
            {
                user3.Save();
            }
            uc.Save();

            if (!user.Enable)
            {
                throw new InvalidOperationException("用户已禁用!");
            }

            // 登录成功,保存当前用户
            Provider.Current = user;

            return(SuccessUrl);
        }
        public async Task <ActionResult> GetDocuments()
        {
            // Get user call api
            UserContext          context        = UserConnect.GetContext(HttpContext);
            UserMobile           user           = UserConnect.GetUserConnected(context.Token, context.Ip, context.UserAgent);
            List <DocumentModel> listsDocuments = new List <DocumentModel>();

            try
            {
                var purchaseOrders_PortClient = GetSalesOrder(user);
                // filter on statut

                PurchaseOrders_Filter fi = new PurchaseOrders_Filter();
                fi.Field    = PurchaseOrders_Fields.Status;
                fi.Criteria = "Pending Approval";
                PurchaseOrders_Filter[] fiArray = new PurchaseOrders_Filter[] { fi };

                var results = await purchaseOrders_PortClient.ReadMultipleAsync(fiArray, null, 0);

                var approvalsMgmt = GetApprove(user);

                var recordlink = GetRecordLink(user);

                RecordLinkPage_Filter   rlp      = new RecordLinkPage_Filter();
                RecordLinkPage_Filter[] rlparray = new RecordLinkPage_Filter[] { rlp };


                foreach (var sale in results.ReadMultiple_Result1)
                {
                    var recordId = "Purchase Header: 1," + sale.No;
                    // check if user connected can approve a doc
                    if (approvalsMgmt.HasOpenApprovalEntriesForCurrentUser(recordId))
                    {
                        var docs = recordlink.ReadMultiple(rlparray, null, 0).Where(d => d.Record_ID == recordId);
                        listsDocuments.AddRange(docs.Select(d => new DocumentModel()
                        {
                            IdDoc           = sale.No,
                            VendorName      = sale.Buy_from_Vendor_Name,
                            VendorInvoiceNo = sale.Vendor_Invoice_No,
                            VendorShipNo    = sale.Vendor_Shipment_No,
                            DocumentDate    = sale.Document_Date.ToString(),
                            DocName         = d.Description,
                            Url             = d.URL1,
                            DocDate         = d.Created,
                            DocSatut        = ((EnumStatut.Values)d.Statut).GetBool()
                        }).ToList());
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(new JsonResult {
                Data = listsDocuments, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Example #20
0
        /// <summary>绑定用户</summary>
        /// <param name="uc"></param>
        /// <param name="client"></param>
        public virtual IManageUser OnBind(UserConnect uc, OAuthClient client)
        {
            var prv = Provider;

            // 如果未登录,需要注册一个
            var user = prv.Current;

            if (user == null)
            {
                var set = Setting.Current;
                if (!set.AutoRegister)
                {
                    throw new InvalidOperationException("绑定要求本地已登录!");
                }

                // 先找用户名,如果存在,就加上提供者前缀,直接覆盖
                var name = client.UserName;
                if (!name.IsNullOrEmpty())
                {
                    user = prv.FindByName(name);
                    if (user != null)
                    {
                        name = client.Name + "_" + name;
                        user = prv.FindByName(name);
                    }
                }
                else
                // QQ、微信 等不返回用户名
                {
                    // OpenID和AccessToken不可能同时为空
                    var openid = client.OpenID;
                    if (openid.IsNullOrEmpty())
                    {
                        openid = client.AccessToken;
                    }

                    // 过长,需要随机一个较短的
                    var num = openid.GetBytes().Crc();

                    name = client.Name + "_" + num.ToString("X8");
                    user = prv.FindByName(name);
                }

                if (user == null)
                {
                    // 新注册用户采用魔方默认角色
                    var rid = set.DefaultRole;

                    // 注册用户,随机密码
                    user = prv.Register(name, Rand.NextString(16), rid, true);
                }
            }

            uc.UserID = user.ID;
            uc.Enable = true;

            return(user);
        }
Example #21
0
        private List <UserConnect> getUserConnects(List <User> users)
        {
            if (users.Count == 0)
            {
                return(new List <UserConnect>());
            }

            String ids = strUtil.GetIds(users);

            return(UserConnect.find("UserId in (" + ids + ")").list());
        }
Example #22
0
        /// <summary>
        /// 获取认证结果
        /// </summary>
        /// <param name="uc"></param>
        /// <returns></returns>
        private AuthenticateResult GetAuthenticateResult(UserConnect uc)
        {
            var user = new ClaimsPrincipal(new ClaimsIdentity(new[]
            {
                new Claim(OAuthSignInAuthenticationDefaults.Sub, uc.UserID.ToString()),
            }, IAMAuthenticationDefaults.AuthenticationScheme));

            var ticket = new AuthenticationTicket(user, IAMAuthenticationDefaults.AuthenticationScheme);

            return(AuthenticateResult.Success(ticket));
        }
Example #23
0
        private void checkAccessToken(UserConnect x, AccessToken token)
        {
            x.AccessToken  = token.Token;
            x.RefreshToken = token.RefreshToken;
            x.ExpiresIn    = token.ExpiresIn;
            x.Scope        = token.Scope;

            // 重新获取access token之后,服务器会自动延续授权时间
            x.Updated = DateTime.Now;

            x.update();
        }
Example #24
0
        private void LoginButton_Click(object sender, EventArgs e)
        {
            //validate user input
            if (Validation.isCredentialValid(usernameTxtBox, passwordTxtBox, errorProvider1))
            {
                string      errorMsg;
                UserConnect userConnect = new UserConnect();

                userRole = userConnect.Login(usernameTxtBox.Text.Trim(), passwordTxtBox.Text.Trim(), out errorMsg);
                if (!userConnect.isLoginSuccessfull)
                {
                    errorProvider1.SetError(usernameTxtBox, "Invalid Username or Password"); return;
                }
                switch (userRole)
                {
                case Models.Objects.UserObject.UserRole.Admin:

                    Forms.Admin.AdminContainer adminContainer = new Forms.Admin.AdminContainer();
                    adminContainer.AdminFullName = userConnect.fullName;
                    this.Hide();
                    adminContainer.Show();

                    break;

                case Models.Objects.UserObject.UserRole.Instructor:

                    Forms.Instructor.InstructorContainer instructorContainer = new Forms.Instructor.InstructorContainer();
                    instructorContainer.InstructorFullName = userConnect.fullName;
                    this.Hide();
                    instructorContainer.Show();

                    break;

                case Models.Objects.UserObject.UserRole.Student:

                    Forms.Student.StudentContainer studentContainer = new Forms.Student.StudentContainer();
                    studentContainer.StudentFullName = userConnect.fullName;
                    this.Hide();
                    studentContainer.Show();

                    break;

                default:
                    break;
                }
            }
            //if valid get user fullName and open Admin, Instructor or Student form
            //else show error msg
        }
Example #25
0
        private void processLogin(AuthConnect connect, String code)
        {
            if (ctx.viewer.IsLogin)
            {
                echoError("对不起,您已经登录");
                return;
            }

            AccessToken accessToken = OAuthClient.New().GetAccessToken(connect, code, connect.HttpMethod_AccessToken);

            logger.Info("accessToken=" + accessToken.Token);
            logger.Info("uid=" + accessToken.Uid);
            logger.Info("refresh_token=" + accessToken.RefreshToken);
            logger.Info("expires_in=" + accessToken.ExpiresIn);
            logger.Info("scope=" + accessToken.Scope);

            String uid = connect.GetUid(accessToken);

            // 1) 检查网站中是否有此用户
            UserConnect x = connectService.GetConnectInfo(uid, connect.GetType().FullName);

            // 第一次登录
            if (x == null)
            {
                try {
                    loadUserProfile(connect, accessToken);
                }
                catch (HttpClientException ex) {
                    if (ex.Message.IndexOf("applications over the unaudited use restrictions") > 0)
                    {
                        echo(getTestRestrictionsMsg("登录"));
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            // 其他:获取用户信息,然后登录
            else
            {
                checkAccessToken(x, accessToken);

                LoginTime expiration = LoginTime.OneWeek;
                loginService.Login(x.User, x.Id, expiration, ctx.Ip, ctx);

                echoRedirect("登录成功", "/");
            }
        }
Example #26
0
 void Start()
 {
     if (instance == null)
     {
         instance = this;
     }
     else if (instance != this)
     {
         //잘못된 인스턴스를 가르키고 있을 경우
         Destroy(gameObject);
     }
     DontDestroyOnLoad(this);
     userId = GPGSManager.mainId;
     CreateUser();
 }
Example #27
0
        public virtual Task DeleteAccountAsync(IUser user)
        {
            XTrace.WriteLine($"删除用户信息:{(user as TUser)}");

            if (user == null || user.ID < 1)
            {
                throw ApiException.Common(_requestLocalizer["The user was not found"]);
            }

            (user as TUser)?.Delete();
            var ucs = UserConnect.FindAllByUserID(user.ID);

            ucs.Delete();

            return(Task.CompletedTask);
        }
Example #28
0
        public ActionResult Login(string username, string password)
        {
            UserConnect  uc      = new UserConnect();
            LoginMessage message = uc.Login(username, password);

            if (message.GetResult())
            {
                Globals.PRESENT_USER = message.GetUser();
                return(View("~/Views/Home/Index.cshtml"));
            }
            else
            {
                ViewBag.serverResponse = message.GetText();
                return(View("Index"));
            }
        }
Example #29
0
        public override void After(object returnValue, MethodInfo method, object[] args, object target)
        {
            Microblog blog = args[0] as Microblog;

            if (blog == null || blog.ParentId > 0)
            {
                return;
            }
            if (blog.User == null || blog.User.Id <= 0)
            {
                return;
            }

            if (QQWeiboJobHelper.IsQQWeiboSync(blog.Id))
            {
                return;                                            // 是否已经同步过
            }
            UserConnect uc = ObjectContext.Create <UserConnectService>()
                             .GetConnectInfo(blog.User.Id, typeof(QQWeiboConnect).FullName);

            // 1. 检查:用户是否绑定,是否允许同步
            if (uc == null)
            {
                return;             // 绑定
            }
            if (uc.NoSync == 1)
            {
                logger.Info("取消同步,因为用户明确禁止");
                return;
            }

            // 2. 获取 access token
            AccessToken x = new AccessToken();

            x.Token = uc.AccessToken;
            x.Uid   = uc.Uid;

            // 3. 同步
            QQWeiboConnect connect = AuthConnectFactory.GetConnect(typeof(QQWeiboConnect).FullName) as QQWeiboConnect;

            connect.Publish(x, _blogContent, getPicDiskPath(blog.Pic));

            // 设置已经同步标记
            QQWeiboJobHelper.AddQQWeiboSyncItem(blog.Id);
        }
Example #30
0
        public ApiResult <string> UnbindOAuth([FromQuery] string id)
        {
            var uc = UserConnect.FindByKey(id);

            if (uc == null)
            {
                throw ApiException.Common(RequestLocalizer["Data not found"]);
            }

            if (!IsSupperAdmin && uc.UserID != AppUser.ID)
            {
                throw ApiException.Common(RequestLocalizer["No permission"]);
            }

            uc.Delete();

            return(ApiResult.Ok());
        }
Example #31
0
        private void BindLoginedUser()
        {
            this.userconnectinfo = DiscuzCloud.GetUserConnectInfo(this.openid);
            if (this.userconnectinfo == null || this.userconnectinfo.Uid > 0)
            {
                base.AddErrLine("Connect信息异常,登录失败,请尝试再次登录");
                return;
            }
            if (DiscuzCloud.IsBindConnect(this.userid))
            {
                base.AddErrLine("该用户已经绑定了QQ,无法再次绑定");
                return;
            }
            this.userconnectinfo.Uid           = this.userid;
            this.userconnectinfo.IsSetPassword = true;
            DiscuzCloud.UpdateUserConnectInfo(this.userconnectinfo);
            ConnectbindLog userConnectBindLog = DiscuzCloud.GetUserConnectBindLog(this.userconnectinfo.OpenId);

            if (userConnectBindLog == null)
            {
                DiscuzCloud.CreateUserConnectBindLog(new ConnectbindLog
                {
                    OpenID    = this.userconnectinfo.OpenId,
                    Uid       = this.userconnectinfo.Uid,
                    Type      = 1,
                    BindCount = 1
                });
            }
            else
            {
                userConnectBindLog.Uid  = this.userconnectinfo.Uid;
                userConnectBindLog.Type = 1;
                DiscuzCloud.UpdateUserConnectBindLog(userConnectBindLog);
            }
            base.SetUrl("index.aspx");
            base.SetMetaRefresh();
            base.SetShowBackLink(false);
            base.AddMsgLine("QQ绑定成功,继续浏览");
            Utils.WriteCookie("bindconnect", "1");
            IUser shortUserInfo = Discuz.Entity.User.FindByID(this.userid);

            this.notifyscript = this.GetNotifyScript(this.userconnectinfo, shortUserInfo.Name, shortUserInfo.Bday, shortUserInfo.Gender, shortUserInfo.Email, shortUserInfo.ShowEmail, DNTRequest.GetInt("useqqavatar", 2), "loginbind");
        }
Example #32
0
        private void checkAccessToken( UserConnect x, AccessToken token )
        {
            x.AccessToken = token.Token;
            x.RefreshToken = token.RefreshToken;
            x.ExpiresIn = token.ExpiresIn;
            x.Scope = token.Scope;

            // 重新获取access token之后,服务器会自动延续授权时间
            x.Updated = DateTime.Now;

            x.update();
        }