Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public bool IsTokenExpired(Access_Token token)
        {
            bool result  = false;
            long timeNow = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);

            if (timeNow >= token.Request_Time + token.Expirse_In)
            {
                result = true;
            }
            return(result);
        }
Ejemplo n.º 2
0
        private void BankCardRecognition_Click(object sender, EventArgs e)
        {
            // OcrDemo.BankCard(imagePath);
            string getRecognitonString = "";
            string errorString         = "";
            var    tempTokenModel      = Access_Token.GetAccessToken();

            if (tempTokenModel.IsSuccess)
            {
                BankCardRecognitionModel tempModel = BankCardRecognition.GetBankCardRecognitionString(tempTokenModel.SuccessModel.access_token, imagePath, ref getRecognitonString, out errorString);

                tb_Json.Text = getRecognitonString;
            }
        }
Ejemplo n.º 3
0
        public Access_Token GetLocAccessToken(long user_id)
        {
            Access_Token token = null;

            KuanMaiEntities db = new KuanMaiEntities();

            var etoken = from p in db.Access_Token where p.Mall_Type_ID == this.Mall_Type_ID && p.User_ID == user_id select p;

            if (etoken != null)
            {
                token = etoken.ToList <Access_Token>()[0];
            }

            return(token);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Get access token from local db
        /// </summary>
        /// <param name="user_id"></param>
        /// <param name="mall_type_id"></param>
        /// <returns></returns>
        private Access_Token GetLocalToken(long user_id, int mall_type_id)
        {
            Access_Token token = null;

            KuanMaiEntities db = new KuanMaiEntities();

            var etoken = from p in db.Access_Token where p.Mall_Type_ID == mall_type_id && p.User_ID == user_id select p;

            if (etoken != null)
            {
                token = etoken.ToList <Access_Token>()[0];
            }

            return(token);
        }
Ejemplo n.º 5
0
        public ActionResult CallBack()
        {
            string code         = Request["code"];
            string mall_type_id = Request["mall"];

            int mall = 0;

            if (!int.TryParse(mall_type_id, out mall))
            {
                return(RedirectToAction("Login", new { message = "商城类型丢失,请不要随意更改URL" }));
            }

            if (string.IsNullOrEmpty(code))
            {
                return(RedirectToAction("Login", new { message = "商城授权码丢失,请不要随意更改URL" }));
            }

            AccessManager accessManager = new AccessManager(mall);
            Access_Token  token         = null;

            try
            {
                token = accessManager.AuthorizationCallBack(code);
            }
            catch (KM.JXC.Common.KMException.KMJXCException ex)
            {
                if (ex.Level == Common.KMException.ExceptionLevel.ERROR)
                {
                    return(RedirectToAction("Login", new { message = ex.Message }));
                }
            }
            catch (Exception bex)
            {
                return(RedirectToAction("Login", new { message = "未知错误,请重新授权" }));
            }

            if (token == null)
            {
                return(RedirectToAction("Login", new { message = "授权失败,请重新授权" }));
            }

            FormsAuthentication.RedirectFromLoginPage(token.User_ID.ToString(), false);

            return(Redirect("/Shop/Dashboard"));
        }
Ejemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public Access_Token GetAccessToken(BUser loginUser)
        {
            Access_Token token = null;

            token = this.GetLocalToken(loginUser.ID, this.Mall_Type_ID);
            if (token != null)
            {
                long timeNow = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);

                //last access token is expried
                if (timeNow >= token.Expirse_In + token.Request_Time)
                {
                    return(null);
                }
                else
                {
                    return(token);
                }
            }

            return(null);
        }
