Skip to content

Commit

Permalink
removed KeychainReset and PasswordOverwriteSilent because it makes th…
Browse files Browse the repository at this point in the history
…ings worse
  • Loading branch information
twocanoes committed May 11, 2023
1 parent 3150fa6 commit 3936289
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 68 deletions.
136 changes: 68 additions & 68 deletions XCredsLoginPlugIn/LoginWindow/LoginWebViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -305,88 +305,88 @@ class LoginWebViewController: WebViewController {

if isValidPassword==false{

if let keychainReset = getManagedPreference(key: .KeychainReset) as? Bool, keychainReset==true{
TCSLogWithMark("local password is different from cloud password but keychain reset pref is set. Skipping prompting so later we can create a new keychain.")

if (getManagedPreference(key: .PasswordOverwriteSilent) as? Bool ?? false) {
// set the hint and return complete
os_log("Setting password to be overwritten.", log: uiLog, type: .default)
delegate.setHint(type: .passwordOverwrite, hint: true)
os_log("Hint set", log: uiLog, type: .debug)
}
// if let keychainReset = getManagedPreference(key: .KeychainReset) as? Bool, keychainReset==true{
// TCSLogWithMark("local password is different from cloud password but keychain reset pref is set. Skipping prompting so later we can create a new keychain.")
//
// if (getManagedPreference(key: .PasswordOverwriteSilent) as? Bool ?? false) {
// // set the hint and return complete
// os_log("Setting password to be overwritten.", log: uiLog, type: .default)
// delegate.setHint(type: .passwordOverwrite, hint: true)
// os_log("Hint set", log: uiLog, type: .debug)
// }
// }
// else {
TCSLogWithMark("local password is different from cloud password. Prompting for local password...")

let passwordWindowController = LoginPasswordWindowController.init(windowNibName: NSNib.Name("LoginPasswordWindowController"))

if passwordWindowController.window==nil {
TCSLogWithMark("no passwordWindowController window")
delegate.denyLogin()
return
}
else {
TCSLogWithMark("local password is different from cloud password. Prompting for local password...")
passwordWindowController.window?.canBecomeVisibleWithoutLogin=true
passwordWindowController.window?.isMovable = false
passwordWindowController.window?.canBecomeVisibleWithoutLogin = true
passwordWindowController.window?.level = NSWindow.Level(rawValue: NSWindow.Level.screenSaver.rawValue + 1)
while (true){
// NSApp.activate(ignoringOtherApps: true)
DispatchQueue.main.async{
TCSLogWithMark("resetting level")
passwordWindowController.window?.level = NSWindow.Level(rawValue: NSWindow.Level.screenSaver.rawValue)
}
TCSLogWithMark("showing modal")

let passwordWindowController = LoginPasswordWindowController.init(windowNibName: NSNib.Name("LoginPasswordWindowController"))
let response = NSApp.runModal(for: passwordWindowController.window!)

if passwordWindowController.window==nil {
TCSLogWithMark("no passwordWindowController window")
delegate.denyLogin()
return
TCSLogWithMark("modal done")
if response == .cancel {
break
}
passwordWindowController.window?.canBecomeVisibleWithoutLogin=true
passwordWindowController.window?.isMovable = false
passwordWindowController.window?.canBecomeVisibleWithoutLogin = true
passwordWindowController.window?.level = NSWindow.Level(rawValue: NSWindow.Level.screenSaver.rawValue + 1)
while (true){
// NSApp.activate(ignoringOtherApps: true)
DispatchQueue.main.async{
TCSLogWithMark("resetting level")
passwordWindowController.window?.level = NSWindow.Level(rawValue: NSWindow.Level.screenSaver.rawValue)
}
TCSLogWithMark("showing modal")
let resetKeychain = passwordWindowController.resetKeychain

let response = NSApp.runModal(for: passwordWindowController.window!)
if resetKeychain == true {
os_log("Setting password to be overwritten.", log: uiLog, type: .default)
delegate.setHint(type: .passwordOverwrite, hint: true)
os_log("Hint set", log: uiLog, type: .debug)
passwordWindowController.window?.close()
break

TCSLogWithMark("modal done")
if response == .cancel {
break
}
else {
let localPassword = passwordWindowController.password
guard let localPassword = localPassword else {
continue
}
let resetKeychain = passwordWindowController.resetKeychain

if resetKeychain == true {
os_log("Setting password to be overwritten.", log: uiLog, type: .default)
delegate.setHint(type: .passwordOverwrite, hint: true)
os_log("Hint set", log: uiLog, type: .debug)
let isValidPassword = try? PasswordUtils.isLocalPasswordValid(userName: username, userPass: localPassword)

if isValidPassword==true {
let localUser = try? PasswordUtils.getLocalRecord(username)
guard let localUser = localUser else {
TCSLogWithMark("invalid local user")
delegate.denyLogin()
return
}
do {
try localUser.changePassword(localPassword, toPassword: tokens.password)
}
catch {
TCSLogWithMark("Error setting local password to cloud password")
delegate.denyLogin()
return
}
TCSLogWithMark("setting original password to use to unlock keychain later")
delegate.setHint(type: .migratePass, hint: localPassword)
passwordWindowController.window?.close()
break

}
else {
let localPassword = passwordWindowController.password
guard let localPassword = localPassword else {
continue
}
let isValidPassword = try? PasswordUtils.isLocalPasswordValid(userName: username, userPass: localPassword)

if isValidPassword==true {
let localUser = try? PasswordUtils.getLocalRecord(username)
guard let localUser = localUser else {
TCSLogWithMark("invalid local user")
delegate.denyLogin()
return
}
do {
try localUser.changePassword(localPassword, toPassword: tokens.password)
}
catch {
TCSLogWithMark("Error setting local password to cloud password")
delegate.denyLogin()
return
}
TCSLogWithMark("setting original password to use to unlock keychain later")
delegate.setHint(type: .migratePass, hint: localPassword)
passwordWindowController.window?.close()
break

}
else{
passwordWindowController.window?.shake(self)
}
else{
passwordWindowController.window?.shake(self)
}
}
}
// }

}
else {
Expand Down
Binary file not shown.

0 comments on commit 3936289

Please sign in to comment.