示例#1
0
        public JsonResult GET(string userId, string mode)
        {
            //Response.Redirect("/Error");
            if (ValidateSession())
            {
                if (string.IsNullOrWhiteSpace(userId) || string.IsNullOrWhiteSpace(mode))
                {
                    return(RequestIllegal);
                }
                if (userId != CurrentUser.ObjectId)
                {
                    return(RequestIllegal);
                }
                switch (mode)
                {
                case "true":
                    //Create Password
                    if (!string.IsNullOrWhiteSpace(CurrentUser.Password))
                    {
                        return(RequestIllegal);
                    }
                    else
                    {
                        string token = OnePassTicket.CreateTicket();
                        OnePassTicket.TryAdd(token, new TicketInfo(TicketUsage.AddPassword, Request.Headers["User-Agent"], CurrentUser.UserName, 600));
                        return(SpecialisedInfo(token));
                    }

                case "false":
                    //Register User....
                    if (string.IsNullOrEmpty(CurrentUser.Password))
                    {
                        return(RequestIllegal);
                    }
                    else
                    {
                        string token = OnePassTicket.CreateTicket();
                        OnePassTicket.TryAdd(token, new TicketInfo(TicketUsage.UserRegister, Request.Headers["User-Agent"], CurrentUser.UserName, 600));
                        return(SpecialisedInfo(token));
                    }

                default: return(RequestIllegal);
                }
            }
            else
            {
                return(SessionError);
            }
        }
示例#2
0
        public IActionResult WeChatLogin(string state, string code)
        {
            ViewData["where"] = ControllerName;
            if (string.IsNullOrEmpty(Request.Cookies["WB_WXLoginOption"]) || string.IsNullOrEmpty(state) || string.IsNullOrEmpty(code))
            {
                return(RequestIllegal(ServerAction.WeChatLogin_PreExecute, XConfig.Messages["WeChatRequestStatusUnexcepted"]));
            }
            else
            {
                WeChatHelper.PrepareCodes();
                //object LogonUser = null;
                Dictionary <string, string> JSON = PublicTools.HTTPGet("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=" + WeChatHelper.AccessToken + "&code=" + code);
                if (!JSON.ContainsKey("UserId"))
                {
                    L.E("WeChat JSON doesnot Contain: UserID, " + JSON.Stringify());
                    return(null);
                }
                string WeiXinID = JSON["UserId"];
                switch (DataBaseOperation.QuerySingle(new DBQuery().WhereEqualTo("Username", WeiXinID), out UserObject User))
                {
                //Internal Error...
                case DBQueryStatus.INTERNAL_ERROR:
                    L.E("SessionManager: Failed to get User by its UserName --> DataBase Inernal Error....");
                    return(DatabaseError(ServerAction.WeChatLogin_PostExecute, XConfig.Messages["InternalDataBaseError"]));

                //No User Found, expencted to be redirected to User Register
                //However, This feature is still under developing....
                case DBQueryStatus.NO_RESULTS:
                    string token = OnePassTicket.CreateTicket();
                    OnePassTicket.TryAdd(token, new TicketInfo(TicketUsage.UserRegister, Request.Headers["User-Agent"], WeiXinID));
                    return(Redirect($"/Account/Register?token={token}&user={WeiXinID}&_action=register"));

                //Normal Result. User is the logon user....
                case DBQueryStatus.ONE_RESULT:
                    UpdateUser(User);
                    Response.Cookies.Delete("WB_WXLoginOption");
                    return(Redirect("/Home/Index/"));

                //?????
                default:
                    L.E("HomeController: Unexpected Database Query Result for WeChatLogin...");
                    return(DatabaseError(ServerAction.WeChatLogin_PostExecute, XConfig.Messages["WrongDataReturnedFromDatabase"]));
                }
            }
        }
示例#3
0
 public override IActionResult Index()
 {
     ViewData["where"] = "Home";
     if (ValidateSession())
     {
         if (CurrentUser.UserGroup.AnyThing)
         {
             if (Request.Cookies["LoginRedirect"] != null)
             {
                 Response.Cookies.Delete("LoginRedirect");
                 return(Redirect(Request.Cookies["LoginRedirect"]));
             }
             else
             {
                 ViewData["_User"] = CurrentUser;
                 return(View());
             }
         }
         else
         {
             Response.Cookies.Delete("Session");
             return(RequestIllegal(ServerAction.Home_Index, XConfig.Messages["UserAccoutNotVerified_With_UserID"] + CurrentUser.ObjectId, ResponceCode.Default));
         }
     }
     else
     {
         string ticket = OnePassTicket.CreateTicket();
         string Stamp  = ticket + ";WCLogin";
         string url    = string.Join("", "https://open.weixin.qq.com/connect/oauth2/authorize?",
                                     "appid=", XConfig.Current.WeChat.CorpID,
                                     "&redirect_uri=", Request.Scheme, "://" + Request.Host, "/Home/WeChatLogin",
                                     "&response_type=code" +
                                     "&scope=snsapi_userinfo" +
                                     "&agentid=", XConfig.Current.WeChat.AgentId,
                                     "&state=", Stamp, "#wechat_redirect");
         Response.Cookies.Append("WB_WXLoginOption", Stamp, new CookieOptions()
         {
             Path = "/", Expires = DateTimeOffset.Now.AddMinutes(2)
         });
         OnePassTicket.TryAdd(ticket, new TicketInfo(TicketUsage.WeChatLogin, Request.Headers["User-Agent"], "WeChat_Login"));
         return(Redirect(url));
     }
 }
示例#4
0
 public IActionResult Register(string token, string user, string _action)
 {
     ViewData["where"] = ControllerName;
     if (token != null && OnePassTicket.OnAccessed(token, out TicketInfo info) &&
         user == info.UserID &&
         info.Usage == TicketUsage.UserRegister &&
         (info.User_Agent == "JumpToken_FreeLogin" || info.User_Agent == Request.Headers["User-Agent"]))
     {
         ViewData["UserName"] = info.UserID;
         ViewData["mode"]     = _action;
         return(_action == "AddPassword"
             ? info.Usage == TicketUsage.AddPassword
                 ? View()
                 : RequestIllegal(ServerAction.MyAccount_UserRegister, XConfig.Messages["TokenUsageInvalid"] + info.UserID)
             : _action == "changePassword"
                 ? NotSupported(ServerAction.MyAccount_UserRegister, XConfig.Messages["NotSupportedOnlinePswdChange_GotoWinClient"])
                 : NotSupported(ServerAction.MyAccount_UserRegister, XConfig.Messages["NotSupportedUserRegister_ContactAdmin"]));
         //return _action == "register"
         //    ? View()
         //    : _InternalError(ServerSideAction.Home_UserRegister, "请求所带的参数无效", user + info?.UserID);
     }
     return(RequestIllegal(ServerAction.MyAccount_UserRegister, XConfig.Messages["TokenTimeout"]));
 }