public virtual void SignIn(UserBase user, bool createPersistentCookie)
        {
            var now = DateTime.UtcNow.ToLocalTime();

            var ticket = new FormsAuthenticationTicket(
                1 /*version*/,
                user.UserName,
                now,
                now.Add(_expirationTimeSpan),
                createPersistentCookie,
                user.UserName,


                FormsAuthentication.FormsCookiePath);

            var encryptedTicket = FormsAuthentication.Encrypt(ticket);

            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
            cookie.HttpOnly = true;
            if (ticket.IsPersistent)
            {
                cookie.Expires = ticket.Expiration;
            }
            cookie.Secure = FormsAuthentication.RequireSSL;
            cookie.Path = FormsAuthentication.FormsCookiePath;
            if (FormsAuthentication.CookieDomain != null)
            {
                cookie.Domain = FormsAuthentication.CookieDomain;
            }

            _httpContext.Response.Cookies.Add(cookie);
            _cachedCustomer = user;
        }
예제 #2
0
 //public YpAuthorizeAttribute()
 //{
 //}
 public override void OnAuthorization(AuthorizationContext filterContext)
 {
     //            var builder = new ContainerBuilder();
     //            var containerManager = new ContainerManager(builder.Build());
     //            WorkContext = containerManager.Resolve<IWorkContext>();
     User = WorkContext.CurrentUser as UserBase;
     //用户权限判断
     //获取 controller  名称
     var controllerName = filterContext.RouteData.Values["controller"].ToString();
     //获取 action 名称
     var actionName = filterContext.RouteData.Values["action"].ToString();
     if (User != null &&
         !User.UserRoles.ToList()
             .Exists(
                 ur =>
                     ur.Role.RoleName == "superAdmin" ||
                     ur.Role.RolePermissions.ToList()
                         .Exists(
                             rp =>
                                 rp.IsAllowed && rp.ControllerAction.ActionName == actionName &&
                                 rp.ControllerAction.ControllerName == controllerName)))
     {
         //filterContext.HttpContext.Response.StatusCode = 403;
         IsAllowed = false;
     }
     else
     {
         IsAllowed = true;
     }
     base.OnAuthorization(filterContext);
 }
예제 #3
0
        /// <summary>
        /// 设置加密密码
        /// </summary>
        /// <param name="userBase">用户实体</param>
        /// <param name="password">密码</param>
        /// <param name="hashName">加密算法(默认MD5)</param>
        public static void SetPasswordHashed(UserBase userBase, string password,string hashName = "MD5")
        {
            string saltString;
            var hashstring = EncrypHelper.HashEncrypt(password, hashName, out saltString);

            userBase.HashAlgorithm = hashName;
            userBase.Password = hashstring;
            userBase.PasswordSalt = saltString;
        }
예제 #4
0
 public bool ModifyUser(UserBase user)
 {
     try
     {
         _userRepository.Update(user);
         return true;
     }
     catch (Exception e)
     {
         _log.Error(e, "更新用户失败");
         return false;
     }
 }
예제 #5
0
 public bool DeleteUser(UserBase user)
 {
     try
     {
         _userRepository.Delete(user);
         return true;
     }
     catch (Exception e)
     {
         _log.Error(e, "删除用户失败");
         return false;
     }
 }
예제 #6
0
        public UserBase InsertUser(UserBase user)
        {
            try
            {
                _userRepository.Insert(user);
                return user;
            }
            catch (Exception e)
            {
                _log.Error(e,"添加用户失败");
                return null;
            }

        }
        public virtual UserBase GetAuthenticatedUser()
        {
            if (_cachedCustomer != null)
                return _cachedCustomer;

            if (_httpContext == null ||
                _httpContext.Request == null ||
                !_httpContext.Request.IsAuthenticated ||
                !(_httpContext.User.Identity is FormsIdentity))
            {
                return null;
            }

            var formsIdentity = (FormsIdentity)_httpContext.User.Identity;
            var customer = GetAuthenticatedCustomerFromTicket(formsIdentity.Ticket);
            _cachedCustomer = customer;
            return _cachedCustomer;
        }
        public override void OnAuthorization(HttpActionContext filterContext)
        {
            //            var builder = new ContainerBuilder();
            //            var containerManager = new ContainerManager(builder.Build());
            //            WorkContext = containerManager.Resolve<IWorkContext>();
            User = WorkContext.CurrentUser as UserBase;
            //用户权限判断
            //获取 controller  名称        
            var controllerName = filterContext.ControllerContext.ControllerDescriptor.ControllerType.FullName;
            //获取 action 名称      
            var actionName = filterContext.ActionDescriptor.ActionName;

            if (User == null || !DoAuthorized(User.UserRoles.ToList(),controllerName,actionName))
            {
                //filterContext.Response.StatusCode = HttpStatusCode.Forbidden;
                IsAllowed = false;
            }
            else
            {
                IsAllowed = true;
            }
            base.OnAuthorization(filterContext);
        }
