public void UsuarioInvalido() { var gitHub = new GitHub(); var usuario = gitHub.ObterUsuario("eduba"); Assert.IsNull(usuario); }
public void UsuarioValido() { var gitHub = new GitHub(); var usuario = gitHub.ObterUsuario("edubalf"); Assert.AreEqual(8027415, usuario.id); }
/// <summary> /// 登录授权回调 /// </summary> /// <param name="authorizeResult">获取授权码以及防伪标识</param> /// <returns></returns> public IActionResult AuthCallback(LoginBase.AuthorizeResult authorizeResult) { var vm = new ActionResultVM(); try { if (string.IsNullOrWhiteSpace(authorizeResult.code)) { vm.Set(ARTag.unauthorized); } else { //唯一标示 string openId = string.Empty; //注册信息 var mo = new Domain.UserInfo() { LoginLimit = 0, UserSex = 0, UserCreateTime = DateTime.Now }; //头像 string avatar = string.Empty; //头像(高清) string avatarhd = string.Empty; Enum.TryParse(RouteData.Values["id"]?.ToString(), true, out ValidateloginType vtype); switch (vtype) { case ValidateloginType.qq: { //获取 access_token var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 OpendId var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity() { access_token = tokenEntity.access_token }); //获取 UserInfo var userEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = openidEntity.openid }); //身份唯一标识 openId = openidEntity.openid; mo.OpenId1 = openId; mo.Nickname = userEntity.nickname; mo.UserSex = userEntity.gender == "男" ? 1 : 2; mo.UserSay = ""; mo.UserUrl = ""; avatar = userEntity.figureurl_qq_1; avatarhd = userEntity.figureurl_qq_2; } break; case ValidateloginType.weibo: { //获取 access_token var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 access_token 的授权信息 var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity() { access_token = tokenEntity.access_token }); //获取 users/show var userEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity() { access_token = tokenEntity.access_token, uid = Convert.ToInt64(tokenInfoEntity.uid) }); openId = tokenEntity.access_token; mo.OpenId2 = openId; mo.Nickname = userEntity.screen_name; mo.UserSex = userEntity.gender == "m" ? 1 : userEntity.gender == "f" ? 2 : 0; mo.UserSay = userEntity.description; mo.UserUrl = userEntity.domain; avatar = userEntity.profile_image_url; avatarhd = userEntity.avatar_large; } break; case ValidateloginType.github: { //获取 access_token var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = GitHub.User(tokenEntity.access_token); openId = userEntity.id.ToString(); mo.OpenId3 = openId; mo.Nickname = userEntity.name; mo.UserSay = userEntity.bio; mo.UserUrl = userEntity.blog; mo.UserMail = userEntity.email; avatar = userEntity.avatar_url; avatarhd = userEntity.avatar_url; } break; case ValidateloginType.taobao: { //获取 access_token var tokenEntity = TaoBao.AccessToken(new TaoBao_AccessToken_RequestEntity() { code = authorizeResult.code }); openId = tokenEntity.open_uid; mo.OpenId4 = openId; mo.Nickname = "淘宝用户"; } break; case ValidateloginType.microsoft: { //获取 access_token var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity() { access_token = tokenEntity.access_token }); openId = userEntity.id.ToString(); mo.OpenId5 = openId; mo.Nickname = userEntity.last_name + userEntity.first_name; mo.UserMail = userEntity.emails?["account"].ToStringOrEmpty(); } break; case ValidateloginType.dingtalk: { //获取 user var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code); openId = userEntity.openid; mo.OpenId6 = openId; mo.Nickname = userEntity.nick; } break; } mo.UserCreateTime = DateTime.Now; mo.UserName = openId; mo.UserPwd = Core.CalcTo.MD5(openId); if (!string.IsNullOrWhiteSpace(avatar)) { mo.UserPhoto = Core.UniqueTo.LongId().ToString() + ".jpg"; } if (string.IsNullOrWhiteSpace(openId)) { vm.Set(ARTag.unauthorized); vm.Msg = "身份验证失败"; } else { //判断是绑定操作 bool isbind = User.Identity.IsAuthenticated && authorizeResult.state.StartsWith("bind"); if (isbind) { int uid = new Application.UserAuthService(HttpContext).Get().UserId; //检测是否绑定其它账号 var queryIsBind = db.UserInfo.Where(x => x.UserId != uid); switch (vtype) { case ValidateloginType.qq: queryIsBind = queryIsBind.Where(x => x.OpenId1 == openId); break; case ValidateloginType.weibo: queryIsBind = queryIsBind.Where(x => x.OpenId2 == openId); break; case ValidateloginType.github: queryIsBind = queryIsBind.Where(x => x.OpenId3 == openId); break; case ValidateloginType.taobao: queryIsBind = queryIsBind.Where(x => x.OpenId4 == openId); break; case ValidateloginType.microsoft: queryIsBind = queryIsBind.Where(x => x.OpenId5 == openId); break; case ValidateloginType.dingtalk: queryIsBind = queryIsBind.Where(x => x.OpenId6 == openId); break; } if (queryIsBind.Count() > 0) { return(Content("已绑定其它账号,不能重复绑定")); } var userInfo = db.UserInfo.Find(uid); switch (vtype) { case ValidateloginType.qq: userInfo.OpenId1 = openId; break; case ValidateloginType.weibo: userInfo.OpenId2 = openId; break; case ValidateloginType.github: userInfo.OpenId3 = openId; break; case ValidateloginType.taobao: userInfo.OpenId4 = openId; break; case ValidateloginType.microsoft: userInfo.OpenId5 = openId; break; case ValidateloginType.dingtalk: userInfo.OpenId6 = openId; break; } db.UserInfo.Update(userInfo); db.SaveChanges(); return(Redirect("/user/setting")); } else { Domain.UserInfo vmo = null; switch (vtype) { case ValidateloginType.qq: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId1 == openId); break; case ValidateloginType.weibo: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId2 == openId); break; case ValidateloginType.github: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId3 == openId); break; case ValidateloginType.taobao: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId4 == openId); break; case ValidateloginType.microsoft: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId5 == openId); break; case ValidateloginType.dingtalk: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId6 == openId); break; } //未注册 if (vmo == null) { var ruvm = RegisterUser(mo); if (ruvm.Code == 200) { vm = ValidateLogin(vtype, mo); //拉取头像 if (vm.Code == 200 && (!string.IsNullOrWhiteSpace(avatar) || !string.IsNullOrWhiteSpace(avatarhd))) { try { using var wc = new System.Net.WebClient(); var ppath = Fast.PathTo.Combine(GlobalTo.WebRootPath, GlobalTo.GetValue("StaticResource:AvatarPath")); if (!System.IO.Directory.Exists(ppath)) { System.IO.Directory.CreateDirectory(ppath); } if (!string.IsNullOrWhiteSpace(avatarhd)) { wc.DownloadFile(avatar, Fast.PathTo.Combine(ppath, mo.UserPhoto)); } else if (!string.IsNullOrWhiteSpace(avatar)) { wc.DownloadFile(avatar, Fast.PathTo.Combine(ppath, mo.UserPhoto)); } } catch (Exception) { } } } else { vm.Msg = ruvm.Msg; } } else { vm = ValidateLogin(vtype, vmo); } } } } } catch (Exception ex) { vm.Set(ex); Filters.FilterConfigs.WriteLog(HttpContext, ex); } //成功 if (vm.Code == 200) { var rurl = Request.Cookies["ReturnUrl"]; rurl = string.IsNullOrWhiteSpace(rurl) ? "/" : rurl; if (rurl.StartsWith("http")) { rurl += "?cookie=ok"; } return(Redirect(rurl)); } else { string msg = "【登录失败】( " + vm.Msg + " )".ToEncode(); return(Redirect("/home/error?msg=" + msg)); } }
/// <summary> /// 登录链接 /// </summary> /// <param name="loginType">登录类型</param> /// <param name="authType">登录防伪追加标识,区分登录、注册</param> /// <returns></returns> public static string LoginLink(string loginType, string authType = "") { string url = string.Empty; if (Enum.TryParse(loginType, true, out LoginBase.LoginType vtype)) { switch (vtype) { case LoginBase.LoginType.QQ: { var reqe = new QQ_Authorization_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = QQ.AuthorizationHref(reqe); } break; case LoginBase.LoginType.WeiBo: { var reqe = new Weibo_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = Weibo.AuthorizeHref(reqe); } break; case LoginBase.LoginType.GitHub: { var reqe = new GitHub_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = GitHub.AuthorizeHref(reqe); } break; case LoginBase.LoginType.TaoBao: { var reqe = new TaoBao_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = TaoBao.AuthorizeHref(reqe); } break; case LoginBase.LoginType.MicroSoft: { var reqe = new MicroSoft_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = MicroSoft.AuthorizeHref(reqe); } break; case LoginBase.LoginType.DingTalk: { var reqe = new DingTalk_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = DingTalk.AuthorizeHref_ScanCode(reqe); } break; } } if (string.IsNullOrWhiteSpace(url)) { url = "/account/login"; } return(url); }
public IActionResult Projects() { var allProjects = GitHub.GetProjects(); return(View(allProjects)); }
//添加用户或更新用户信息 public bool UpdateUserInfo(string loginType, string token) { if (loginType == "github") { GitHubUser githubUser = GitHub.GetGitHubUser(token); if (githubUser.id == 0) { return(false); } NullUser user = NullUserDataSvc.GetByCondition(u => u.GitHubID == githubUser.id).FirstOrDefault(); if (user == null) { user = new NullUser(); user.LoginType = "github"; user.GitHubAccessToken = token; user.Name = githubUser.name; user.AvatarUrl = githubUser.avatar_url; user.GitHubLogin = githubUser.login; user.GitHubID = githubUser.id; user.Role = (int)EnumUserRole.普通; user.Email = githubUser.email; NullUserDataSvc.Add(user); if (string.IsNullOrEmpty(user.Email)) { SysMsg msg = new SysMsg(); msg.Date = DateTime.Now; msg.Title = "您还未设置邮箱"; msg.Msg = "请到<a href=\"/Home/UserProfile\">我的主页</a>设置或修改<a href=\"https://github.com/settings/profile\" target=\"_blank\">GitHub</a>邮箱显示后更新账号。"; string key = MyRedisKeys.Pre_SysMsg + user.ID; MyRedisDB.SetAdd(key, msg); } //添加一篇newbee //NewBee nb = new NewBee(); //nb.OwnerID = user.ID; //nb.Title = "大家好,我是" + (string.IsNullOrEmpty(user.Name) ? user.GitHubLogin : user.Name) + ",很高兴加入象空。"; //nb.FloorCount = 1; //nb.LastFloorDate = DateTime.Now; //NewBeeDataSvc.Add(nb); //NewBeeFloor nbf = new NewBeeFloor(); //nbf.MDText = "我刚刚加入象空,点击查看更多关于我的信息,如果你有兴趣可以关注我的GitHub。"; //nbf.MDValue = "<p>我刚刚加入象空,点击查看更多关于我的信息,如果你有兴趣可以关注我的GitHub。</p>"; //nbf.NewBeeID = nb.ID; //nbf.Order = 1; //nbf.OwnerID = user.ID; //NewBeeFloorDataSvc.Add(nbf); } else { user.Name = githubUser.name; user.AvatarUrl = githubUser.avatar_url; user.GitHubID = githubUser.id; user.GitHubLogin = githubUser.login; user.GitHubAccessToken = token; user.Email = githubUser.email; NullUserDataSvc.Update(user); } HttpContext.WriteCookie("UID", user.ID.ToString(), DateTime.Now.AddYears(3)); HttpContext.WriteCookie("UName", githubUser.name, DateTime.Now.AddYears(3)); HttpContext.WriteCookie("UAvatar", githubUser.avatar_url, DateTime.Now.AddYears(3)); HttpContext.WriteCookie("LoginType", user.LoginType, DateTime.Now.AddYears(3)); HttpContext.WriteCookie("GLogin", githubUser.login, DateTime.Now.AddYears(3)); HttpContext.WriteCookie("SKEY", Utils.RijndaelEncrypt(user.ID.ToString()), DateTime.Now.AddYears(3)); HttpContext.WriteCookie("Role", Utils.RijndaelEncrypt(user.ID.ToString() + ";" + user.Role.ToString()), DateTime.Now.AddYears(3)); } return(true); }
public MonoProjectCompiler (GitHub.GitHub_Repository repository) : base (repository) { }
/// <summary> /// 回调方法 /// </summary> /// <param name="authorizeResult">接收授权码、防伪参数</param> public void AuthCallback(LoginBase.AuthorizeResult authorizeResult) { if (!string.IsNullOrWhiteSpace(authorizeResult.code) || !string.IsNullOrWhiteSpace(authorizeResult.auth_code)) { //唯一标识 string OpenId = string.Empty; switch (loginType) { case LoginBase.LoginType.QQ: { //获取 access_token var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 OpendId var openidEntity = QQ.OpenId(tokenEntity.access_token); //获取 UserInfo _ = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = openidEntity.openid }); //身份唯一标识 OpenId = openidEntity.openid; } break; case LoginBase.LoginType.WeiBo: { //获取 access_token var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 access_token 的授权信息 var tokenInfoEntity = Weibo.GetTokenInfo(tokenEntity.access_token); //获取 users/show _ = Weibo.UserShow(new Weibo_UserShow_RequestEntity() { access_token = tokenEntity.access_token, uid = Convert.ToInt64(tokenInfoEntity.uid) }); OpenId = tokenEntity.access_token; } break; case LoginBase.LoginType.WeChat: { //获取 access_token var tokenEntity = Login.WeChat.AccessToken(new WeChat_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user _ = Login.WeChat.Get_User_Info(new WeChat_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = tokenEntity.openid }); //身份唯一标识 OpenId = tokenEntity.openid; } break; case LoginBase.LoginType.GitHub: { //获取 access_token var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = GitHub.User(tokenEntity.access_token); OpenId = userEntity.id.ToString(); } break; case LoginBase.LoginType.TaoBao: { //获取 access_token var tokenEntity = TaoBao.AccessToken(new TaoBao_AccessToken_RequestEntity() { code = authorizeResult.code }); OpenId = tokenEntity.open_uid; } break; case LoginBase.LoginType.MicroSoft: { //获取 access_token var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = MicroSoft.User(tokenEntity.access_token); OpenId = userEntity.id.ToString(); } break; case LoginBase.LoginType.DingTalk: { //获取 user var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code); OpenId = userEntity?.openid; } break; case LoginBase.LoginType.Gitee: { //获取 access_token var tokenEntity = Gitee.AccessToken(new Gitee_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = Gitee.User(tokenEntity.access_token); OpenId = userEntity.id.ToString(); } break; case LoginBase.LoginType.Google: { //获取 access_token var tokenEntity = Google.AccessToken(new Google_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = Google.User(tokenEntity.access_token); OpenId = userEntity.sub; } break; case LoginBase.LoginType.AliPay: { //获取 access_token var tokenEntity = AliPay.AccessToken(new AliPay_AccessToken_RequestEntity() { code = authorizeResult.auth_code }); //实际上这一步已经获取到 OpenId,登录验证可以了,获取个人信息还需调用下面的接口 //tokenEntity.user_id //获取 user var userEntity = AliPay.User(new AliPay_User_RequestEntity() { auth_token = tokenEntity.access_token }); OpenId = userEntity.user_id; } break; case LoginBase.LoginType.StackOverflow: { //获取 access_token var tokenEntity = StackOverflow.AccessToken(new StackOverflow_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = StackOverflow.User(new StackOverflow_User_RequestEntity() { access_token = tokenEntity.access_token }); OpenId = userEntity.user_id; } break; } //拿到登录标识 if (string.IsNullOrWhiteSpace(OpenId)) { //TO DO } } }
public void TestRepositoryGitHub() { var repository = new GitHub().ReturnGitHubRepository(); Assert.Equal("https://github.com/andreyfp15/test_meta_softplan", repository); }
/// <summary> /// 回调方法 /// </summary> /// <param name="code">请求链接得到的code</param> /// <param name="loginType">登录类型</param> public void AuthCallback(string code, LoginBase.LoginType loginType) { if (string.IsNullOrWhiteSpace(code)) { //打开链接没登录授权 } else { //唯一标示 string openId = string.Empty; switch (loginType) { case LoginBase.LoginType.QQ: { //获取 access_token var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity() { code = code }); //获取 OpendId var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity() { access_token = tokenEntity.access_token }); //获取 UserInfo var userEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = openidEntity.openid }); //身份唯一标识 openId = openidEntity.openid; } break; case LoginBase.LoginType.WeiBo: { //获取 access_token var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity() { code = code }); //获取 access_token 的授权信息 var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity() { access_token = tokenEntity.access_token }); //获取 users/show var userEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity() { access_token = tokenEntity.access_token, uid = Convert.ToInt64(tokenInfoEntity.uid) }); openId = tokenEntity.access_token; } break; case LoginBase.LoginType.WeChat: { //获取 access_token var tokenEntity = WeChat.AccessToken(new WeChat_AccessToken_RequestEntity() { code = code }); //获取 user var userEntity = WeChat.Get_User_Info(new WeChat_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = tokenEntity.openid }); //身份唯一标识 openId = tokenEntity.openid; } break; case LoginBase.LoginType.GitHub: { //申请的应用名称,非常重要 GitHubConfig.ApplicationName = "netnrf"; //获取 access_token var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity() { code = code }); //获取 user var userEntity = GitHub.User(new GitHub_User_RequestEntity() { access_token = tokenEntity.access_token }); openId = userEntity.id.ToString(); } break; case LoginBase.LoginType.TaoBao: { //获取 access_token var tokenEntity = Taobao.AccessToken(new Taobao_AccessToken_RequestEntity() { code = code }); openId = tokenEntity.open_uid; } break; case LoginBase.LoginType.MicroSoft: { //获取 access_token var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity() { code = code }); //获取 user var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity() { access_token = tokenEntity.access_token }); openId = userEntity.id.ToString(); } break; } //拿到登录标识 if (string.IsNullOrWhiteSpace(openId)) { //TO DO } } }
public async override void OnNavigatedTo(INavigationParameters parameters) { try { UserDialogs.Instance.ShowLoading(); if (parameters.ContainsKey("PRID")) { long prid = 0; var id = parameters.GetValue <string>("PRID"); long.TryParse(id, out prid); if (prid != 0) { MasterPullRequests = new ObservableCollection <PullRequest>(await GitHub.GetRepository(prid)); PullRequests = new ObservableCollection <PullRequest>(); GetItems(); } } if (parameters.ContainsKey("RepoName")) { Title = parameters.GetValue <string>("RepoName"); } base.OnNavigatedTo(parameters); } finally { UserDialogs.Instance.HideLoading(); } }
private static void Main() { Terminal.RenderLogo(); var choice = Terminal.GetMainMenuChoice(); ConsoleExtensions.Log($"Selected choice: {choice}", "info"); switch (choice) { case "Extract game data": ConsoleExtensions.Log($"Choice: {choice} is currently unsupported!", "error"); break; case "Parse extracted game data": Parser.ParseExtractedData(); break; case "Install High-Res patch": var pathToHighResDir = GetHighResDir(); var files = Directory.EnumerateFiles( pathToHighResDir, "*.*", SearchOption.AllDirectories).ToList(); if (files.Count == 0) { ConsoleExtensions.Log("HighResFolder empty proceeding to clone latest version", "info"); GitHub.CloneHighResPatch(pathToHighResDir); } var configPath = Path.Combine(pathToHighResDir + "\\config.ini"); if (!File.Exists(configPath)) { throw new InvalidOperationException($"Config file not found at path: {configPath}"); } ConsoleExtensions.Log("Gathering environment info", "info"); var envInfo = new EnvironmentInfo(); envInfo.Print(); ConsoleExtensions.Log("Auto-config according to environment info", "info"); HighResConfig.AutoConfigure(envInfo); ConsoleExtensions.Log("Summary of config.ini:", "info"); AnsiConsole.Render(Terminal.ConfigTable()); if (AnsiConsole.Confirm("Would you like to change config?")) { AnsiConsole.WriteException(new NotImplementedException()); return; } HighResConfig.Write(configPath); LaunchWeidu(CmdArgs.Weidu.InstallHighResPatch, pathToHighResDir); break; case "Uninstall High-Res patch": LaunchWeidu(CmdArgs.Weidu.UninstallHighResPatch); break; default: ConsoleExtensions.Log($"Choice: {choice} is currently unsupported!", "error"); break; } }
public IActionResult AuthCallback(string code) { var vm = new ActionResultVM(); if (string.IsNullOrWhiteSpace(code)) { vm.msg = "未授权,登录失败"; } else { try { //唯一标示 string openId = string.Empty; //注册信息 var mo = new Domain.UserInfo() { LoginLimit = 0, UserSex = 0, UserCreateTime = DateTime.Now }; //头像 string avatar = string.Empty; //头像(高清) string avatarhd = string.Empty; if (Enum.TryParse(RouteData.Values["id"]?.ToString().ToLower(), out ValidateloginType vtype)) { try { switch (vtype) { case ValidateloginType.qq: { //获取 access_token var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity() { code = code }); //获取 OpendId var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity() { access_token = tokenEntity.access_token }); //获取 UserInfo var userEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = openidEntity.openid }); //身份唯一标识 openId = openidEntity.openid; mo.OpenId1 = openId; mo.Nickname = userEntity.nickname; mo.UserSex = userEntity.gender == "男" ? 1 : 2; mo.UserSay = ""; mo.UserUrl = ""; avatar = userEntity.figureurl_qq_1; avatarhd = userEntity.figureurl_qq_2; } break; case ValidateloginType.weibo: { //获取 access_token var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity() { code = code }); //获取 access_token 的授权信息 var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity() { access_token = tokenEntity.access_token }); //获取 users/show var userEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity() { access_token = tokenEntity.access_token, uid = Convert.ToInt64(tokenInfoEntity.uid) }); openId = tokenEntity.access_token; mo.OpenId2 = openId; mo.Nickname = userEntity.screen_name; mo.UserSex = userEntity.gender == "m" ? 1 : userEntity.gender == "f" ? 2 : 0; mo.UserSay = userEntity.description; mo.UserUrl = userEntity.domain; avatar = userEntity.profile_image_url; avatarhd = userEntity.avatar_large; } break; case ValidateloginType.github: { //获取 access_token var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity() { code = code }); //获取 user var userEntity = GitHub.User(new GitHub_User_RequestEntity() { access_token = tokenEntity.access_token }); openId = userEntity.id.ToString(); mo.OpenId3 = openId; mo.Nickname = userEntity.name; mo.UserSay = userEntity.bio; mo.UserUrl = userEntity.blog; mo.UserMail = userEntity.email; avatar = userEntity.avatar_url; avatarhd = userEntity.avatar_url; } break; case ValidateloginType.taobao: { //获取 access_token var tokenEntity = Taobao.AccessToken(new Taobao_AccessToken_RequestEntity() { code = code }); openId = tokenEntity.open_uid; mo.OpenId4 = openId; mo.Nickname = "淘宝用户"; } break; case ValidateloginType.microsoft: { //获取 access_token var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity() { code = code }); //获取 user var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity() { access_token = tokenEntity.access_token }); openId = userEntity.id.ToString(); mo.OpenId5 = openId; mo.Nickname = userEntity.last_name + userEntity.first_name; mo.UserMail = userEntity.emails["account"].ToStringOrEmpty(); } break; } } catch (Exception ex) { vm.msg = ex.Message; } } mo.UserCreateTime = DateTime.Now; mo.UserName = openId; mo.UserPwd = Core.CalcTo.MD5(openId); if (!string.IsNullOrWhiteSpace(avatar)) { mo.UserPhoto = Core.UniqueTo.LongId().ToString() + ".jpg"; } if (string.IsNullOrWhiteSpace(openId)) { vm.msg = "身份验证失败"; } else { //判断是绑定操作 bool isbind = false; if (User.Identity.IsAuthenticated) { try { var aboa = Request.Cookies["AccountBindOAuth"]; if (!string.IsNullOrWhiteSpace(aboa) && (DateTime.Now - DateTime.Parse(aboa)).TotalSeconds < 120) { int uid = new Func.UserAuthAid(HttpContext).Get().UserId; using (var db = new ContextBase()) { //检测是否绑定其它账号 var queryIsBind = db.UserInfo.Where(x => x.UserId != uid); switch (vtype) { case ValidateloginType.qq: queryIsBind = queryIsBind.Where(x => x.OpenId1 == openId); break; case ValidateloginType.weibo: queryIsBind = queryIsBind.Where(x => x.OpenId2 == openId); break; case ValidateloginType.github: queryIsBind = queryIsBind.Where(x => x.OpenId3 == openId); break; case ValidateloginType.taobao: queryIsBind = queryIsBind.Where(x => x.OpenId4 == openId); break; case ValidateloginType.microsoft: queryIsBind = queryIsBind.Where(x => x.OpenId5 == openId); break; } if (queryIsBind.Count() > 0) { return(Content("已绑定其它账号,不能重复绑定")); } var userInfo = db.UserInfo.Find(uid); switch (vtype) { case ValidateloginType.qq: userInfo.OpenId1 = openId; break; case ValidateloginType.weibo: userInfo.OpenId2 = openId; break; case ValidateloginType.github: userInfo.OpenId3 = openId; break; case ValidateloginType.taobao: userInfo.OpenId4 = openId; break; case ValidateloginType.microsoft: userInfo.OpenId5 = openId; break; } db.UserInfo.Update(userInfo); db.SaveChanges(); } Response.Cookies.Delete("AccountBindOAuth"); isbind = true; } } catch (Exception) { } } //是绑定操作 if (isbind) { return(Redirect("/user/setting")); } else { using (var db = new ContextBase()) { Domain.UserInfo vmo = null; switch (vtype) { case ValidateloginType.qq: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId1 == openId); break; case ValidateloginType.weibo: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId2 == openId); break; case ValidateloginType.github: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId3 == openId); break; case ValidateloginType.taobao: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId4 == openId); break; case ValidateloginType.microsoft: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId5 == openId); break; } //未注册 if (vmo == null) { var ruvm = RegisterUser(mo); if (ruvm.code == 200) { vm = ValidateLogin(vtype, mo); //拉取头像 if (vm.code == 200 && (!string.IsNullOrWhiteSpace(avatar) || !string.IsNullOrWhiteSpace(avatarhd))) { try { System.Net.WebClient wc = new System.Net.WebClient(); var rootdir = GlobalTo.WebRootPath + "/" + (GlobalTo.GetValue("StaticResource:RootDir").TrimStart('/').TrimEnd('/') + "/"); var path = GlobalTo.GetValue("StaticResource:AvatarPath").TrimEnd('/').TrimStart('/') + '/'; var fullpath = rootdir + path; if (!System.IO.Directory.Exists(fullpath)) { System.IO.Directory.CreateDirectory(fullpath); } if (!string.IsNullOrWhiteSpace(avatar)) { wc.DownloadFile(avatar, fullpath + mo.UserPhoto); } if (!string.IsNullOrWhiteSpace(avatarhd)) { wc.DownloadFile(avatarhd, fullpath + mo.UserPhoto.Replace(".jpg", "_lg.jpg")); } } catch (Exception) { } } } else { vm.msg = ruvm.msg; } } else { vm = ValidateLogin(vtype, vmo); } } } } } catch (Exception ex) { vm.msg = ex.Message; } } //成功 if (vm.code == 200) { return(Redirect("/")); } else { string msg = "【登录失败】( " + vm.msg + " )".ToEncode(); return(Redirect("/home/error?msg=" + msg)); } }
public async Task UpdateGitFile() => await GitHub.SaveInstruments();
public async Task <Feedback> getPermissions(string tenant, string username) { Feedback feedback; try { AppUser _userData; if (username == "*****@*****.**") { _userData = new AppUser() { username = username, displayname = "Amar Barge", id = -1, isdeleted = false, }; _userData.permissions = _permissionRepo.GetInstance(tenant).getAllDefaultPermissions().ToArray(); feedback = new Feedback { Code = 1, Message = "Data fetched sucessfully", data = _userData }; } else { _userData = _userRepo.GetInstance(tenant).getByUserName(username); if (_userData != null) { _userData.addOnConfig = _userRepo.GetInstance(tenant).getConfigById(_userData.id); _userData.permissions = _permissionRepo.GetInstance(tenant).getByUserId(_userData.id).ToArray(); feedback = new Feedback { Code = 1, Message = "Data fetched sucessfully", data = _userData }; } else { feedback = new Feedback { Code = 0, Message = "Record not found", data = null }; } } } catch (Exception ex) { feedback = new Feedback { Code = 0, Message = "Got the error while removing data", data = ex }; GitHub.createIssue(ex, new { id = username, tenant = tenant }, _accessor.HttpContext.Request.Headers); } return(feedback); }
/// <summary> /// 回调方法 /// </summary> /// <param name="authorizeResult">接收授权码、防伪参数</param> public void AuthCallback(LoginBase.AuthorizeResult authorizeResult) { if (string.IsNullOrWhiteSpace(authorizeResult.code)) { //打开链接没登录授权 } else { //唯一标示 string OpenId = string.Empty; switch (loginType) { case LoginBase.LoginType.QQ: { //获取 access_token var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 OpendId var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity() { access_token = tokenEntity.access_token }); //获取 UserInfo _ = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = openidEntity.openid }); //身份唯一标识 OpenId = openidEntity.openid; } break; case LoginBase.LoginType.WeiBo: { //获取 access_token var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 access_token 的授权信息 var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity() { access_token = tokenEntity.access_token }); //获取 users/show _ = Weibo.UserShow(new Weibo_UserShow_RequestEntity() { access_token = tokenEntity.access_token, uid = Convert.ToInt64(tokenInfoEntity.uid) }); OpenId = tokenEntity.access_token; } break; case LoginBase.LoginType.WeChat: { //获取 access_token var tokenEntity = WeChat.AccessToken(new WeChat_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user _ = WeChat.Get_User_Info(new WeChat_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = tokenEntity.openid }); //身份唯一标识 OpenId = tokenEntity.openid; } break; case LoginBase.LoginType.GitHub: { //获取 access_token var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = GitHub.User(new GitHub_User_RequestEntity() { access_token = tokenEntity.access_token }); OpenId = userEntity.id.ToString(); } break; case LoginBase.LoginType.TaoBao: { //获取 access_token var tokenEntity = TaoBao.AccessToken(new TaoBao_AccessToken_RequestEntity() { code = authorizeResult.code }); OpenId = tokenEntity.open_uid; } break; case LoginBase.LoginType.MicroSoft: { //获取 access_token var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity() { access_token = tokenEntity.access_token }); OpenId = userEntity.id.ToString(); } break; case LoginBase.LoginType.DingTalk: { //获取 user var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code); OpenId = userEntity?.openid; } break; case LoginBase.LoginType.Gitee: { //获取 access_token var tokenEntity = Gitee.AccessToken(new Gitee_AccessToken_RequestEntity() { code = authorizeResult.code }); //获取 user var userEntity = Gitee.User(new Gitee_User_RequestEntity() { access_token = tokenEntity.access_token }); OpenId = userEntity.id.ToString(); } break; } //拿到登录标识 if (string.IsNullOrWhiteSpace(OpenId)) { //TO DO } } }
string CloneRepo() { return(GitHub.CloneRepository(Org, Repository, Hash)); }
static async Task Main(string[] args) { Console.WriteLine("--------------------"); Console.WriteLine("Version." + Assembly.GetExecutingAssembly().GetName().Version); IUpdateManager mgr = new GitHub("https://github.com/kuttsun/Test"); // UpdateManager mgr = new Storage(@"C:\foo"); if (mgr.CanUpdate(args)) { Console.WriteLine("Start Update."); // 6. Update mgr.Update(args); // 7. Restart application mgr.RestartApplication(args, ExecutionType.DotNetCore); // 8. Close application return; } // 9. Update is complete switch (mgr.Completed(args)) { case UpdateCompletedType.Success: Console.WriteLine("Update succeeded."); break; case UpdateCompletedType.Failure: Console.WriteLine("Update failed."); break; } // 1. Check for updates var coreUpdaterInfo = await mgr.CheckForUpdatesAsync(); // 2. Compare versions var version1 = new Version(Assembly.GetExecutingAssembly().GetName().Version.ToString()); var version2 = new Version(coreUpdaterInfo.Version); if (version1 < version2) { Console.WriteLine("New version found."); // 3. Download and extract await mgr.PrepareForUpdatesAsync(Directory.GetCurrentDirectory()); // 4. Start updater (The updater is your new version application) mgr.StartUpdater(ExecutionType.DotNetCore); // 5. Close application return; } else { Console.WriteLine("Not found."); } Console.WriteLine("Hello World!"); Console.ReadKey(); return; }
public AutofacGitHubRepositoriesFunction(GitHub github, HttpClient httpClient) { this._github = github; this._httpClient = httpClient; }
/// <summary> /// 生成请求链接 /// </summary> /// <param name="authType">在防伪参数追加信息(可用于登录、注册、绑定、解绑区分)</param> /// <returns></returns> public string Auth(string authType = "") { var url = string.Empty; switch (loginType) { case LoginBase.LoginType.QQ: { var reqe = new QQ_Authorization_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = QQ.AuthorizationHref(reqe); } break; case LoginBase.LoginType.WeiBo: { var reqe = new Weibo_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = Weibo.AuthorizeHref(reqe); } break; case LoginBase.LoginType.GitHub: { var reqe = new GitHub_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = GitHub.AuthorizeHref(reqe); } break; case LoginBase.LoginType.TaoBao: { var reqe = new TaoBao_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = TaoBao.AuthorizeHref(reqe); } break; case LoginBase.LoginType.MicroSoft: { var reqe = new MicroSoft_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = MicroSoft.AuthorizeHref(reqe); } break; case LoginBase.LoginType.WeChat: { var reqe = new WeChat_Authorization_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = Login.WeChat.AuthorizationHref(reqe); } break; case LoginBase.LoginType.DingTalk: { var reqe = new DingTalk_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } //扫描模式 url = DingTalk.AuthorizeHref_ScanCode(reqe); //密码模式 //url = DingTalk.AuthorizeHref_Password(reqe); } break; case LoginBase.LoginType.Gitee: { var reqe = new Gitee_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = Gitee.AuthorizeHref(reqe); } break; case LoginBase.LoginType.Google: { var reqe = new Google_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = Google.AuthorizeHref(reqe); } break; case LoginBase.LoginType.AliPay: { var reqe = new AliPay_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = AliPay.AuthorizeHref(reqe); } break; case LoginBase.LoginType.StackOverflow: { var reqe = new StackOverflow_Authorize_RequestEntity(); if (!string.IsNullOrWhiteSpace(authType)) { reqe.state = authType + reqe.state; } url = StackOverflow.AuthorizeHref(reqe); } break; } return(url); }
string CloneRepo() { return(GitHub.CloneRepository(Org, Repository, Hash, DefaultBranch)); }
static async Task Main(string[] args) { var config = ProcessArguments(args); if (config.GitRemoteUserName.Length == 0) { config.GitRemoteUserName = config.GitRemoteName; } await GitHub.CleanupUnusedBranches(config.GitRemoteUserName, config.MonoRepo, BranchPrefix, config.PersonalAccessToken, config.DryRun, config.Verbose); PullRequest?pr = await GetPullRequest(config); if (pr == null && config.PullRequestNumber != null) { return; } string local_branch_name, remote_branch_name, remote_name, remote_mono_repo; if (pr != null) { // We want to check if the branch for this PR, needs an update or not remote_mono_repo = $"{pr.HeadRepoOwner}/mono"; remote_branch_name = pr.HeadRef; remote_name = config.GitRemoteName; // Use the branch name that the PR uses local_branch_name = pr.HeadRef; } else { GitHub.Trace($"no pr found, setting remote_mono_repo to {config.MonoRepo}", config.Verbose); remote_mono_repo = config.MonoRepo; remote_branch_name = config.MonoBranch; remote_name = config.GitRemoteOriginName; local_branch_name = $"{BranchPrefix}_{config.MonoBranch}_{Guid.NewGuid ()}"; } string msbuildBranchHead, msbuildRefInMono; try { bool required; (required, msbuildBranchHead, msbuildRefInMono) = await IsMSBuildBumpRequired( msbuild_repo : config.MSBuildRepo, msbuild_branch : config.MSBuildBranch, mono_repo : remote_mono_repo, mono_branch : remote_branch_name, verbose : config.Verbose); if (!required) { Console.WriteLine($"-> Ref is updated already, nothing to be done."); return; } } catch (HttpRequestException hre) { Console.WriteLine($"Error checking if bump is required: {hre.Message}"); return; } Repository repo = new Repository(config.MonoWorkingDir); GitHub.PrepareMonoWorkingDirectory(repo: repo, mono_working_dir: config.MonoWorkingDir, remote_name: remote_name, remote_branch_name: remote_branch_name, local_branch_name: local_branch_name, verbose: config.Verbose); if (!(await UpdateMSBuildPy(msbuildBranchHead, config.MonoWorkingDir, repo))) { Console.WriteLine($"Error: unable to update msbuild.py"); return; } // git commit var commit_msg = $"[{config.MonoBranch}] Bump msbuild to track {config.MSBuildBranch}"; var sig = repo.Config.BuildSignature(DateTimeOffset.Now); repo.Commit(commit_msg, sig, sig); if (!GitHub.GitPush(config.MonoWorkingDir, config.GitRemoteName, local_branch_name, local_branch_name, config.DryRun)) { Console.WriteLine($"Error: git push failed"); return; } if (!config.DryRun && pr != null) { Console.WriteLine($"---- Updated PR: {pr.HTML_URL} ---"); } if (!config.DryRun && pr == null) { // Create new pull request var title = $"[{config.MonoBranch}] Bump msbuild to track {config.MSBuildBranch}"; (var result, var html_url, _) = await GitHub.CreatePullRequest( target_owner_repo : remote_mono_repo, base_branch_name : config.MonoBranch, head_ref : $"{config.GitRemoteUserName}:{local_branch_name}", personal_access_token : config.PersonalAccessToken, title : title, body : String.Empty, reviewers : config.Reviewers, verbose : config.Verbose); if (result) { Console.WriteLine($"----------- Created new PR at {html_url} ----------"); } else { Console.WriteLine("Failed to create PR."); } } await CheckRoslynAndNuGet(config.MonoRepo, config.MonoBranch, config.MSBuildRepo, msbuildRefInMono, msbuildBranchHead, config.Verbose); }
private async void Button_CheckForUpdates_Click(object sender, EventArgs e) { GitHub.Update(); await CheckProfileForUpdateAsync(); }
public async Task <IActionResult> AuthCallback(string code) { var result = new AccountValidationVM(); string vtype = RouteData.Values["id"]?.ToString().ToLower(); try { //唯一标示 string openId = string.Empty; try { switch (vtype) { case "qq": { //获取 access_token var accessToken_ResultEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity() { code = code }); //获取 OpendId var openId_ResultEntity = QQ.OpenId(new QQ_OpenId_RequestEntity() { access_token = accessToken_ResultEntity.access_token }); //获取 UserInfo var openId_Get_User_Info_ResultEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity() { access_token = accessToken_ResultEntity.access_token, openid = openId_ResultEntity.openid }); //身份唯一标识 openId = openId_ResultEntity.openid; } break; case "weibo": { //获取 access_token var accessToken_ResultEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity() { code = code }); //获取 access_token 的授权信息 var tokenInfo_ResultEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity() { access_token = accessToken_ResultEntity.access_token }); //获取 users/show var userShow_ResultEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity() { access_token = accessToken_ResultEntity.access_token, uid = Convert.ToInt64(tokenInfo_ResultEntity.uid) }); openId = accessToken_ResultEntity.access_token; } break; case "github": { //获取 access_token var accessToken_ResultEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity() { code = code }); //获取 user var user_ResultEntity = GitHub.User(new GitHub_User_RequestEntity() { access_token = accessToken_ResultEntity.access_token }); openId = user_ResultEntity.id.ToString(); } break; case "taobao": { //获取 access_token var accessToken_ResultEntity = Taobao.AccessToken(new Taobao_AccessToken_RequestEntity() { code = code }); openId = accessToken_ResultEntity.open_uid; } break; case "microsoft": { //获取 access_token var accessToken_ResultEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity() { code = code }); //获取 user var user_ResultEntity = MicroSoft.User(new MicroSoft_User_RequestEntity() { access_token = accessToken_ResultEntity.access_token }); openId = user_ResultEntity.id.ToString(); } break; } } catch (Exception ex) { result.message = ex.Message; } if (string.IsNullOrWhiteSpace(openId)) { result.message = "身份验证失败"; } else { //判断是绑定操作 bool isbind = false; if (User.Identity.IsAuthenticated) { var aboa = Request.Cookies["AccountBindOAuth"]; if (!string.IsNullOrWhiteSpace(aboa) && (DateTime.Now - DateTime.Parse(aboa)).TotalSeconds < 120) { string uid = Func.Common.GetLoginUserInfo(HttpContext).UserId; using (var db = new ContextBase()) { var sysauth = db.SysAuthorize.Where(x => x.SuId == uid).FirstOrDefault(); var isadd = sysauth == null; //新增 if (isadd) { sysauth = new SysAuthorize() { SaId = Guid.NewGuid().ToString(), SuId = uid }; } switch (vtype) { case "qq": sysauth.OpenId1 = openId; break; case "weibo": sysauth.OpenId2 = openId; break; case "github": sysauth.OpenId3 = openId; break; case "taobao": sysauth.OpenId4 = openId; break; case "microsoft": sysauth.OpenId5 = openId; break; } if (isadd) { db.SysAuthorize.Add(sysauth); } else { db.SysAuthorize.Update(sysauth); } db.SaveChanges(); } Response.Cookies.Delete("AccountBindOAuth"); isbind = true; result.code = 301; result.message = "绑定成功"; result.url = "/"; } } //非绑定操作 if (!isbind) { using (var db = new ContextBase()) { SysUser vmo = null; switch (vtype) { case "qq": vmo = (from a in db.SysAuthorize join b in db.SysUser on a.SuId equals b.SuId where a.OpenId1 == openId select b).FirstOrDefault(); break; case "weibo": vmo = (from a in db.SysAuthorize join b in db.SysUser on a.SuId equals b.SuId where a.OpenId2 == openId select b).FirstOrDefault(); break; case "github": vmo = (from a in db.SysAuthorize join b in db.SysUser on a.SuId equals b.SuId where a.OpenId3 == openId select b).FirstOrDefault(); break; case "taobao": vmo = (from a in db.SysAuthorize join b in db.SysUser on a.SuId equals b.SuId where a.OpenId4 == openId select b).FirstOrDefault(); break; case "microsoft": vmo = (from a in db.SysAuthorize join b in db.SysUser on a.SuId equals b.SuId where a.OpenId5 == openId select b).FirstOrDefault(); break; } //没关联 if (vmo == null) { result.code = 302; result.message = "未关联账号,先账号密码登录再关联才能使用"; } else { result = await LoginValidation(vmo, "_pass_", 1); } } } } } catch (Exception ex) { result.message = ex.Message; } //成功 if (result.code == 100) { return(Redirect(result.url)); } else { return(View(result)); } }
public GitHub GetContentGitHub(ScrapingParameters parameters) { GitHub git = new GitHub(); List <Repository> repositories = new List <Repository>(); Queue <string> mylist = new Queue <string>(); using (WebClient wc = new WebClient()) { string page = wc.DownloadString(parameters.Url); var htmlDocument = new HtmlAgilityPack.HtmlDocument(); htmlDocument.LoadHtml(page); git.Name = htmlDocument .DocumentNode .SelectSingleNode("//span[@itemprop='name']") .InnerText; git.UserName = htmlDocument .DocumentNode .SelectSingleNode("//span[@itemprop='additionalName']") .InnerText; git.Bio = htmlDocument .DocumentNode .SelectSingleNode("//div[@class='p-note user-profile-bio mb-2 js-user-profile-bio']") .InnerText; HtmlNodeCollection nodes = htmlDocument.DocumentNode.SelectNodes("//a[@data-filterable-for='your-repos-filter']"); foreach (HtmlNode htmlNode in (IEnumerable <HtmlNode>)nodes) { if (!mylist.Contains(htmlNode.InnerText)) { mylist.Enqueue(htmlNode.InnerText); } } foreach (HtmlNode node in htmlDocument.DocumentNode.ge) { if (node.Attributes.Count > 0) { Repository repository = new Repository(); //repository.Title = htmlDocument // .DocumentNode // .SelectSingleNode("//a[@itemprop='name codeRepository']") // .InnerText // .Trim() // .Replace("\\n",""); repository.Title = node.Descendants().First(x => x.Attributes["class"].Value.Equals("name codeRepository")).InnerText; repositories.Add(repository); } } git.Repositories = repositories; } return(git); }
//添加用户或更新用户信息 public bool UpdateUserInfo(string loginType, string token) { if (loginType == "github") { GitHubUser githubUser = GitHub.GetGitHubUser(token); if (githubUser.id == 0) { return(false); } NullUser user = NullUserDataSvc.GetByCondition(u => u.GitHubID == githubUser.id).FirstOrDefault(); if (user == null) { user = new NullUser(); user.LoginType = "github"; user.GitHubAccessToken = token; user.Name = githubUser.name; user.AvatarUrl = githubUser.avatar_url; user.GitHubLogin = githubUser.login; user.GitHubID = githubUser.id; user.Role = (int)EnumUserRole.普通; user.Email = githubUser.email; user.FollowingCount = githubUser.following; user.FollowerCount = githubUser.followers; NullUserDataSvc.Add(user); //用关注人数小于500的机器人账号关注普通用户 if (user.Email == null || (user.Email != null && !user.Email.EndsWith("objnull.com"))) { List <NullUser> robots = NullUserDataSvc.GetByCondition(u => u.Email.EndsWith("objnull.com") && u.GitHubLogin.Contains("robot")).ToList(); //检查是否已关注 bool followed = false; GitHubClient github = new GitHubClient(new ProductHeaderValue("objnulldotcom")); foreach (NullUser robot in robots) { github.Credentials = new Credentials(robot.GitHubAccessToken); if (github.User.Followers.IsFollowing(robot.GitHubLogin, user.GitHubLogin).Result) { followed = true; break; } } //关注 if (!followed) { NullUser frobot = robots.Where(r => r.FollowingCount < 500).First(); github.Credentials = new Credentials(frobot.GitHubAccessToken); github.User.Get(frobot.GitHubLogin); github.User.Followers.Follow(user.GitHubLogin); frobot.FollowingCount += 1; NullUserDataSvc.Update(frobot); } } if (string.IsNullOrEmpty(user.Email)) { SysMsg msg = new SysMsg(); msg.Date = DateTime.Now; msg.Title = "您还未设置邮箱"; msg.Msg = "请到<a href=\"/Home/UserProfile\">我的主页</a>设置或修改<a href=\"https://github.com/settings/profile\" target=\"_blank\">GitHub</a>邮箱显示后更新账号。"; string key = MyRedisKeys.Pre_SysMsg + user.ID; MyRedisDB.SetAdd(key, msg); } } else { user.Name = githubUser.name; user.AvatarUrl = githubUser.avatar_url; user.GitHubID = githubUser.id; user.GitHubLogin = githubUser.login; user.GitHubAccessToken = token; user.Email = githubUser.email; user.FollowingCount = githubUser.following; user.FollowerCount = githubUser.followers; NullUserDataSvc.Update(user); } HttpContext.WriteCookie("UID", user.ID.ToString(), DateTime.Now.AddYears(3)); HttpContext.WriteCookie("UName", HttpUtility.UrlEncode(githubUser.name), DateTime.Now.AddYears(3)); HttpContext.WriteCookie("UAvatar", githubUser.avatar_url, DateTime.Now.AddYears(3)); HttpContext.WriteCookie("LoginType", user.LoginType, DateTime.Now.AddYears(3)); HttpContext.WriteCookie("GLogin", githubUser.login, DateTime.Now.AddYears(3)); HttpContext.WriteCookie("SKEY", Utils.RijndaelEncrypt(user.ID.ToString()), DateTime.Now.AddYears(3)); HttpContext.WriteCookie("Role", Utils.RijndaelEncrypt(user.ID.ToString() + ";" + user.Role.ToString()), DateTime.Now.AddYears(3)); } return(true); }
private void timer_Tick(object sender, EventArgs e) { timer.Stop(); if (GitHub.IsRepositoryValid(textBoxRepository.Text)) { listBranches.Items.Add(new ItemBranchTechnical("LoadGitHubBranchLoading")); GitHub github = new GitHub(textBoxRepository.Text); GitHub.DownloadStatus status = github.RetrieveBranchList((branches, ex) => this.InvokeSafe(() => { github.Dispose(); listBranches.Items.Clear(); if (ex != null) { btnDownload.Enabled = false; listBranches.Items.Add(new ItemBranchTechnical("LoadGitHubBranchFailure")); #if MONO Exception testEx = ex.InnerException; while (testEx != null) { if (testEx.GetType().FullName == "Mono.Security.Protocol.Tls.TlsException") { if (MessageBox.Show(Lang.Get["LoadGitHubTrustError"], Lang.Get["LoadGitHubError"], MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { using (System.Diagnostics.Process process = System.Diagnostics.Process.Start("mozroots", "--import --ask-remove --quiet")){ if (process != null) { process.WaitForExit(); } } timer_Tick(timer, new EventArgs()); } break; } testEx = testEx.InnerException; } #endif return; } if (branches == null) { btnDownload.Enabled = false; return; } foreach (string branch in branches) { listBranches.Items.Add(branch); if (branch == listBranches.Text) { listBranches.SelectedIndex = listBranches.Items.Count - 1; } } btnDownload.Enabled = true; })); switch (status) { case GitHub.DownloadStatus.NoInternet: MessageBox.Show(Lang.Get["LoadGitHubNoInternet"], Lang.Get["LoadGitHubError"], MessageBoxButtons.OK, MessageBoxIcon.Error); break; case GitHub.DownloadStatus.NoConnection: MessageBox.Show(Lang.Get["LoadGitHubNoEstablishedConnection"], Lang.Get["LoadGitHubError"], MessageBoxButtons.OK, MessageBoxIcon.Error); break; } } }
public override Upset[] ListPackages() { releases = GetPackagesReleases(); GitHubAsset[] upsetAssets = releases .SelectMany <GitHubRelease, GitHubAsset>(rel => rel.assets.Where(asset => asset.name.EndsWith("Upset.xml"))) .ToArray(); string progressBarTitle = "Parsing Upsets from GitHub repository"; int index = 0; List <Upset> upsetList = new List <Upset>(); EditorUtility.DisplayProgressBar(progressBarTitle, "Please wait a little bit while Uplift parses the Upset in the GitHub repository at " + urlField, 0f); string assetPath; try { foreach (GitHubAsset asset in upsetAssets) { try { StrictXmlDeserializer <Upset> deserializer = new StrictXmlDeserializer <Upset>(); EditorUtility.DisplayProgressBar( progressBarTitle, "Parsing " + asset.name, (float)(index++) / upsetAssets.Length ); if (!TryGetCachedItem(asset.name, out assetPath)) { using (StreamReader sr = new StreamReader(GitHub.GetAssetStream(asset, GetToken()))) using (FileStream fs = new FileStream(assetPath, FileMode.Create)) { sr.BaseStream.CopyTo(fs); } } using (FileStream fs = new FileStream(assetPath, FileMode.Open)) { Upset upset = deserializer.Deserialize(fs); upset.MetaInformation.dirName = asset.name; upsetList.Add(upset); } } catch (Exception e) { Debug.LogErrorFormat("An error occured while trying to get asset {0} ({1}, {2}) from GithubRepository", asset.name, asset.htmlURL, asset.apiURL); throw e; } } } finally { EditorUtility.ClearProgressBar(); } return(upsetList.ToArray()); }
public GitHubTest(GitHubFixture fixture) { this.fixture = fixture; mgr = new GitHub("https://github.com/kuttsun/Test"); }
public async Task <ActionResult <GenericResponse> > GitHubReleaseGet() { GitHub.ReleaseResponse?releaseResponse = await GitHub.GetLatestRelease(false).ConfigureAwait(false); return(releaseResponse != null?Ok(new GenericResponse <GitHubReleaseResponse>(new GitHubReleaseResponse(releaseResponse))) : StatusCode((int)HttpStatusCode.ServiceUnavailable, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorRequestFailedTooManyTimes, WebBrowser.MaxTries)))); }
public async Task <ActionResult <GenericResponse> > GitHubReleaseGet(string version) { if (string.IsNullOrEmpty(version)) { return(BadRequest(new GenericResponse(false, string.Format(Strings.ErrorIsEmpty, nameof(version))))); } GitHub.ReleaseResponse releaseResponse = version.Equals("latest", StringComparison.OrdinalIgnoreCase) ? await GitHub.GetLatestRelease().ConfigureAwait(false) : await GitHub.GetRelease(version).ConfigureAwait(false); return(releaseResponse != null?Ok(new GenericResponse <GitHubReleaseResponse>(new GitHubReleaseResponse(releaseResponse))) : StatusCode((int)HttpStatusCode.ServiceUnavailable, new GenericResponse(false, string.Format(Strings.ErrorRequestFailedTooManyTimes, WebBrowser.MaxTries)))); }
public async Task <Feedback> save(string tenant, AppUser data) { Feedback feedback = new Feedback(); try { AppNotification notification; if (data.notificationid == 0) { notification = new AppNotification() { type = _userRepo.GetInstance(tenant).tableName, message = "Saving data", progress = 0 }; _notificationRepo.GetInstance(tenant).save(ref notification); _hubContext.Clients.All.SendAsync("SendNotification", notification); } else { notification = _notificationRepo.GetInstance(tenant).getById(data.notificationid); } try { using (var transaction = DBServer.BeginTransaction()) { if (_userRepo.GetInstance(tenant).save(ref data, transaction)) { if (data.permissions != null && data.permissions.Length > 0) { data.permissions.ToList().ForEach(permission => { permission.appuserid = data.id; }); if (_permissionRepo.GetInstance(tenant).save(data.permissions.ToList(), transaction)) { transaction.Commit(); notification.progress = 1; notification.message = "Data saved sucessfully for User: "******"SendNotification", notification); feedback = new Feedback { Code = 1, Message = "Data saved sucessfully", data = data }; } } else { transaction.Commit(); notification.progress = 1; notification.message = "Data saved sucessfully"; notification.recordId = data.id; _notificationRepo.GetInstance(tenant).save(ref notification); _hubContext.Clients.All.SendAsync("SendNotification", notification); feedback = new Feedback { Code = 1, Message = "Data saved sucessfully", data = data }; } } } } catch (Exception ex) { notification.progress = -1; notification.message = "Got the error while removing data"; _notificationRepo.GetInstance(tenant).save(ref notification); _hubContext.Clients.All.SendAsync("SendNotification", notification); feedback = new Feedback { Code = 0, Message = "Got the error while removing data", data = ex }; GitHub.createIssue(ex, new { tenant = tenant, data = data }, _accessor.HttpContext.Request.Headers); } } catch (Exception ex) { GitHub.createIssue(ex, new { tenant = tenant, data = data }, _accessor.HttpContext.Request.Headers); } return(feedback); }
/// <summary> /// 登录授权回调 /// </summary> /// <param name="authorizeResult">获取授权码以及防伪标识</param> /// <returns></returns> public IActionResult AuthCallback(LoginBase.AuthorizeResult authorizeResult) { var vm = new SharedResultVM(); try { if (string.IsNullOrWhiteSpace(authorizeResult.code)) { vm.Set(SharedEnum.RTag.unauthorized); } else { //唯一标示 string openId = string.Empty; //注册信息 var mo = new Domain.UserInfo() { LoginLimit = 0, UserSex = 0, UserCreateTime = DateTime.Now }; //头像 string avatar = string.Empty; Enum.TryParse(RouteData.Values["id"]?.ToString(), true, out LoginBase.LoginType vtype); switch (vtype) { case LoginBase.LoginType.QQ: { //获取 access_token var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //获取 OpendId var openidEntity = QQ.OpenId(tokenEntity.access_token); Console.WriteLine(openidEntity.ToJson()); //获取 UserInfo var userEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = openidEntity.openid }); Console.WriteLine(userEntity.ToJson()); //身份唯一标识 openId = openidEntity.openid; mo.OpenId1 = openId; mo.Nickname = userEntity.nickname; mo.UserSex = userEntity.gender == "男" ? 1 : 2; mo.UserSay = ""; mo.UserUrl = ""; avatar = userEntity.figureurl_2; } break; case LoginBase.LoginType.WeiBo: { //获取 access_token var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //获取 access_token 的授权信息 var tokenInfoEntity = Weibo.GetTokenInfo(tokenEntity.access_token); Console.WriteLine(tokenInfoEntity.ToJson()); //获取 users/show var userEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity() { access_token = tokenEntity.access_token, uid = Convert.ToInt64(tokenInfoEntity.uid) }); Console.WriteLine(userEntity.ToJson()); openId = tokenEntity.access_token; mo.OpenId2 = openId; mo.Nickname = userEntity.screen_name; mo.UserSex = userEntity.gender == "m" ? 1 : userEntity.gender == "f" ? 2 : 0; mo.UserSay = userEntity.description; mo.UserUrl = userEntity.domain; avatar = userEntity.avatar_large; } break; case LoginBase.LoginType.WeChat: { //获取 access_token var tokenEntity = Netnr.Login.WeChat.AccessToken(new WeChat_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //openId = tokenEntity.openid; //获取 user var userEntity = Netnr.Login.WeChat.Get_User_Info(new WeChat_OpenAPI_RequestEntity() { access_token = tokenEntity.access_token, openid = tokenEntity.openid }); Console.WriteLine(userEntity.ToJson()); avatar = userEntity.headimgurl; } break; case LoginBase.LoginType.GitHub: { //获取 access_token var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //获取 user var userEntity = GitHub.User(tokenEntity.access_token); Console.WriteLine(userEntity.ToJson()); openId = userEntity.id.ToString(); mo.OpenId3 = openId; mo.Nickname = userEntity.name; mo.UserSay = userEntity.bio; mo.UserUrl = userEntity.blog; mo.UserMail = userEntity.email; avatar = userEntity.avatar_url; } break; case LoginBase.LoginType.Gitee: { //获取 access_token var tokenEntity = Gitee.AccessToken(new Gitee_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //获取 user var userEntity = Gitee.User(tokenEntity.access_token); Console.WriteLine(userEntity.ToJson()); //openId = userEntity.id.ToString(); mo.Nickname = userEntity.name; mo.UserSay = userEntity.bio; mo.UserUrl = userEntity.blog; avatar = userEntity.avatar_url; } break; case LoginBase.LoginType.TaoBao: { //获取 access_token var tokenEntity = TaoBao.AccessToken(new TaoBao_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); openId = tokenEntity.open_uid; mo.OpenId4 = openId; mo.Nickname = "淘宝用户"; } break; case LoginBase.LoginType.MicroSoft: { //获取 access_token var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //获取 user var userEntity = MicroSoft.User(tokenEntity.access_token); Console.WriteLine(userEntity.ToJson()); openId = userEntity.id; mo.OpenId5 = openId; mo.Nickname = userEntity.last_name + userEntity.first_name; mo.UserMail = userEntity.emails?["account"].ToStringOrEmpty(); } break; case LoginBase.LoginType.DingTalk: { //获取 user var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code); Console.WriteLine(userEntity.ToJson()); openId = userEntity.openid; mo.OpenId6 = openId; mo.Nickname = userEntity.nick; } break; case LoginBase.LoginType.Google: { //获取 access_token var tokenEntity = Google.AccessToken(new Google_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //获取 user var userEntity = Google.User(tokenEntity.access_token); Console.WriteLine(userEntity.ToJson()); //openId = userEntity.sub; avatar = userEntity.picture; } break; case LoginBase.LoginType.AliPay: { //获取 access_token var tokenEntity = AliPay.AccessToken(new AliPay_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //openId = tokenEntity.user_id; //获取 user var userEntity = AliPay.User(new AliPay_User_RequestEntity() { auth_token = tokenEntity.access_token }); Console.WriteLine(userEntity.ToJson()); avatar = userEntity.avatar; } break; case LoginBase.LoginType.StackOverflow: { //获取 access_token var tokenEntity = StackOverflow.AccessToken(new StackOverflow_AccessToken_RequestEntity() { code = authorizeResult.code }); Console.WriteLine(tokenEntity.ToJson()); //获取 user var userEntity = StackOverflow.User(new StackOverflow_User_RequestEntity() { access_token = tokenEntity.access_token }); Console.WriteLine(userEntity.ToJson()); //openId= userEntity.user_id; avatar = userEntity.profile_image; } break; } mo.UserCreateTime = DateTime.Now; mo.UserName = openId; mo.UserPwd = CalcTo.MD5(openId); if (!string.IsNullOrWhiteSpace(avatar)) { mo.UserPhoto = UniqueTo.LongId().ToString() + ".jpg"; } Console.WriteLine(mo.ToJson()); if (string.IsNullOrWhiteSpace(openId)) { vm.Set(SharedEnum.RTag.unauthorized); vm.Msg = "身份验证失败"; } else { //判断是绑定操作 bool isbind = User.Identity.IsAuthenticated && authorizeResult.state.StartsWith("bind"); if (isbind) { int uid = Apps.LoginService.Get(HttpContext).UserId; //检测是否绑定其它账号 var queryIsBind = db.UserInfo.Where(x => x.UserId != uid); switch (vtype) { case LoginBase.LoginType.QQ: queryIsBind = queryIsBind.Where(x => x.OpenId1 == openId); break; case LoginBase.LoginType.WeiBo: queryIsBind = queryIsBind.Where(x => x.OpenId2 == openId); break; case LoginBase.LoginType.GitHub: queryIsBind = queryIsBind.Where(x => x.OpenId3 == openId); break; case LoginBase.LoginType.TaoBao: queryIsBind = queryIsBind.Where(x => x.OpenId4 == openId); break; case LoginBase.LoginType.MicroSoft: queryIsBind = queryIsBind.Where(x => x.OpenId5 == openId); break; case LoginBase.LoginType.DingTalk: queryIsBind = queryIsBind.Where(x => x.OpenId6 == openId); break; } if (queryIsBind.Any()) { return(Content("已绑定其它账号,不能重复绑定")); } var userInfo = db.UserInfo.Find(uid); switch (vtype) { case LoginBase.LoginType.QQ: userInfo.OpenId1 = openId; break; case LoginBase.LoginType.WeiBo: userInfo.OpenId2 = openId; break; case LoginBase.LoginType.GitHub: userInfo.OpenId3 = openId; break; case LoginBase.LoginType.TaoBao: userInfo.OpenId4 = openId; break; case LoginBase.LoginType.MicroSoft: userInfo.OpenId5 = openId; break; case LoginBase.LoginType.DingTalk: userInfo.OpenId6 = openId; break; } db.UserInfo.Update(userInfo); db.SaveChanges(); return(Redirect("/user/setting")); } else { Domain.UserInfo vmo = null; switch (vtype) { case LoginBase.LoginType.QQ: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId1 == openId); break; case LoginBase.LoginType.WeiBo: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId2 == openId); break; case LoginBase.LoginType.GitHub: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId3 == openId); break; case LoginBase.LoginType.TaoBao: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId4 == openId); break; case LoginBase.LoginType.MicroSoft: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId5 == openId); break; case LoginBase.LoginType.DingTalk: vmo = db.UserInfo.FirstOrDefault(x => x.OpenId6 == openId); break; } //未注册 if (vmo == null) { var ruvm = RegisterUser(mo); if (ruvm.Code == 200) { vm = ValidateLogin(vtype, mo); //拉取头像 if (vm.Code == 200 && !string.IsNullOrWhiteSpace(avatar)) { try { //物理根路径 var prp = GlobalTo.GetValue("StaticResource:PhysicalRootPath").Replace("~", GlobalTo.ContentRootPath); var ppath = PathTo.Combine(prp, GlobalTo.GetValue("StaticResource:AvatarPath")); if (!Directory.Exists(ppath)) { Directory.CreateDirectory(ppath); } HttpTo.DownloadSave(HttpTo.HWRequest(avatar), PathTo.Combine(ppath, mo.UserPhoto)); } catch (Exception ex) { Console.WriteLine(ex); } } } else { vm.Msg = ruvm.Msg; } } else { vm = ValidateLogin(vtype, vmo); } } } } } catch (Exception ex) { Apps.FilterConfigs.WriteLog(HttpContext, ex); Response.Headers["X-Output-Msg"] = ex.ToJson(); vm.Set(ex); } //成功 if (vm.Code == 200) { var rurl = Request.Cookies["ReturnUrl"]; rurl = string.IsNullOrWhiteSpace(rurl) ? "/" : rurl; if (rurl.StartsWith("http")) { rurl += "?cookie=ok"; } return(Redirect(rurl)); } else { return(Redirect("/home/error")); } }