((p "This sub-command is used to create a hashed password for to be authenticated users.") (p "It reads a password from standard input (two times, both must be equal) and writes the hashed password to standard output.") (p "The general usage is:") (pre (code "zettelstore password IDENT ZETTEL-ID")) (p (code "IDENT") " is the identification for the user that should be authenticated." " " (code "ZETTEL-ID") " is the " (a (@ (href . "00001006050000")) "identifier of the zettel") " that later acts as a user zettel.") (p "See " (a (@ (href . "00001010040200")) "Creating an user zettel") " for some background information.") (p "An example:") (pre (code "# zettelstore password bob 20200911115600\nPassword:\n Again:\ncredential: $2a$10$1q92v1Ya8Too5HD/4rKpPuCP8fZTYPochsC6DcY1T4JKwhSx8uLu6\nuser-id: bob")) (p "This will produce a hashed password (" (@L (@H "“") "credential" (@H "”")) ") for the new user " (@L (@H "“") "bob" (@H "”")) " to be stored in zettel " (@L (@H "“") "20200911115600" (@H "”")) ".") (p "You should copy the relevant output to the zettel of the user to be secured, especially by setting the meta keys " (kbd "credential") " and " (kbd "user-id") " to the copied values.") (p "Please note that the generated hashed password is tied to the given user identification (" (kbd "user-id") ") and to the identifier of its zettel." " " "Changing one of those will stop authenticating the user with the given password." " " "In this case you have to re-run this sub-command."))