예제 #9
0
        public HttpResponseMessage AddBroker([FromBody]BrokerModel brokerModel)
        {
            var validMsg = "";
            if (!brokerModel.ValidateModel(out validMsg))
            {
                return PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误,请重新输入"));
            }

            #region 验证码判断 解密
            var strDes = EncrypHelper.Decrypt(brokerModel.Hidm, "Hos2xNLrgfaYFY2MKuFf3g==");//解密
            string[] str = strDes.Split('$');
            if (str.Count() < 2)
            {
                return PageHelper.toJson(PageHelper.ReturnValue(false, "验证码错误,请重新发送!"));
            }
            string source = str[0];//获取验证码和手机号
            DateTime date = Convert.ToDateTime(str[1]);//获取发送验证码的时间
            DateTime dateNow = Convert.ToDateTime(DateTime.Now.ToLongTimeString());//获取当前时间
            TimeSpan ts = dateNow.Subtract(date);
            double secMinu = ts.TotalMinutes;//得到发送时间与现在时间的时间间隔分钟数
            if (secMinu > 3) //发送时间与接受时间是否大于3分钟
            {
                return PageHelper.toJson(PageHelper.ReturnValue(false, "你已超过时间验证,请重新发送验证码!"));
            }
            else
            {
                // source.Split('#')[0] 验证码
                // source.Split('#')[1] 手机号
                if (brokerModel.Phone != source.Split('#')[1])//判断手机号是否一致
                {
                    return PageHelper.toJson(PageHelper.ReturnValue(false, "验证码错误,请重新发送!"));
                }

                if (brokerModel.MobileYzm != source.Split('#')[0])//判断验证码是否一致
                {
                    return PageHelper.toJson(PageHelper.ReturnValue(false, "验证码错误,请重新发送!"));
                }
            }

            #endregion

            #region 判断两次密码是否一致
            if (brokerModel.Password != brokerModel.SecondPassword)
            {
                return PageHelper.toJson(PageHelper.ReturnValue(false, "手机号不能为空"));
            }
            #endregion

            #region 判断邀请码是否存在真实  (brokerInfoController 中GetBrokerByInvitationCode方法也同一判断)
            MessageDetailEntity messageDetail = null;
            if (!string.IsNullOrEmpty(brokerModel.inviteCode))
            {

                MessageDetailSearchCondition messageSearchcondition = new MessageDetailSearchCondition
                {
                    InvitationCode = brokerModel.inviteCode,
                    Title = "推荐经纪人"
                };
                messageDetail = _MessageService.GetMessageDetailsByCondition(messageSearchcondition).FirstOrDefault();//判断邀请码是否存在
                if (messageDetail == null)
                {
                    return PageHelper.toJson(PageHelper.ReturnValue(false, "邀请码错误!"));
                }
            }
            #endregion


            #region UC用户创建 杨定鹏 2015年5月28日14:52:48
            var user = _userService.GetUserByName(brokerModel.UserName);
            if(user!=null)
            {
                return PageHelper.toJson(PageHelper.ReturnValue(false, "用户名已经存在"));
            }


            var condition = new BrokerSearchCondition
            {
                OrderBy = EnumBrokerSearchOrderBy.OrderById,
                State = 1,
                Phone = brokerModel.Phone
            };

            //判断user表和Broker表中是否存在用户名
            int user2 = _brokerService.GetBrokerCount(condition);

            if (user2 != 0) return PageHelper.toJson(PageHelper.ReturnValue(false, "手机号已经存在"));

            var brokerRole = _roleService.GetRoleByName("user");

            //User权限缺少时自动添加
            if (brokerRole == null)
            {
                brokerRole = new Role
                {
                    RoleName = "user",
                    RolePermissions = null,
                    Status = RoleStatus.Normal,
                    Description = "刚注册的用户默认归为普通用户user"
                };
            }

            var newUser = new UserBase
            {
                UserName = brokerModel.UserName,
                Password = brokerModel.Password,
                RegTime = DateTime.Now,
                NormalizedName = brokerModel.UserName.ToLower(),
                //注册用户添加权限
                UserRoles = new List<UserRole>(){new UserRole()
                {
                    Role = brokerRole
                }},
                Status = 0
            };

            PasswordHelper.SetPasswordHashed(newUser, brokerModel.Password);

            #endregion

            #region Broker用户创建 杨定鹏 2015年5月28日14:53:32

            var model = new BrokerEntity();
            model.UserId = _userService.InsertUser(newUser).Id;
            model.Brokername = brokerModel.Phone;
            model.Nickname = brokerModel.Nickname;
            model.Phone = brokerModel.Phone;
            model.Totalpoints = 0;
            model.Amount = 0;
            model.Usertype = EnumUserType.普通用户;
            model.Regtime = DateTime.Now;
            model.State = 1;
            model.Adduser = 0;
            model.Addtime = DateTime.Now;
            model.Upuser = 0;
            model.Uptime = DateTime.Now;

            //判断初始等级是否存在,否则创建
            var level = _levelService.GetLevelsByCondition(new LevelSearchCondition { Name = "默认等级" }).FirstOrDefault();
            if (level == null)
            {
                var levelModel = new LevelEntity
                {
                    Name = "默认等级",
                    Describe = "系统默认初始创建",
                    Url = "",
                    Uptime = DateTime.Now,
                    Addtime = DateTime.Now,
                };
                _levelService.Create(levelModel);
            }

            model.Level = level;

            var newBroker = _brokerService.Create(model);



            #endregion

            #region 推荐经纪人
            if (!string.IsNullOrEmpty(brokerModel.inviteCode))
            {
                //添加经纪人
                var entity = new RecommendAgentEntity
                {
                    PresenteebId = newBroker.Id,
                    Qq = newBroker.Qq.ToString(),
                    Agentlevel = newBroker.Agentlevel,
                    Brokername = newBroker.Brokername,
                    Phone = newBroker.Phone,
                    Regtime = DateTime.Now,
                    Broker = _brokerService.GetBrokerById(Convert.ToInt32(messageDetail.InvitationId)),
                    Uptime = DateTime.Now,
                    Addtime = DateTime.Now,
                };

                _recommendagentService.Create(entity);
            }
            #endregion

            return PageHelper.toJson(PageHelper.ReturnValue(true, "注册成功"));
        }
