Example #1
0
        public ActionResult DeleteUser(string id, FormCollection Collection)
        {
            BzureUser             user         = Actor.Public.AsUserManager().GetUserByID(id);
            NotificationViewModel notification = new NotificationViewModel();

            if (user.IsNotNull())
            {
                if (Actor.Public.AsUserManager().DeleteUserByID(id))
                {
                    notification.Data             = NotificationData.YES;
                    notification.Content          = string.Format("用户:{0}删除成功", user.UserName);
                    notification.NotificationType = NotificationType.Success;
                }
                else
                {
                    notification.Data             = NotificationData.NO;
                    notification.Content          = string.Format("用户:{0}删除失败", user.UserName);
                    notification.NotificationType = NotificationType.Error;
                }
            }
            else
            {
                notification.Data             = NotificationData.NO;
                notification.Content          = string.Format("用户ID:{0}不存在!", id);
                notification.NotificationType = NotificationType.Attention;
            }
            return(Result(notification));
        }
Example #2
0
        public ActionResult LogOn(LogonModel model, string returnUrl)
        {
            IAccountContract AccountContract = Actor.Public.AsAccountManager();

            if (AccountContract.ValidateUser(model.UserName, AccountContract.EncryptPassword(model.Password)))
            {
                BzureUser user = AccountContract.GetUserByName(model.UserName);

                user.SignIn(model.RememberMe);
                if (Url.IsLocalUrl(returnUrl))
                {
                    return(Redirect(returnUrl));
                }
                else
                {
                    return(Redirect("/"));
                }
            }
            else
            {
                LogonViewModel ViewModel = new LogonViewModel()
                {
                    Title           = "用户登录",
                    Message         = "用户名或密码不正确",
                    MasterViewModel = this.MasterViewModel
                };
                return(this.Result(ViewModel));
            }
        }
Example #3
0
        public ActionResult Register(RegisterModel model)
        {
            IAccountContract ac   = Actor.Public.AsAccountManager();
            IUserContract    uc   = Actor.Public.AsUserManager();
            BzureUser        user = new BzureUser(uc.GenerateUserID(), model.UserName)
            {
                EMail     = model.Email,
                Password  = ac.EncryptPassword(model.Password),
                RoleValue = 0,
                OpenID    = string.Empty,
                State     = 0,
                NickName  = model.UserName
            };
            CreateUserResult result = ac.CreateUser(user);

            if (result == CreateUserResult.Success)
            {
                user.SignIn(false);//登录

                return(Redirect("/"));
            }
            else
            {
                RegisterViewModel ViewModel = new RegisterViewModel()
                {
                    Title           = "注册",
                    Message         = result.StringValue(),
                    MasterViewModel = this.MasterViewModel
                };
                return(this.Result(ViewModel));
            }
        }
Example #4
0
 /// <summary>
 /// 创建新用户
 /// </summary>
 /// <param name="User"></param>
 /// <returns>是否成功</returns>
 public CreateUserResult CreateUser(BzureUser User)
 {
     if (ExistsUserID(User.UserID))
     {
         return(CreateUserResult.UserIDExists);
     }
     if (ExistsUserName(User.UserName))
     {
         return(CreateUserResult.UserNameExists);
     }
     return(new UserRepository(this).CreateUser(User) ? CreateUserResult.Success : CreateUserResult.OtherFailed);
 }
Example #5
0
        /// <summary>
        /// 用户实体数据映射
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public static BzureUser BzureUser_Map(DataReader reader)
        {
            BzureUser BzureUser = new BzureUser(reader.GetString("UserID"), reader.GetString("UserName"))
            {
                EMail     = reader.GetStringNullable("EMail"),
                Password  = reader.GetStringNullable("Password"),
                OpenID    = reader.GetStringNullable("OpenID"),
                State     = reader.GetInt("State"),
                RoleValue = reader.GetInt("RoleValue"),
                NickName  = reader.GetStringNullable("NickName")
            };

            return(BzureUser);
        }
