示例#1
0
        public object ActivePhoneNumber(string phoneNumber, int code)
        {
            int Status = db.ActiveAccountByPhoneAndCode(phoneNumber, code).First().Value;

            // Invalid Phone Number
            if (Status == 1)
            {
                return(new ResponseVM(RequestTypeEnumVM.Error, Token.InvalidPhoneNotFound));
            }
            //Invalid Active Code
            if (Status == 2)
            {
                return(new ResponseVM(RequestTypeEnumVM.Error, Token.InvalidCode));
            }
            //Already Activated
            if (Status == 3)
            {
                return(new ResponseVM(RequestTypeEnumVM.Info, Token.AlreadyActivated));
            }

            var User = db.Users.First(c => c.PhoneNumber == phoneNumber);


            LanguageService.SetCulture(User.LanguageType.Code);
            //Now Create Access Token
            AccessTokenVM AccessToken = CreateS.CreateToken(User, User.LanguageType.Code, false);

            //Activated
            return(new ResponseVM(RequestTypeEnumVM.Success, Token.Activated,
                                  new
            {
                IsActivePhone = true,
                UserInformation = new UsersData().GetUserIformation(User.Id),
                AccessToken
            }));
        }
        /**
         * snsapi_base
         * **/
        public async Task <ActionResult> OAuthSnsApiBase()
        {
            string code = Request.QueryString["code"];

            try
            {
                if (!string.IsNullOrEmpty(code))
                {
                    OAuthToken oauthToken = await WeChatHepler.GetAsync <OAuthToken>(
                        $"https://api.weixin.qq.com/sns/oauth2/access_token?appid={SettingsManager.WeiXin.AppId}&secret={SettingsManager.WeiXin.AppSecret}&code={code}&grant_type=authorization_code");

                    string        accesstoken = string.Empty;
                    AccessTokenVM tokenVm     = await WeChatHepler.GetAccessTokenAsync(SettingsManager.WeiXin.AppId, SettingsManager.WeiXin.AppSecret);

                    if (!string.IsNullOrEmpty(tokenVm?.access_token))
                    {
                        accesstoken = tokenVm.access_token;
                    }

                    if (oauthToken != null && !string.IsNullOrEmpty(oauthToken.openid))
                    {
                        OAuthUserInfo userInfo = await WeChatHepler.GetAsync <OAuthUserInfo>(
                            $"https://api.weixin.qq.com/cgi-bin/user/info?access_token={accesstoken}&openid={oauthToken.openid}&lang=zh_CN");

                        if (userInfo != null)
                        {
                            Log("获取到用户信息nickName:" + userInfo.nickname);
                            // return View(userInfo);

                            //BatchSendMessagesVM message = new BatchSendMessagesVM { Touser = new string[] { userInfo.Openid, "oBjaPuA6nUCz6ufJFtse-3sDYB4I" }, Msgtype = "text", Text = new Message { Content = "测试消息!" } };
                            var message = new SingleSendMessagesVM {
                                ToUser = userInfo.Openid, MsgType = "text", Text = new Message {
                                    Content = "单发测试消息!"
                                }
                            };

                            string json = JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.Indented,
                                                                      new JsonSerializerSettings {
                                ContractResolver = new LowercaseContractResolver()
                            });

                            Log("post:" + json);
                            HttpContent content = new StringContent(json);
                            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");


                            var oo = await WeChatHepler.SingleSendMessagesAsync(accesstoken, content);


                            Log("群发消息:" + oo.ErrMsg);

                            ViewData["headImage"] = userInfo.headimgurl;
                            ViewData["openid"]    = userInfo.Openid;
                            ViewData["nickName"]  = userInfo.nickname;
                            if (userInfo.sex == 0)
                            {
                                ViewData["sex"] = "未知";
                            }
                            else if (userInfo.sex == 1)
                            {
                                ViewData["sex"] = "男";
                            }
                            else
                            {
                                ViewData["sex"] = "女";
                            }
                            ViewData["province"] = userInfo.province;
                            ViewData["city"]     = userInfo.city;
                        }
                        else
                        {
                            Log("未获取到用户信息");
                        }
                    }
                    else
                    {
                        Log("access_token:" + oauthToken.access_token + ",openid:" + oauthToken.openid);
                    }
                }
                else
                {
                    return(Redirect(
                               $"https://open.weixin.qq.com/connect/oauth2/authorize?appid={SettingsManager.WeiXin.AppId}&redirect_uri={"http://" + Request.Url.Host + Url.Action("OAuthSnsApiBase")}&response_type=code&scope=snsapi_base&state=123456#wechat_redirect"));
                }
            }
            catch (Exception ex)
            {
                Log(ex.Message);
                ViewData["errmsg"] = ex.Message;
            }

            return(View());
        }
示例#3
0
        public object Login(string userName, string password, bool isRemmberMe)
        {
            CheckedService CheckedS = new CheckedService(db);
            CreateService  CreateS  = new CreateService(db);

            UserService UserS   = new UserService();
            string      Culture = LanguageService.DefaultLangage;

            UserVM UserData = new UserVM
            {
                Id       = db.Users_CheckFromUserNameIsValid(userName).First(),
                UserName = userName,
                Password = password
            };

            //Create User Login And Check Is Block
            //Check User Name Used
            if (!UserData.Id.HasValue)
            {
                return(new ResponseVM(RequestTypeEnumVM.Error, Token.InvalidData));
            }

            //Add User Login With Statues Login Right Now
            User User = CreateS.UserLogin(UserData);

            if (User == null)
            {
                return(new ResponseVM(RequestTypeEnumVM.Error, Token.InvalidData));
            }


            if (User.IsPhoneActivated == false)
            {
                return(new ResponseVM(RequestTypeEnumVM.Error, Token.YouAreNotActive, new
                {
                    IsActivePhone = false,
                    UserInformation = new
                    {
                        PhoneNumber = User.PhoneNumber
                    }
                }));
            }

            //Check last Login is Block
            if (User.IsBlocked)
            {
                //retuen message Account Block
                return(new ResponseVM(RequestTypeEnumVM.Error, Token.YoureAccountIsBlocked));
            }
            else
            //Check last Login Statues
            if (!User.IsSuccessLogin)
            {
                return(new ResponseVM(RequestTypeEnumVM.Error, Token.InvalidData));
            }

            /*
             * Check user role mustbe if Client or Client
             **Notes** any user login in app basically included role client
             */
            if (!CheckedS.Roles(User.UserRoles, new int[] { RoleEnumVM.Client }))
            {
                return(new ResponseVM(RequestTypeEnumVM.Error, Token.YouNotClient));
            }

            Culture = User.LanguageType.Code;

            LanguageService.SetCulture(Culture);
            //Now Create Access Token
            AccessTokenVM AccessToken = CreateS.CreateToken(User, Culture, isRemmberMe);
            ResponseVM    Res         = new ResponseVM();

            Res.RequestType = RequestTypeEnumVM.Success;
            Res.Data        = new
            {
                IsActivePhone   = true,
                UserInformation = new UsersData().GetUserIformation(User.Id),
                AccessToken
            };
            //return the token
            return(Res);
        }