Beispiel #1
0
        public void InvokeUserUnban(Authentication authentication, User user)
        {
            this.CremaHost.DebugMethod(authentication, this, nameof(InvokeUserUnban), user);

            try
            {
                var userInfo = user.SerializationInfo;
                userInfo.BanInfo = (BanSerializationInfo)BanInfo.Empty;

                var categories = from UserCategory item in this.Context.Categories
                                 select item.Path;

                var users = from User item in this.Context.Users
                            select userInfo.ID == item.ID ? userInfo : item.SerializationInfo;

                var serializationInfo = new UserContextSerializationInfo()
                {
                    Version    = CremaSchema.VersionValue,
                    Categories = categories.ToArray(),
                    Users      = users.ToArray(),
                };

                var xml = DataContractSerializerUtility.GetString(serializationInfo, true);
                this.Repository.Modify(this.Context.UserFilePath, xml);
            }
            catch (Exception e)
            {
                this.CremaHost.Error(e);
                this.Repository.Revert();
                throw e;
            }
        }
Beispiel #2
0
        public void InvokeUserCreate(Authentication authentication, UserSerializationInfo userInfo)
        {
            this.CremaHost.DebugMethod(authentication, this, nameof(InvokeUserCreate), userInfo.ID, userInfo.Authority, userInfo.CategoryPath);
            try
            {
                var categories = from UserCategory item in this.Context.Categories
                                 select item.Path;

                var users    = from User item in this.Context.Users select item.SerializationInfo;
                var userList = users.ToList();
                userList.Add(userInfo);

                var serializationInfo = new UserContextSerializationInfo()
                {
                    Version    = CremaSchema.VersionValue,
                    Categories = categories.ToArray(),
                    Users      = userList.ToArray(),
                };

                var xml = DataContractSerializerUtility.GetString(serializationInfo, true);

                this.Repository.Modify(this.Context.UserFilePath, xml);
            }
            catch (Exception e)
            {
                this.CremaHost.Error(e);
                this.Repository.Revert();
                throw e;
            }
        }
        public void InvokeCategoryCreate(Authentication authentication, string name, string parentPath)
        {
            this.CremaHost.DebugMethod(authentication, this, nameof(InvokeCategoryCreate), name, parentPath);

            try
            {
                var categories = from UserCategory item in this.Context.Categories
                                 where item != this.Root
                                 select item.Path;

                var categoryList = categories.ToList();
                categoryList.Add(new CategoryName(parentPath, name));

                var users = from User item in this.Context.Users
                            select item.SerializationInfo;

                var serializationInfo = new UserContextSerializationInfo()
                {
                    Version    = CremaSchema.VersionValue,
                    Categories = categoryList.OrderBy(item => item).ToArray(),
                    Users      = users.ToArray(),
                };

                var xml = DataContractSerializerUtility.GetString(serializationInfo, true);
                this.Repository.Modify(this.Context.UserFilePath, xml);
            }
            catch (Exception e)
            {
                this.CremaHost.Error(e);
                this.Repository.Revert();
                throw e;
            }
        }
        public void InvokeCategoryDelete(Authentication authentication, UserCategory category)
        {
            this.CremaHost.DebugMethod(authentication, this, nameof(InvokeCategoryDelete), category);

            try
            {
                var categories = from UserCategory item in this.Context.Categories
                                 where item != this.Root || item.Path.StartsWith(category.Path) == false
                                 select item.Path;

                var users = from User item in this.Context.Users
                            select item.SerializationInfo;

                var serializationInfo = new UserContextSerializationInfo()
                {
                    Version    = CremaSchema.VersionValue,
                    Categories = categories.ToArray(),
                    Users      = users.ToArray(),
                };

                var xml = DataContractSerializerUtility.GetString(serializationInfo, true);
                this.Repository.Modify(this.Context.UserFilePath, xml);
            }
            catch (Exception e)
            {
                this.CremaHost.Error(e);
                this.Repository.Revert();
                throw e;
            }
        }