Example #6
0
        static UserRepository()
        {
            BzureUser entity = new BzureUser(string.Empty, string.Empty);
            Type      type   = entity.GetType();

            AppendDataMap(type, "UserID", () => entity.UserID);
            AppendDataMap(type, "UserName", () => entity.UserName);
            AppendDataMap(type, "Password", () => entity.Password);
            AppendDataMap(type, "State", () => entity.State);
            AppendDataMap(type, "EMail", () => entity.EMail);
            AppendDataMap(type, "OpenID", () => entity.OpenID);
            AppendDataMap(type, "RoleValue", () => entity.RoleValue);
            AppendDataMap(type, "NickName", () => entity.NickName);
            ResultMapDelegate <BzureUser> queryMap = BzureUser_Map;

            QueryMapContainer[entity.GetType()] = queryMap;
        }
Example #7
0
 static EntityPostRequest BuilderUserStateRequest(BzureUser user)
 {
     if (user.IsPersisted())
     {
         EntityPostRequest userStateRequest = new EntityPostRequest(EntityPostRequest.EntityPostMethod.Update)
         {
             Entity = user
         };
         userStateRequest.AppendFieldMap(user.State, () => user.State);
         userStateRequest.AppendConditionMap(user.UserID, () => user.UserID);
         return(userStateRequest);
     }
     else
     {
         throw new Exception(string.Format("用户{0}还没有保存", user.UserName));
     }
 }
Example #8
0
        public ActionResult ResetPassword(string id)
        {
            BzureUser user = Actor.Public.AsUserManager().GetUserByID(id);

            if (user.IsNull())
            {
                return(RedirectToAction("UserList"));
            }
            ResetPasswordViewModel ViewModel = new ResetPasswordViewModel()
            {
                Title           = "重置密码",
                MasterViewModel = this.MasterViewModel,
                UserName        = user.UserName,
                Url             = Url.RouteUrl("SecurityApp_User", new { action = "ResetPassword" })
            };

            return(Result(ViewModel));
        }
        /// <summary>
        /// 创建新用户
        /// </summary>
        /// <param name="User"></param>
        /// <returns>是否成功</returns>
        public CreateUserResult CreateUser(BzureUser User)
        {
            CreateUserResult result = this.Decorator.CreateUser(User);

            if (result == CreateUserResult.Success)
            {
                //为每个新创建的用户指定一个默认的角色
                TeamRole[]           role = Actor.Public.GetRoleByName("注册用户");
                IEnumerable <string> Ids  = role.Select((TeamRole r) => { return(r.ID); });
                if (role.IsNotNull())
                {
                    Actor.Public.AuthorizeUser(User, Ids.ToArray(), (bool ok) =>
                    {
                    });
                }
            }
            return(result);
        }
Example #10
0
        static void RegisterFactor_UserState(BizTransaction transaction, BzureUser user)
        {
            IEntityRequestProcess userStateProcessor = Actor.Public.BuildEntityProcessor("SecurityApp");
            TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> > userStateFactor = new TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> >(userStateProcessor);

            userStateFactor.ActionBody = (IEntityRequestProcess contract, EntityPostRequest request) =>
            {
                contract.UpdateEntity(request);
            };

            userStateFactor.Action = (Action <IEntityRequestProcess, EntityPostRequest> action) =>
            {
                EntityPostRequest OrderRequest = BuilderUserStateRequest(user);
                action(userStateProcessor, OrderRequest);
            };

            transaction.RegisterFactor(userStateFactor);
        }
Example #11
0
        public static void AuthorizeUser(this Public Public, BzureUser user, string[] RoleIDs, Action <bool> action)
        {
            string[]       oldRoles    = Actor.Public.AsRoleManager().GetTeamRoleIDsByUserID(user.UserID.ToString());
            BizTransaction transaction = BizTransaction.BeginTransaction();

            //step 1 修改用户状态
            RegisterFactor_UserState(transaction, user);
            //step 2 删除用户原有的全部角色
            RegisterFactor_DeleteRoles(transaction, user, oldRoles);
            //step 3 添加用户新的角色
            RegisterFactor_AddRoles(transaction, user, RoleIDs);
            bool ok = transaction.TryCommit();

            if (ok)
            {
                Actor.Public.UpdateLastPermissionChangeTime();
            }
            action(ok);
        }