예제 #10
0
 public HttpResponseMessage SignUp([FromBody] UserModel model)
 {
     var user = _userService.GetUserByName(model.UserName);
     if (user != null)
     {
         return PageHelper.toJson(PageHelper.ReturnValue(false, "用户名已经存在"));
     }
     var newUser = new UserBase
     {
         UserName = model.UserName,
         Password = model.Password,
         RegTime = DateTime.Now,
         NormalizedName = model.UserName.ToLower(),
         Status = 0
     };
     PasswordHelper.SetPasswordHashed(newUser, model.Password);
     if (_userService.InsertUser(newUser).Id <= 0)
     {
         return PageHelper.toJson(PageHelper.ReturnValue(false, "注册用户失败,请重试"));
     }
     return PageHelper.toJson(PageHelper.ReturnValue(true, "注册成功"));
 }
예제 #11
0
        public HttpResponseMessage ExternalLoginOrAdd([FromBody]UserModel model)
        {
            if(!string.IsNullOrEmpty( model.Phone)  && !string.IsNullOrEmpty( model.Password))
            {
                //1 先判断手机号是否存在
                var condition = new BrokerSearchCondition
                {                   
                    State = 1,
                    Phone = model.Phone
                };
                //判断Broker表中是否存在手机号
                int brokerCount = _brokerService.GetBrokerCount(condition);
                if (brokerCount != 0)
                {
                    //存在  就进行登录

                    #region 登录

                    BrokerEntity broker = _brokerService.GetBrokersByCondition(condition).FirstOrDefault();
                    if (broker == null)
                    {
                        return PageHelper.toJson(PageHelper.ReturnValue(false, "手机号或密码错误"));
                    }
                 
                    var user = _userService.FindUser(broker.UserId);
                    if (user == null)
                    {
                        return PageHelper.toJson(PageHelper.ReturnValue(false, "用户名或密码错误"));
                    }
                    if (!PasswordHelper.ValidatePasswordHashed(user, model.Password))
                    {
                        return PageHelper.toJson(PageHelper.ReturnValue(false, "用户名或密码错误")); 
                    }
                    _authenticationService.SignIn(user, model.Remember);

                    return PageHelper.toJson(PageHelper.ReturnValue(true, "ok"));

                    #endregion 
                }
                else //不存在  就进行注册
                {

                    #region UC用户创建 杨定鹏 2015年5月28日14:52:48
                                     
                    var brokerRole = _roleService.GetRoleByName("user");

                    //User权限缺少时自动添加
                    if (brokerRole == null)
                    {
                        brokerRole = new Role
                        {
                            RoleName = "user",
                            RolePermissions = null,
                            Status = RoleStatus.Normal,
                            Description = "刚注册的用户默认归为普通用户user"
                        };
                    }

                    var newUser = new UserBase
                    {
                        UserName = model.Phone,
                        Password = model.Password,
                        RegTime = DateTime.Now,
                        NormalizedName = model.Phone,
                        //注册用户添加权限
                        UserRoles = new List<UserRole>(){new UserRole()
                       {
                         Role = brokerRole
                       }},
                        Status = 0
                    };

                    PasswordHelper.SetPasswordHashed(newUser, model.Password);

                    #endregion

                    #region Broker用户创建 杨定鹏 2015年5月28日14:53:32

                    var models = new BrokerEntity();
                    models.UserId = _userService.InsertUser(newUser).Id;
                    models.Brokername = model.Phone;
                    models.Nickname = model.Phone;
                    models.Phone = model.Phone;
                    models.Totalpoints = 0;
                    models.Amount = 0;
                    models.Usertype = EnumUserType.普通用户;
                    models.Regtime = DateTime.Now;
                    models.State = 1;
                    models.Adduser = 0;
                    models.Addtime = DateTime.Now;
                    models.Upuser = 0;
                    models.Uptime = DateTime.Now;

                    //判断初始等级是否存在,否则创建
                    var level = _levelService.GetLevelsByCondition(new LevelSearchCondition { Name = "默认等级" }).FirstOrDefault();
                    if (level == null)
                    {
                        var levelModel = new LevelEntity
                        {
                            Name = "默认等级",
                            Describe = "系统默认初始创建",
                            Url = "",
                            Uptime = DateTime.Now,
                            Addtime = DateTime.Now,
                        };
                        _levelService.Create(levelModel);
                    }
                    models.Level = level;
                    var newBroker = _brokerService.Create(models);
                    #endregion
                  
                    return PageHelper.toJson(PageHelper.ReturnValue(true, "ok"));

                }                          
            }
            return PageHelper.toJson(PageHelper.ReturnValue(false, "请填写手机号和密码"));
        }
