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)); }
/// <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); }
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; }
/// <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)); }
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; } }
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); }
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"); }
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(); } } }
/// <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)); }
/// <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 }); }
//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)); }
public static UserConnect GetUserConnectInfo(string openId) { if (openId.Length < 32) { return(null); } return(UserConnect.FindByOpenId(openId)); }
public static int DeleteUserConnectInfo(int userId) { if (userId < 1) { return(-1); } return(UserConnect.Delete(UserConnect._.Uid == userId)); }
public static int DeleteUserConnectInfo(string openId) { if (openId.Length < 32) { return(-1); } return(UserConnect.Delete(UserConnect._.OpenId == openId)); }
public static UserConnect GetUserConnectInfo(int userId) { if (userId < 0) { return(null); } return(UserConnect.FindByUid(userId)); }
/// <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 }); }
/// <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); }
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()); }
/// <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)); }
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(); }
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 }
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("登录成功", "/"); } }
void Start() { if (instance == null) { instance = this; } else if (instance != this) { //잘못된 인스턴스를 가르키고 있을 경우 Destroy(gameObject); } DontDestroyOnLoad(this); userId = GPGSManager.mainId; CreateUser(); }
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); }
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")); } }
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); }
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()); }
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"); }
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(); }