Beispiel #5
0
        private void WriteUsers()
        {
            var categories = from UserCategory item in this.Categories
                             where item != this.Root
                             select item.Path;
            var users = from User item in this.Users
                        select item.SerializationInfo;

            var serializationInfo = new UserContextSerializationInfo()
            {
                Version    = CremaSchema.VersionValue,
                Categories = categories.ToArray(),
                Users      = users.ToArray(),
            };

            var xml = DataContractSerializerUtility.GetString(serializationInfo, true);
        }
        public void InvokeCategoryMove(Authentication authentication, UserCategory category, string parentPath)
        {
            this.CremaHost.DebugMethod(authentication, this, nameof(InvokeCategoryMove), category, parentPath);

            try
            {
                var categoryPath = (string)new CategoryName(parentPath, category.Name);

                var categories = from UserCategory item in this.Context.Categories
                                 where item != this.Root
                                 select item.Path;

                var users = from User item in this.Context.Users
                            select item.SerializationInfo;

                var categoryArray = categories.ToArray();
                var userArray     = users.ToArray();

                for (var i = 0; i < categoryArray.Length; i++)
                {
                    categoryArray[i] = Regex.Replace(categoryArray[i], "^" + category.Path, categoryPath);
                }

                for (var i = 0; i < userArray.Length; i++)
                {
                    userArray[i].CategoryPath = Regex.Replace(userArray[i].CategoryPath, "^" + category.Path, categoryPath);
                }

                var serializationInfo = new UserContextSerializationInfo()
                {
                    Version    = CremaSchema.VersionValue,
                    Categories = categoryArray,
                    Users      = userArray,
                };

                var xml = DataContractSerializerUtility.GetString(serializationInfo, true);
                this.Repository.Modify(this.Context.UserFilePath, xml);
            }
            catch (Exception e)
            {
                this.CremaHost.Error(e);
                this.Repository.Revert();
                throw e;
            }
        }
Beispiel #7
0
        public static void GenerateDefaultUserInfos(string repositoryPath)
        {
            var filename      = UserContext.GenerateUsersFilePath(repositoryPath);
            var designedInfo  = new SignatureDate(Authentication.SystemID, DateTime.UtcNow);
            var administrator = new UserSerializationInfo()
            {
                ID               = Authentication.AdminID,
                Name             = Authentication.AdminName,
                CategoryName     = string.Empty,
                Authority        = Authority.Admin,
                Password         = Authentication.AdminID.Encrypt(),
                CreationInfo     = designedInfo,
                ModificationInfo = designedInfo,
                BanInfo          = (BanSerializationInfo)BanInfo.Empty,
            };

#if DEBUG
            var users = new List <UserSerializationInfo>
            {
                administrator
            };
            for (var i = 0; i < 0; i++)
            {
                var admin = new UserSerializationInfo()
                {
                    ID               = "admin" + i,
                    Name             = "관리자" + i,
                    CategoryName     = "Administrators",
                    Authority        = Authority.Admin,
                    Password         = "******".Encrypt(),
                    CreationInfo     = designedInfo,
                    ModificationInfo = designedInfo,
                    BanInfo          = (BanSerializationInfo)BanInfo.Empty,
                };

                var member = new UserSerializationInfo()
                {
                    ID               = "member" + i,
                    Name             = "구성원" + i,
                    CategoryName     = "Members",
                    Authority        = Authority.Member,
                    Password         = "******".Encrypt(),
                    CreationInfo     = designedInfo,
                    ModificationInfo = designedInfo,
                    BanInfo          = (BanSerializationInfo)BanInfo.Empty,
                };

                var guest = new UserSerializationInfo()
                {
                    ID               = "guest" + i,
                    Name             = "손님" + i,
                    CategoryName     = "Guests",
                    Authority        = Authority.Guest,
                    Password         = "******".Encrypt(),
                    CreationInfo     = designedInfo,
                    ModificationInfo = designedInfo,
                    BanInfo          = (BanSerializationInfo)BanInfo.Empty,
                };

                users.Add(admin);
                users.Add(member);
                users.Add(guest);
            }

            var serializationInfo = new UserContextSerializationInfo()
            {
                Version    = CremaSchema.VersionValue,
                Categories = new string[] { "/Administrators/", "/Members/", "/Guests/" },
                Users      = users.ToArray(),
            };
#else
            var serializationInfo = new UserContextSerializationInfo()
            {
                Version    = CremaSchema.VersionValue,
                Categories = new string[] { },
                Users      = new UserSerializationInfo[] { administrator },
            };
#endif
            //foreach (var item in serializationInfo.Categories)
            //{
            //    var basePath = Path.Combine(Path.GetDirectoryName(filename), "users");
            //    var localPath = PathUtility.ConvertFromUri(basePath + item);
            //    DirectoryUtility.Prepare(localPath);
            //}

            //foreach (var item in serializationInfo.Users)
            //{
            //    var basePath = Path.Combine(Path.GetDirectoryName(filename), "users");
            //    var localPath = PathUtility.ConvertFromUri(basePath + item.CategoryPath + item.ID + ".xml");
            //    FileUtility.WriteAllText(DataContractSerializerUtility.GetString(item), localPath);
            //}

            DataContractSerializerUtility.Write(filename, serializationInfo, true);
        }