Example #12
0
        /// <summary>
        /// 创建新用户
        /// </summary>
        /// <param name="User"></param>
        /// <returns>是否成功</returns>
        public bool CreateUser(BzureUser User)
        {
            string sql = string.Format("INSERT INTO  {0}(UserID,UserName,Password,State,EMail,OpenID,RoleValue,NickName) VALUES (@UserID, @UserName, @Password, @State, @EMail, @OpenID,@RoleValue,@NickName)", this.TableName);

            int ret = new SqlEntityMap <string>(this.ContractProvider, sql)
                      .AddString("UserID", User.UserID)
                      .AddString("UserName", User.UserName)
                      .AddString("Password", User.Password)
                      .AddInt("State", User.State)
                      .AddString("EMail", User.EMail)
                      .AddString("OpenID", User.OpenID)
                      .AddInt("RoleValue", User.RoleValue)
                      .AddString("NickName", User.NickName)
                      .AsNonQuery();

            if (ret > 0)
            {
                this.MarkPersistenceState(User, true);
            }
            return(ret > 0);
        }
Example #13
0
        public ActionResult AuthorizeUser(string id)
        {
            BzureUser user = Actor.Public.AsUserManager().GetUserByID(id);

            if (user.IsNull())
            {
                return(RedirectToAction("UserList"));
            }
            AuthorizeUserViewModel ViewModel = new AuthorizeUserViewModel()
            {
                MasterViewModel = this.MasterViewModel,
                Title           = "用户授权",
                Url             = Url.RouteUrl("SecurityApp_User", new { action = "AuthorizeUser" }),
                UserName        = user.UserName,
                UserState       = user.State > 0,
                Roles           = Actor.Public.AsRoleManager().GetAllTeamRoles(),
                RIDs            = Actor.Public.AsRoleManager().GetTeamRoleIDsByUserID(user.UserID.ToString())
            };

            return(Result(ViewModel));
        }
Example #14
0
        static void RegisterFactor_DeleteRoles(BizTransaction transaction, BzureUser user, string[] oldRoles)
        {
            IEntityRequestProcess deleteRolesProcessor = Actor.Public.BuildEntityProcessor("SecurityApp");
            TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> > deleteRolesFactor = new TransactionFactor <IEntityRequestProcess, Action <IEntityRequestProcess, EntityPostRequest> >(deleteRolesProcessor);

            deleteRolesFactor.ActionBody = (IEntityRequestProcess contract, EntityPostRequest request) =>
            {
                contract.UpdateEntity(request);
            };

            deleteRolesFactor.Action = (Action <IEntityRequestProcess, EntityPostRequest> action) =>
            {
                foreach (string roleid in oldRoles)
                {
                    EntityPostRequest deleteRoleRequest = BuilddeleteRoleRequest(user.UserID.ToString(), roleid);
                    action(deleteRolesProcessor, deleteRoleRequest);
                }
            };

            transaction.RegisterFactor(deleteRolesFactor);
        }
Example #15
0
        public ActionResult AuthorizeUser(string id, string UserState, FormCollection Collection)
        {
            BzureUser user = Actor.Public.AsUserManager().GetUserByID(id);

            if (user.IsNull())
            {
                return(RedirectToAction("UserList"));
            }
            //创建新的角色用户对应关系
            List <string> Roles = new List <string>();

            foreach (string key in Collection.AllKeys.Where(m => m.StartsWith("Role_")))
            {
                string roleid = Collection[key];
                if (roleid.IsNotNull())
                {
                    Roles.Add(roleid);
                }
            }
            user.State = UserState.IsNullOrEmpty() ? 0 : 1;
            NotificationViewModel notification = new NotificationViewModel();

            Actor.Public.AuthorizeUser(user, Roles.ToArray(), (bool ok) =>
            {
                if (ok)
                {
                    notification.Data             = NotificationData.YES;
                    notification.Content          = string.Format("用户:{0}授权保存成功", user.UserName);
                    notification.NotificationType = NotificationType.Success;
                }
                else
                {
                    notification.Data             = NotificationData.NO;
                    notification.Content          = string.Format("用户:{0}授权保存失败", user.UserName);
                    notification.NotificationType = NotificationType.Error;
                }
            });

            return(Result(notification));
        }
