private void FixAdministrator() { using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForReading)) { if (users.Count == 0) { Logger.Warn("No users found, adding Administrator account with default password"); l.UpgradeToWriterLock(); UserInfo adminInfo = new UserInfo("Administrator", "ServerChecker4"); users.Add(adminInfo.Username, adminInfo); l.DowngradeToReaderLock(); } SecuritySubject me = acls[securityGuid]; System.Collections.Specialized.StringCollection permissions = new System.Collections.Specialized.StringCollection(); permissions.AddRange(me.GetPermissions()); if (permissions.Count == 0) { Logger.Warn("No permissions found for SecurityManager. Adding permission for Administrator account"); l.UpgradeToWriterLock(); me.AddPermission("Administrator"); l.DowngradeToReaderLock(); } } }
public void AddUser(string username, string password) { DemandAdministratorPermissions(); using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForWriting)) { if (users.ContainsKey(username)) throw new SC.Interfaces.SCException("A user with name " + username + " already exists."); if (username == SYSTEM_ACCOUNT) throw new SC.Interfaces.SCException("Invalid username."); UserInfo newUser = new UserInfo(username, password); Logger.Info("Adding user " + username); users.Add(newUser.Username, newUser); } SaveSettings(); }