Skip to content

Commit

Permalink
fixed showing offline button
Browse files Browse the repository at this point in the history
  • Loading branch information
twocanoes committed Dec 10, 2023
1 parent 281fe86 commit 72ffc3f
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 50 deletions.
1 change: 1 addition & 0 deletions XCredsLoginPlugIn/LoginWindow/LocalUsersViewController.xib
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<customObject id="-2" userLabel="File's Owner" customClass="SignInViewController" customModule="XCreds" customModuleProvider="target">
<connections>
<outlet property="localOnlyCheckBox" destination="kwO-Pt-tOG" id="w4U-23-hqX"/>
<outlet property="localOnlyView" destination="awi-FJ-4Sf" id="wBk-nn-xbG"/>
<outlet property="passwordTextField" destination="UJh-bj-CPX" id="YZl-II-FDB"/>
<outlet property="signIn" destination="XnO-81-SH2" id="VQg-nQ-slV"/>
<outlet property="stackView" destination="eRJ-Lo-UdT" id="b9W-ja-J8M"/>
Expand Down
104 changes: 60 additions & 44 deletions XCredsLoginPlugIn/LoginWindow/SignInWindowController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ let checkADLog = OSLog(subsystem: "menu.nomad.login.ad", category: "CheckADMech"
@IBOutlet weak var usernameTextField: NSTextField!
@IBOutlet weak var passwordTextField: NSSecureTextField!
@IBOutlet weak var localOnlyCheckBox: NSButton!
@IBOutlet weak var localOnlyView: NSView!

@IBOutlet weak var stackView: NSStackView!

// @IBOutlet weak var domain: NSPopUpButton!
Expand Down Expand Up @@ -69,6 +71,9 @@ let checkADLog = OSLog(subsystem: "menu.nomad.login.ad", category: "CheckADMech"
//awakeFromNib gets called multiple times. guard against that.
if setupDone == false {
setupDone=true
if let prefDomainName=getManagedPreference(key: .ADDomain) as? String{
domainName = prefDomainName
}
setupLoginAppearance()
}

Expand All @@ -80,6 +85,7 @@ let checkADLog = OSLog(subsystem: "menu.nomad.login.ad", category: "CheckADMech"
self.view.wantsLayer=true
self.view.layer?.backgroundColor = CGColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 0.4)
localOnlyCheckBox.isEnabled=true
localOnlyView.isHidden=false
// make things look better
TCSLog("Tweaking appearance")

Expand All @@ -94,12 +100,19 @@ let checkADLog = OSLog(subsystem: "menu.nomad.login.ad", category: "CheckADMech"
self.passwordTextField.placeholderString=passwordPlaceholder

}
TCSLogWithMark("Domain is \(domainName)")
if UserDefaults.standard.bool(forKey: PrefKeys.shouldShowLocalOnlyCheckbox.rawValue) == false {
TCSLogWithMark("hiding local only")

self.localOnlyCheckBox.isHidden = true
self.localOnlyView.isHidden = true
}
else {
//show based on if there is an AD domain or not
self.localOnlyCheckBox.isHidden = self.domainName.isEmpty

self.localOnlyView.isHidden = self.domainName.isEmpty

}
}

Expand Down Expand Up @@ -174,6 +187,8 @@ let checkADLog = OSLog(subsystem: "menu.nomad.login.ad", category: "CheckADMech"
usernameTextField.isEnabled = !usernameTextField.isEnabled
passwordTextField.isEnabled = !passwordTextField.isEnabled
localOnlyCheckBox.isEnabled = !localOnlyCheckBox.isEnabled

localOnlyView.isHidden = !localOnlyView.isHidden
TCSLogWithMark()
}

Expand Down Expand Up @@ -296,50 +311,50 @@ let checkADLog = OSLog(subsystem: "menu.nomad.login.ad", category: "CheckADMech"
TCSLogWithMark(providedDomainName)
}
TCSLogWithMark()
if strippedUsername.contains("\\") {
os_log("User entered an NT Domain name, doing lookup", log: uiLog, type: .default)
if let ntDomains = getManagedPreference(key: .NTtoADDomainMappings) as? [String:String],
let ntDomain = strippedUsername.components(separatedBy: "\\").first?.uppercased(),
let user = strippedUsername.components(separatedBy: "\\").last,
let convertedDomain = ntDomains[ntDomain] {
shortName = user
providedDomainName = convertedDomain
} else {
os_log("NT Domain mapping failed, wishing the user luck on authentication", log: uiLog, type: .default)
}
}
if let prefDomainName=getManagedPreference(key: .ADDomain) as? String{

domainName = prefDomainName
}
if domainName != "" && providedDomainName.lowercased() == domainName.lowercased() {
TCSLogWithMark("ADDomain being used")
domainName = providedDomainName.uppercased()
}

if providedDomainName == domainName {

}
else if !providedDomainName.isEmpty {
TCSLogWithMark("Optional domain provided in text field: \(providedDomainName)")
if getManagedPreference(key: .AdditionalADDomains) as? Bool == true {
os_log("Optional domain name allowed by AdditionalADDomains allow-all policy", log: uiLog, type: .default)
domainName = providedDomainName
return
}

if let optionalDomains = getManagedPreference(key: .AdditionalADDomains) as? [String] {
guard optionalDomains.contains(providedDomainName.lowercased()) else {
TCSLogWithMark("Optional domain name not allowed by AdditionalADDomains whitelist policy")
return
}
TCSLogWithMark("Optional domain name allowed by AdditionalADDomains whitelist policy")
domainName = providedDomainName
return
}
// if strippedUsername.contains("\\") {
// os_log("User entered an NT Domain name, doing lookup", log: uiLog, type: .default)
// if let ntDomains = getManagedPreference(key: .NTtoADDomainMappings) as? [String:String],
// let ntDomain = strippedUsername.components(separatedBy: "\\").first?.uppercased(),
// let user = strippedUsername.components(separatedBy: "\\").last,
// let convertedDomain = ntDomains[ntDomain] {
// shortName = user
// providedDomainName = convertedDomain
// } else {
// os_log("NT Domain mapping failed, wishing the user luck on authentication", log: uiLog, type: .default)
// }
// }
// if let prefDomainName=getManagedPreference(key: .ADDomain) as? String{
//
// domainName = prefDomainName
// }
// if domainName != "" && providedDomainName.lowercased() == domainName.lowercased() {
// TCSLogWithMark("ADDomain being used")
// domainName = providedDomainName.uppercased()
// }

TCSLogWithMark("Optional domain not name allowed by AdditionalADDomains policy (false or not defined)")
}
// if providedDomainName == domainName {
//
// }
// else if !providedDomainName.isEmpty {
// TCSLogWithMark("Optional domain provided in text field: \(providedDomainName)")
// if getManagedPreference(key: .AdditionalADDomains) as? Bool == true {
// os_log("Optional domain name allowed by AdditionalADDomains allow-all policy", log: uiLog, type: .default)
// domainName = providedDomainName
// return
// }
//
// if let optionalDomains = getManagedPreference(key: .AdditionalADDomains) as? [String] {
// guard optionalDomains.contains(providedDomainName.lowercased()) else {
// TCSLogWithMark("Optional domain name not allowed by AdditionalADDomains whitelist policy")
// return
// }
// TCSLogWithMark("Optional domain name allowed by AdditionalADDomains whitelist policy")
// domainName = providedDomainName
// return
// }
//
// TCSLogWithMark("Optional domain not name allowed by AdditionalADDomains policy (false or not defined)")
// }

if providedDomainName == "",
let managedDomain = getManagedPreference(key: .ADDomain) as? String {
Expand Down Expand Up @@ -714,7 +729,8 @@ extension SignInViewController: NoMADUserSessionDelegate {

//callback from ADAuth framework when userInfo returns
func NoMADUserInformation(user: ADUserRecord) {

TCSLogWithMark("User Info:\(user)")
TCSLogWithMark("Groups:\(user.groups)")
var allowedLogin = true

TCSLogWithMark("Checking for DenyLogin groups")
Expand Down
12 changes: 6 additions & 6 deletions xCreds.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1293,7 +1293,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 5557;
CURRENT_PROJECT_VERSION = 5564;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = UXP6YEHSPW;
FRAMEWORK_SEARCH_PATHS = (
Expand Down Expand Up @@ -1331,7 +1331,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 5557;
CURRENT_PROJECT_VERSION = 5564;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = UXP6YEHSPW;
FRAMEWORK_SEARCH_PATHS = (
Expand Down Expand Up @@ -1451,7 +1451,7 @@
CODE_SIGN_ENTITLEMENTS = "XCreds Login Overlay/XCreds_Login_Overlay.entitlements";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 5557;
CURRENT_PROJECT_VERSION = 5564;
DEVELOPMENT_TEAM = UXP6YEHSPW;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
Expand Down Expand Up @@ -1488,7 +1488,7 @@
CODE_SIGN_ENTITLEMENTS = "XCreds Login Overlay/XCreds_Login_Overlay.entitlements";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 5557;
CURRENT_PROJECT_VERSION = 5564;
DEVELOPMENT_TEAM = UXP6YEHSPW;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
Expand Down Expand Up @@ -1638,7 +1638,7 @@
CODE_SIGN_ENTITLEMENTS = XCreds/xCreds.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 5557;
CURRENT_PROJECT_VERSION = 5564;
DEVELOPMENT_TEAM = UXP6YEHSPW;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
Expand Down Expand Up @@ -1679,7 +1679,7 @@
CODE_SIGN_ENTITLEMENTS = XCreds/xCreds.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 5557;
CURRENT_PROJECT_VERSION = 5564;
DEVELOPMENT_TEAM = UXP6YEHSPW;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
Expand Down
Binary file not shown.

0 comments on commit 72ffc3f

Please sign in to comment.