예제 #12
0
        public HttpResponseMessage AddMember([FromBody]MemberModel memberModel)
        {
            var validMsg = "";
            if (!memberModel.ValidateModel(out validMsg))
            {
                return PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误,请重新输入"));
            }

            if (memberModel.Password != memberModel.SecondPassword)
            {
                return PageHelper.toJson(PageHelper.ReturnValue(false, "两次密码输入不一致"));
            }

            var user = _userService.GetUserByName(memberModel.UserName);
            if (user != null)
            {
                return PageHelper.toJson(PageHelper.ReturnValue(false, "用户名已经存在"));
            }
            var condition = new MemberSearchCondition
            {
                OrderBy = EnumMemberSearchOrderBy.OrderById,
                Phone = memberModel.Phone
            };

            //判断user表和member表中是否存在用户名
            int user2 = _memberService.GetMemberCount(condition);
            if (user2 != 0) return PageHelper.toJson(PageHelper.ReturnValue(false, "手机号已经存在"));

            var memRole = _roleService.GetRoleByName("user");

            //User权限缺少时自动添加
            if (memRole == null)
            {
                memRole = new Role
                {
                    RoleName = "user",
                    RolePermissions = null,
                    Status = RoleStatus.Normal,
                    Description = "刚注册的用户默认归为普通用户user"
                };
            }

            var newUser = new UserBase
            {
                UserName = memberModel.UserName,
                Password = memberModel.Password,
                RegTime = DateTime.Now,
                NormalizedName = memberModel.UserName.ToLower(),
                //注册用户添加权限
                UserRoles = new List<UserRole>(){new UserRole()
                {
                    Role = memRole
                }},
                Status = 0
            };
            
            PasswordHelper.SetPasswordHashed(newUser, memberModel.Password);

            var model = new MemberEntity();
            model.UserId = _userService.InsertUser(newUser).Id;
            model.RealName = memberModel.UserName;
            model.UserName = memberModel.UserName;
            model.Phone = memberModel.Phone;
            model.Points=0;
            model.IdentityNo="";
            model.Icq="";
            model.PostNo="";
            model.AccountNumber=0;
            model.AddTime=DateTime.Now;
            model.Gender=EnumGender.Male;
            model.UpdTime =DateTime.Now;
            model.UpdUser=0;
            var newMember = _memberService.Create(model);
            return PageHelper.toJson(PageHelper.ReturnValue(true, "注册成功"));
        }
 public virtual void SignOut()
 {
     _cachedCustomer = null;
     FormsAuthentication.SignOut();
 }
