James Moger
2013-11-20 8f1c9fd7e0f7ea3d7d0b87788eb92ba2f0f09d59
src/main/java/com/gitblit/WindowsUserService.java
@@ -29,6 +29,7 @@
import waffle.windows.auth.impl.WindowsAuthProviderImpl;
import com.gitblit.Constants.AccountType;
import com.gitblit.manager.IRuntimeManager;
import com.gitblit.models.UserModel;
import com.gitblit.utils.ArrayUtils;
import com.gitblit.utils.StringUtils;
@@ -36,7 +37,7 @@
/**
 * Implementation of a Windows user service.
 *
 *
 * @author James Moger
 */
public class WindowsUserService extends GitblitUserService {
@@ -44,7 +45,7 @@
    private final Logger logger = LoggerFactory.getLogger(WindowsUserService.class);
    private IStoredSettings settings;
    private IWindowsAuthProvider waffle;
    public WindowsUserService() {
@@ -52,15 +53,15 @@
    }
    @Override
    public void setup(IStoredSettings settings) {
        this.settings = settings;
    public void setup(IRuntimeManager runtimeManager) {
        this.settings = runtimeManager.getSettings();
        String file = settings.getString(Keys.realm.windows.backingUserService, "${baseFolder}/users.conf");
        File realmFile = GitBlit.getFileOrFolder(file);
        File realmFile = runtimeManager.getFileOrFolder(file);
        serviceImpl = createUserService(realmFile);
        logger.info("Windows User Service backed by " + serviceImpl.toString());
        waffle = new WindowsAuthProviderImpl();
        IWindowsComputer computer = waffle.getCurrentComputer();
        logger.info("      name = " + computer.getComputerName());
@@ -68,7 +69,7 @@
        logger.info("  memberOf = " + computer.getMemberOf());
        //logger.info("  groups     = " + Arrays.asList(computer.getGroups()));
    }
    protected String describeJoinStatus(String value) {
       if ("NetSetupUnknownStatus".equals(value)) {
          return "unknown";
@@ -101,9 +102,9 @@
    public boolean supportsTeamMembershipChanges() {
        return true;
    }
    @Override
   protected AccountType getAccountType() {
   public AccountType getAccountType() {
      return AccountType.WINDOWS;
   }
@@ -150,7 +151,7 @@
         identity.dispose();
         return null;
      }
        UserModel user = getUserModel(username);
        if (user == null)   // create user object for new authenticated user
           user = new UserModel(username.toLowerCase());
@@ -174,12 +175,12 @@
          for (IWindowsAccount group : identity.getGroups()) {
             groupNames.add(group.getFqn());
        }
        if (groupNames.contains("BUILTIN\\Administrators")) {
           // local administrator
           user.canAdmin = true;
        }
        // TODO consider mapping Windows groups to teams
        // push the changes to the backing user service
@@ -188,7 +189,7 @@
        // cleanup resources
        identity.dispose();
        return user;
    }
}