installer: Fix handling of user password mismatches.

Previously, if we had a password mismatch, the 'password' field would
end up containing a <user> record instead of the actual password.

* gnu/installer/newt/user.scm (confirm-password): Make TRY-AGAIN
optional and adjust docstring.
(run-user-add-page): Move 'confirm-password' call one level higher.
master
Ludovic Courtès 2019-04-28 22:42:21 +02:00
parent 0e8e963d73
commit ada4aeb068
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 13 additions and 15 deletions

View File

@ -115,25 +115,23 @@ REAL-NAME, and HOME-DIRECTORY as the initial values in the form."
(begin
(error-page)
(run-user-add-page))
(user
(name name)
(real-name real-name)
(home-directory home-directory)
(password
(confirm-password password
(lambda ()
(run-user-add-page
#:name name
#:real-name real-name
#:home-directory
home-directory)))))))))))
(let ((password (confirm-password password)))
(if password
(user
(name name)
(real-name real-name)
(home-directory home-directory)
(password password))
(run-user-add-page #:name name
#:real-name real-name
#:home-directory
home-directory)))))))))
(lambda ()
(destroy-form-and-pop form)))))))
(define (confirm-password password try-again)
(define* (confirm-password password #:optional (try-again (const #f)))
"Ask the user to confirm PASSWORD, a possibly empty string. Call TRY-AGAIN,
a thunk, if the confirmation doesn't match PASSWORD. Return the confirmed
password."
a thunk, if the confirmation doesn't match PASSWORD, and return its result."
(define confirmation
(run-input-page (G_ "Please confirm the password.")
(G_ "Password confirmation required")