Ejemplo n.º 7
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            string user_id = filterContext.HttpContext.User.Identity.Name;

            if (string.IsNullOrEmpty(user_id))
            {
                filterContext.HttpContext.Response.Redirect("/Home/Login?message=登录信息过期,请重新登录");
            }
            //Verify if the cookie user is a valid user
            UserManager userMgr = new UserManager(int.Parse(user_id), null);
            BUser       user    = userMgr.CurrentUser;

            if (user == null)
            {
                filterContext.HttpContext.Response.Redirect("/Home/Login?message=登录信息丢失,请重新登录并授权");
            }

            //Verify if logon user already has access token in db
            KuanMaiEntities db = new KuanMaiEntities();

            Access_Token token = (from t in db.Access_Token where t.User_ID == user.ID && t.Mall_Type_ID == user.Type.ID select t).FirstOrDefault <Access_Token>();

            if (token == null)
            {
                filterContext.HttpContext.Response.Redirect("/Home/Login?message=没有授权信息,请登录并授权");
            }

            //Verify if the existed access token is expired
            long timeNow = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);

            if (timeNow >= token.Request_Time + token.Expirse_In)
            {
                filterContext.HttpContext.Response.Redirect("/Home/Login?message=授权信息已经过期,请重新登录并授权");
            }
        }
Ejemplo n.º 8
0
 public TaobaoTradeManager(Access_Token token, int mall_type_id)
     : base(mall_type_id, token)
 {
 }
Ejemplo n.º 9
0
 public TaoBaoShopManager(Access_Token token, int mall_type_id)
     : base(mall_type_id, token)
 {
 }
Ejemplo n.º 10
0
 public Access_Token RefreshToken(Access_Token oldToken)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
 public TaobaoProductManager(Access_Token token, int mall_type_id)
     : base(mall_type_id, token)
 {
 }
Ejemplo n.º 12
0
 public PersonsRepository(Access_Token accessToken) : base(accessToken)
 {
 }
