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); }
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 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); }