Example #16
0
        public ActionResult ResetPassword(string id, FormCollection Collection)
        {
            BzureUser user = Actor.Public.AsUserManager().GetUserByID(id);

            if (user.IsNull())
            {
                return(RedirectToAction("UserList"));
            }
            string password = Collection["NewPassword"];
            NotificationViewModel notification = new NotificationViewModel();

            notification.Data             = NotificationData.NO;
            notification.Content          = string.Format("用户:{0}密码重置失败", user.UserName);
            notification.NotificationType = NotificationType.Error;
            if (Actor.Public.AsAccountManager().SetPassword(user.UserName, Actor.Public.AsAccountManager().EncryptPassword(password)))
            {
                notification.Data             = NotificationData.YES;
                notification.Content          = string.Format("用户:{0}密码重置成功", user.UserName);
                notification.NotificationType = NotificationType.Success;
            }
            return(Result(notification));
        }
Example #17
0
        public ActionResult ResetNickName()
        {
            if (!Actor.Public.IsAuthenticated)
            {
                return(RedirectToAction("UserList"));
            }
            BzureUser user = Actor.Me.AsBzurePrincipal().ToUserModel().Entity;

            if (user.IsNull())
            {
                return(RedirectToAction("UserList"));
            }
            ResetNickNameViewModel ViewModel = new ResetNickNameViewModel()
            {
                Title           = "重置昵称",
                MasterViewModel = this.MasterViewModel,
                UserName        = user.UserName,
                NickName        = user.NickName,
                Url             = Url.RouteUrl("SecurityApp_User", new { action = "ResetNickName", id = user.UserID })
            };

            return(Result(ViewModel));
        }
Example #18
0
        public ActionResult ResetNickName(string id, FormCollection Collection)
        {
            BzureUser user = Actor.Public.AsUserManager().GetUserByID(id);

            if (user.IsNull())
            {
                return(RedirectToAction("UserList"));
            }
            string newNickName = Collection["NewNickName"];
            string msg         = string.Format("用户:{0}设置昵称:{1}失败", user.UserName, newNickName);

            if (Actor.Public.AsUserManager().ExistsNickName(newNickName))
            {
                msg = string.Format("用户:{0}设置昵称:{1}失败,因为昵称已经被占用", user.UserName, newNickName);
            }
            else
            {
                if (Actor.Public.AsUserManager().SetNickName(user.UserName, newNickName))
                {
                    msg = string.Format("用户:{0}昵称重置成功", user.UserName);
                }
                else
                {
                    msg = string.Format("用户:{0}设置昵称:{1}失败,可能是因为软件内部错误", user.UserName, newNickName);
                }
            }
            ResetNickNameViewModel ViewModel = new ResetNickNameViewModel()
            {
                Title           = "重置昵称",
                MasterViewModel = this.MasterViewModel,
                UserName        = user.UserName,
                Url             = Url.RouteUrl("SecurityApp_User", new { action = "ResetNickName", id = user.UserID }),
                Message         = msg
            };

            return(Result(ViewModel));
        }
Example #19
0
        /// <summary>
        /// 创建新用户
        /// </summary>
        /// <param name="User"></param>
        /// <returns>是否成功</returns>
        public CreateUserResult CreateUser(BzureUser User)
        {
            CreateUserResult result = this.Decorator.CreateUser(User);

            return(result);
        }