Ejemplo n.º 13
0
        /// <summary>
        /// Calback from Mall Open API Authorization, it will verify if current login user has access to the system
        /// </summary>
        /// <param name="code">returns by Mall Open API Authorization</param>
        /// <returns></returns>
        public Access_Token AuthorizationCallBack(string code)
        {
            Access_Token request_token = null;
            BUser        requester     = new BUser();

            //must get access token after mall authorization to identify user
            request_token = TokenManager.RequestAccessToken(code);
            if (request_token == null)
            {
                throw new KMJXCException("没有获取到Access token", ExceptionLevel.SYSTEM);
            }


            requester.Type = new BMallType()
            {
                ID = this.Mall_Type_ID
            };
            requester.Mall_ID   = request_token.Mall_User_ID;
            requester.Mall_Name = request_token.Mall_User_Name;
            requester.Parent_ID = 0;
            requester.Parent    = null;

            KuanMaiEntities db = new KuanMaiEntities();

            try
            {
                var db_user = from u in db.User
                              where u.Mall_ID == requester.Mall_ID && u.Mall_Name == requester.Mall_Name && u.Mall_Type == this.Mall_Type_ID
                              select new BUser
                {
                    ID        = u.User_ID,
                    Name      = u.Name,
                    Mall_Name = u.Mall_Name,
                    Mall_ID   = u.Mall_ID,
                    Password  = u.Password,
                    Parent_ID = (int)u.Parent_User_ID,
                };
                List <BUser> users = db_user.ToList <BUser>();
                //Create user in local db with mall owner id
                if (users.Count == 0)
                {
                    this.InitializeMallManagers(request_token);

                    if (this.ShopManager == null)
                    {
                        throw new KMJXCException("IShopManager 实例为null", ExceptionLevel.SYSTEM);
                    }

                    //check if current user's shop is ready in system
                    Shop shop = this.ShopManager.GetShop(requester);
                    if (shop == null)
                    {
                        BUser subUser = this.MallUserManager.GetSubUser(requester.Mall_ID, requester.Mall_Name);
                        if (subUser == null)
                        {
                            throw new KMJXCException("用户:" + requester.Mall_Name + " 没有对应的" + ((KM.JXC.BL.Open.OBaseManager) this.ShopManager).MallType.Description + ",并且不属于任何店铺的子账户", ExceptionLevel.ERROR);
                        }
                        else
                        {
                            //
                            if (subUser.Parent == null || string.IsNullOrEmpty(subUser.Parent.Mall_Name))
                            {
                                throw new KMJXCException("用户:" + requester.Mall_Name + " 没有对应的" + ((KM.JXC.BL.Open.OBaseManager) this.ShopManager).MallType.Description + ",并且不属于任何店铺的子账户", ExceptionLevel.ERROR);
                            }

                            BUser mainUser = null;

                            var u = from us in db.User
                                    where us.Mall_ID == subUser.Parent.Mall_ID && us.Mall_Type == requester.Type.ID && us.Mall_Name == subUser.Parent.Mall_Name
                                    select new BUser
                            {
                                ID        = us.User_ID,
                                Name      = us.Name,
                                Mall_Name = us.Mall_Name,
                                Mall_ID   = us.Mall_ID,
                                Password  = us.Password,
                                Parent_ID = (int)us.Parent_User_ID,
                                Type      = new BMallType {
                                    ID = us.Mall_Type
                                }
                            };
                            if (u.ToList <BUser>().Count() == 1)
                            {
                                mainUser = u.ToList <BUser>()[0];
                            }

                            if (mainUser == null)
                            {
                                throw new KMJXCException("主账户:" + subUser.Parent.Mall_Name + " 还没有初始化店铺信息,所有子账户无法登录系统", ExceptionLevel.ERROR);
                            }

                            requester.Parent_ID    = mainUser.ID;
                            requester.Parent       = mainUser;
                            requester.EmployeeInfo = subUser.EmployeeInfo;
                        }
                    }

                    //create user in local db
                    requester.Name     = requester.Mall_Name;
                    requester.Password = Guid.NewGuid().ToString();

                    User dbUser = new User();
                    dbUser.User_ID          = requester.ID;
                    dbUser.Mall_ID          = requester.Mall_ID;
                    dbUser.Mall_Name        = requester.Mall_Name;
                    dbUser.NickName         = "";
                    dbUser.Name             = requester.Name;
                    dbUser.Mall_Type        = requester.Type.ID;
                    dbUser.Parent_Mall_ID   = "";
                    dbUser.Parent_Mall_Name = "";
                    dbUser.Parent_User_ID   = 0;
                    dbUser.Password         = "";
                    dbUser.Name             = dbUser.Mall_Name;
                    dbUser.Created          = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
                    dbUser.Modified         = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
                    dbUser.Modified_By      = 0;

                    if (requester.Parent != null)
                    {
                        dbUser.Parent_Mall_ID   = requester.Parent.Mall_ID;
                        dbUser.Parent_Mall_Name = requester.Parent.Mall_Name;
                        dbUser.Parent_User_ID   = requester.Parent.ID;
                    }

                    db.User.Add(dbUser);
                    db.SaveChanges();

                    //create access token for the new user
                    request_token.User_ID = dbUser.User_ID;
                    requester.ID          = dbUser.User_ID;
                    db.Access_Token.Add(request_token);

                    //save employee
                    if (requester.Parent_ID > 0 && requester.EmployeeInfo != null)
                    {
                        requester.EmployeeInfo.User_ID = requester.ID;
                        Employee employee = new Employee();
                        employee.Name         = requester.EmployeeInfo.Name;
                        employee.IdentityCard = requester.EmployeeInfo.IdentityCard;
                        employee.MatureDate   = requester.EmployeeInfo.MatureDate;
                        employee.Phone        = requester.EmployeeInfo.Phone;
                        employee.User_ID      = requester.EmployeeInfo.User_ID;
                        employee.HireDate     = requester.EmployeeInfo.HireDate;
                        employee.Gendar       = requester.EmployeeInfo.Gendar;
                        employee.Duty         = requester.EmployeeInfo.Duty;
                        employee.Email        = requester.EmployeeInfo.Email;
                        employee.Department   = requester.EmployeeInfo.Department;
                        employee.BirthDate    = requester.EmployeeInfo.BirthDate;
                        employee.Address      = requester.EmployeeInfo.Address;
                        db.Employee.Add(employee);
                    }

                    if (shop != null)
                    {
                        //create local shop information for the new main user
                        shop.User_ID        = requester.ID;
                        shop.Parent_Shop_ID = 0;
                        shop.Created        = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
                        shop.Synced         = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
                        db.Shop.Add(shop);
                        db.SaveChanges();

                        //save shop user
                        Shop_User shop_User = new Shop_User();
                        shop_User.User_ID = requester.ID;
                        shop_User.Shop_ID = shop.Shop_ID;
                        db.Shop_User.Add(shop_User);

                        //update dbuser
                        dbUser.Shop_ID = shop.Shop_ID;
                        db.SaveChanges();
                        //create default stock house
                        Store_House shouse = new Store_House();
                        shouse.Shop_ID     = shop.Shop_ID;
                        shouse.Title       = "默认仓库";
                        shouse.User_ID     = requester.ID;
                        shouse.Create_Time = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);
                        db.Store_House.Add(shouse);
                        db.SaveChanges();
                    }

                    if (shop != null && requester.Parent_ID == 0)
                    {
                        //sync mall sub users to system
                        //List<BUser> subUsers = this.MallUserManager.GetSubUsers(requester);
                        //if (subUsers != null && subUsers.Count > 0 && shop.Shop_ID > 0)
                        //{
                        //    foreach (BUser user in subUsers)
                        //    {
                        //        User db1User = new User();
                        //        db1User.Parent_Mall_ID = requester.Mall_ID;
                        //        db1User.Parent_Mall_Name = requester.Mall_Name;
                        //        db1User.Parent_User_ID = (int)requester.ID;
                        //        db1User.Mall_Name = user.Mall_Name;
                        //        db1User.Mall_ID = user.Mall_ID;
                        //        db1User.Mall_Type = user.Type.Mall_Type_ID;
                        //        db1User.Name = user.Name;
                        //        db1User.Password = "";
                        //        db.User.Add(db1User);

                        //        db.SaveChanges();

                        //        if (db1User.User_ID > 0)
                        //        {
                        //            //add shop user
                        //            Shop_User shop_User1 = new Shop_User();
                        //            shop_User1.User_ID = requester.ID;
                        //            shop_User1.Shop_ID = shop.Shop_ID;
                        //            db.Shop_User.Add(shop_User1);

                        //            if (user.EmployeeInfo != null)
                        //            {
                        //                user.EmployeeInfo.User_ID = db1User.User_ID;
                        //                db.Employee.Add(user.EmployeeInfo);
                        //                //db.SaveChanges();
                        //            }
                        //        }
                        //    }

                        //    db.SaveChanges();
                        //}
                    }
                }
                else
                {
                    //Verify if local db has non expried accesstoken
                    requester = users[0];

                    Access_Token local_token = GetLocalToken(requester.ID, this.Mall_Type_ID);
                    if (local_token != null)
                    {
                        long timeNow = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now);

                        //last access token is expried
                        if (timeNow >= local_token.Expirse_In + local_token.Request_Time)
                        {
                            request_token         = TokenManager.RequestAccessToken(code);
                            request_token.User_ID = requester.ID;
                            UpdateLocalAccessToken(request_token);
                        }
                        else
                        {
                            request_token = local_token;
                        }
                    }
                }
            }
            catch (DbEntityValidationException dbex)
            {
                throw new KMJXCException("登录失败,请联系管理员");
            }
            catch (Exception ex)
            {
                throw new KMJXCException(ex.Message, ExceptionLevel.SYSTEM);
            }
            finally
            {
                if (db != null)
                {
                    db.Dispose();
                }
            }

            return(request_token);
        }
Ejemplo n.º 14
0
 /// <summary>
 /// Initialize IManager instances
 /// </summary>
 /// <param name="token">Access token got from IAccessToken</param>
 private void InitializeMallManagers(Access_Token token)
 {
     this.ShopManager     = new TaoBaoShopManager(token, this.Mall_Type_ID);
     this.MallUserManager = new TaoBaoUserManager(token, this.Mall_Type_ID);
 }
Ejemplo n.º 15
0
 //Contstructor
 public BaseRepository(Access_Token accessToken)
 {
     _accessToken = accessToken;
 }