public void SendProfile(SProfileData profile) { Guid sessionKey = _GetSession(); if (profile.ProfileId != -1) //-1 is the id for a new profile { if (CSessionControl.GetUserIdFromSession(sessionKey) != profile.ProfileId && !(_CheckRight(EUserRights.EditAllProfiles))) { return; } } CVocaluxeServer.DoTask(CVocaluxeServer.SendProfileData, profile); }
private static SProfileData _CreateProfileData(CProfile profile, bool isReadonly) { SProfileData profileData = new SProfileData { IsEditable = !isReadonly, ProfileId = profile.ID, PlayerName = profile.PlayerName, //Is TR_USERROLE_GUEST or TR_USERROLE_NORMAL? Type = (profile.UserRole.HasFlag(EUserRole.TR_USERROLE_NORMAL) ? 1 : 0), Difficulty = (int)profile.Difficulty }; CAvatar avatar = profile.Avatar; if (avatar != null) { if (File.Exists(avatar.FileName)) { profileData.Avatar = new CBase64Image(_CreateDelayedImage(avatar.FileName)); } } return(profileData); }
public static bool SendProfileData(SProfileData profile) { CProfile newProfile; CProfile existingProfile = CProfiles.GetProfile(profile.ProfileId); if (existingProfile != null) { newProfile = new CProfile { ID = existingProfile.ID, FilePath = existingProfile.FilePath, Active = existingProfile.Active, Avatar = existingProfile.Avatar, Difficulty = existingProfile.Difficulty, UserRole = existingProfile.UserRole, PlayerName = existingProfile.PlayerName }; } else { newProfile = new CProfile { Active = EOffOn.TR_CONFIG_ON, UserRole = EUserRole.TR_USERROLE_NORMAL }; } if (profile.Avatar != null) { newProfile.Avatar = _AddAvatar(profile.Avatar); } else if (newProfile.Avatar == null || newProfile.Avatar.ID == -1) { newProfile.Avatar = CProfiles.GetAvatars().First(); /*CAvatar avatar = new CAvatar(-1); * avatar.LoadFromFile("Profiles\\Avatar_f.png"); * CProfiles.AddAvatar(avatar); * newProfile.Avatar = avatar;*/ } if (!string.IsNullOrEmpty(profile.PlayerName)) { newProfile.PlayerName = profile.PlayerName; } else if (!string.IsNullOrEmpty(newProfile.PlayerName)) { newProfile.PlayerName = "DummyName"; } if (profile.Difficulty >= 0 && profile.Difficulty <= 2) { newProfile.Difficulty = (EGameDifficulty)profile.Difficulty; } if (profile.Type >= 0 && profile.Type <= 1) { EUserRole option = profile.Type == 0 ? EUserRole.TR_USERROLE_GUEST : EUserRole.TR_USERROLE_NORMAL; //Only allow the change of TR_USERROLE_GUEST and TR_USERROLE_NORMAL const EUserRole mask = EUserRole.TR_USERROLE_NORMAL; newProfile.UserRole = (newProfile.UserRole & mask) | option; } if (!string.IsNullOrEmpty(profile.Password)) { if (profile.Password == "***__CLEAR_PASSWORD__***") { newProfile.PasswordSalt = null; newProfile.PasswordHash = null; } else { RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); byte[] buffer = new byte[32]; rng.GetNonZeroBytes(buffer); byte[] salt = buffer; byte[] hashedPassword = _Hash((new UTF8Encoding()).GetBytes(profile.Password), salt); newProfile.PasswordSalt = salt; newProfile.PasswordHash = hashedPassword; } } if (existingProfile != null) { CProfiles.EditProfile(newProfile); CProfiles.Update(); CProfiles.SaveProfiles(); } else { CProfiles.AddProfile(newProfile); } return(true); }