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; } }
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 Post(DomainActionBase action) { if (this.isEnabled == false) { return; } var message = string.Empty; this.current = action; action.ID = this.id++; var s = XmlSerializerUtility.GetSerializer(action.GetType()); var ns = new XmlSerializerNamespaces(); ns.Add(string.Empty, string.Empty); ns.Add("fn", action.GetType().AssemblyQualifiedName); using (var sw = new Utf8StringWriter()) using (var writer = XmlWriter.Create(sw, writerSettings)) { DataContractSerializerUtility.Write(writer, action); writer.Close(); message = sw.ToString(); } this.postedWriter.WriteLine(message); }
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; } }
private void CollectPostedActions() { var postedPath = Path.Combine(this.workingPath, DomainLogger.PostedFileName); using (var reader = XmlReader.Create(postedPath, readerSettings)) { reader.Read(); while (reader.EOF != true) { DomainActionBase actionObject = null; if (reader.Name == typeof(NewRowAction).Name) { actionObject = DataContractSerializerUtility.Read <NewRowAction>(reader); } else if (reader.Name == typeof(RemoveRowAction).Name) { actionObject = DataContractSerializerUtility.Read <RemoveRowAction>(reader); } else if (reader.Name == typeof(SetRowAction).Name) { actionObject = DataContractSerializerUtility.Read <SetRowAction>(reader); } else if (reader.Name == typeof(SetPropertyAction).Name) { actionObject = DataContractSerializerUtility.Read <SetPropertyAction>(reader); } else if (reader.Name == typeof(JoinAction).Name) { actionObject = DataContractSerializerUtility.Read <JoinAction>(reader); } else if (reader.Name == typeof(DisjoinAction).Name) { actionObject = DataContractSerializerUtility.Read <DisjoinAction>(reader); } else if (reader.Name == typeof(KickAction).Name) { actionObject = DataContractSerializerUtility.Read <KickAction>(reader); } else if (reader.Name == typeof(SetOwnerAction).Name) { actionObject = DataContractSerializerUtility.Read <SetOwnerAction>(reader); } else { throw new NotImplementedException(); } this.lastID = actionObject.ID; if (this.completedActions.Contains(actionObject.ID) == false) { continue; } this.postedActions.Add(actionObject); } } }
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 Initialize() { this.cremaHost.Debug("Load user data..."); if (File.Exists(this.userFilePath) == true) { var serializationInfo = DataContractSerializerUtility.Read <UserContextSerializationInfo>(this.userFilePath); foreach (var item in serializationInfo.Categories) { if (item == this.Root.Path) { continue; } this.Categories.Prepare(item); } for (var i = 0; i < serializationInfo.Users.Length; i++) { var item = serializationInfo.Users[i]; if (serializationInfo.Version == null) { item.BanInfo = (BanSerializationInfo)BanInfo.Empty; } var user = this.Users.AddNew(item.ID, item.CategoryPath); user.Initialize((UserInfo)item, (BanInfo)item.BanInfo); user.Password = UserContext.StringToSecureString(item.Password); } } else { var user = this.Users.AddNew(Authentication.AdminID, PathUtility.Separator); var userInfo = new UserInfo() { ID = Authentication.AdminID, Name = Authentication.AdminName, CategoryPath = PathUtility.Separator, Authority = Authority.Admin, }; user.Initialize(userInfo, BanInfo.Empty); user.Password = UserContext.StringToSecureString(Authentication.AdminID.Encrypt()); } this.cremaHost.Debug("Loading complete!"); }
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; } }
public object Deserialize(string itemPath, Type type, ObjectSerializerSettings settings) { if (type == typeof(CremaDataTable)) { throw new NotImplementedException(); } else if (type == typeof(CremaDataType)) { var extension = settings.Extension != string.Empty ? settings.Extension : CremaSchema.SchemaExtension; var filename = itemPath + extension; var dataSet = new CremaDataSet(); var dataType = CremaDataType.ReadSchema(filename); dataSet.Types.Add(dataType); return(dataType); } else if (type == typeof(CremaDataSet)) { if (settings is CremaDataSetSerializerSettings props) { var dataSet = CremaDataSet.Create(props.SignatureDateProvider); var typePaths = props.TypePaths.Select(item => item + CremaSchema.SchemaExtension).ToArray(); var tablePaths = props.TablePaths.Select(item => item + CremaSchema.XmlExtension).ToArray(); dataSet.ReadMany(typePaths, tablePaths, props.SchemaOnly); dataSet.AcceptChanges(); return(dataSet); } else { return(CremaDataSet.ReadFromDirectory(itemPath)); } } else { var extension = settings.Extension != string.Empty ? settings.Extension : CremaSchema.XmlExtension; var filename = itemPath + extension; return(DataContractSerializerUtility.Read(filename, type)); } }
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); }