예제 #14
0
        public HttpResponseMessage AddBroker([FromBody]BrokerModel brokerModel)
        {
            if (string.IsNullOrEmpty(brokerModel.UserName)) return PageHelper.toJson(PageHelper.ReturnValue(false, "用户名不能为空"));
            if (string.IsNullOrEmpty(brokerModel.Password)) return PageHelper.toJson(PageHelper.ReturnValue(false, "密码不能为空"));
            if (string.IsNullOrEmpty(brokerModel.Phone)) return PageHelper.toJson(PageHelper.ReturnValue(false, "手机号不能为空"));
            // 创建推荐用户
            var condition = new BrokerSearchCondition
            {
                OrderBy = EnumBrokerSearchOrderBy.OrderById,
                Phone = brokerModel.Phone
            };
            //判断user表和Broker表中是否存在用户名
            int user2 = _brokerService.GetBrokerCount(condition);

            if (user2 != 0) return PageHelper.toJson(PageHelper.ReturnValue(false, "用户名已经存在"));

            //检测规则表中是否存在权限,不存在则添加
            var role = "broker";
            switch (brokerModel.UserType)
            {
                case EnumUserType.经纪人:
                    role = "broker";
                    break;
                case EnumUserType.商家:
                    role = "merchant";
                    break;
                case EnumUserType.场秘:
                    role = "secretary";
                    break;
                case EnumUserType.带客人员:
                    role = "waiter";
                    break;
                case EnumUserType.普通用户:
                    role = "user";
                    break;
                case EnumUserType.管理员:
                    role = "admin";
                    break;
                case EnumUserType.财务:
                    role = "accountant";
                    break;
            }

            var brokerRole = _roleService.GetRoleByName(role);

            //User权限缺少时自动添加
            if (brokerRole == null)
            {
                brokerRole = new Role
                {
                    RoleName = role,
                    RolePermissions = null,
                    Status = RoleStatus.Normal,
                    Description = "后台添加新权限类别:" + role
                };
            }

            var newUser = new UserBase
            {
                UserName = brokerModel.UserName,
                Password = brokerModel.Password,
                RegTime = DateTime.Now,
                NormalizedName = brokerModel.UserName.ToLower(),
                //注册用户添加权限
                UserRoles = new List<UserRole>(){new UserRole()
                {
                    Role = brokerRole
                }},
                Status = 0
            };
            PasswordHelper.SetPasswordHashed(newUser, brokerModel.Password);
            var model = new BrokerEntity();
            model.UserId = _userService.InsertUser(newUser).Id;
            model.Brokername = brokerModel.UserName;
            model.Phone = brokerModel.Phone;
            model.Totalpoints = 0;
            model.Amount = 0;
            model.Usertype = brokerModel.UserType;
            model.Regtime = DateTime.Now;
            model.State = 1;
            model.Adduser = 0;
            model.Addtime = DateTime.Now;
            model.Upuser = 0;
            model.Uptime = DateTime.Now;

            //判断初始等级是否存在,否则创建
            var level = _levelService.GetLevelsByCondition(new LevelSearchCondition { Name = "默认等级" }).FirstOrDefault();
            if (level == null)
            {
                var levelModel = new LevelEntity
                {
                    Name = "默认等级",
                    Describe = "系统默认初始创建",
                    Url = "",
                    Uptime = DateTime.Now,
                    Addtime = DateTime.Now,
                };
                _levelService.Create(levelModel);
            }
            model.Level = level;
            _brokerService.Create(model);
            return PageHelper.toJson(PageHelper.ReturnValue(true, "注册成功"));
        }
예제 #15
0
 /// <summary>
 /// 验证密码
 /// </summary>
 /// <param name="userBase">用户实体</param>
 /// <param name="password">密码</param>
 /// <returns>是否通过</returns>
 public static bool ValidatePasswordHashed(UserBase userBase, string password)
 {
     return EncrypHelper.ValidateHashValue(password, userBase.PasswordSalt, userBase.Password, userBase.HashAlgorithm);
 }