Exemplo n.º 1
0
        public User AddNew(Authentication authentication, string userID, string categoryPath, SecureString password, string userName, Authority authority)
        {
            this.ValidateUserCreate(authentication, userID, categoryPath, password);
            this.Sign(authentication);
            var designedInfo = new SignatureDate(authentication.ID, DateTime.UtcNow);
            var userInfo     = new UserSerializationInfo()
            {
                ID               = userID,
                Password         = UserContext.SecureStringToString(password).Encrypt(),
                Name             = userName,
                Authority        = authority,
                CategoryPath     = categoryPath,
                CreationInfo     = designedInfo,
                ModificationInfo = designedInfo,
            };

            this.InvokeUserCreate(authentication, userInfo);

            var user = this.BaseAddNew(userID, categoryPath, null);

            user.Initialize((UserInfo)userInfo, BanInfo.Empty);
            user.Password = UserContext.StringToSecureString(userInfo.Password);
            this.InvokeUsersCreatedEvent(authentication, new User[] { user });
            return(user);
        }
Exemplo n.º 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;
            }
        }
Exemplo n.º 3
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);
        }