28 lines
748 B
Lua
28 lines
748 B
Lua
local username = arg[1] or _G.loggedInUser
|
|
local passwdData = settings.get("passwd")
|
|
|
|
if passwdData[username] == nil then
|
|
error("passwd: user '" .. username .. "' does not exist")
|
|
end
|
|
|
|
local crypto = require("ccryptolib")
|
|
crypto.random.initWithTiming()
|
|
|
|
print("Changing password for " .. username .. ".")
|
|
write("New password: ")
|
|
local pwd1 = crypto.sha512.digest(read(""))
|
|
write("Retype new password: ")
|
|
local pwd2 = crypto.sha512.digest(read(""))
|
|
|
|
if pwd1 ~= pwd2 then
|
|
error("Sorry, passwords do not match.")
|
|
end
|
|
|
|
if pwd1 == passwdData[username] then
|
|
error("The password has not been changed.")
|
|
end
|
|
|
|
passwdData[username] = crypto.util.toHex(pwd1)
|
|
settings.set("passwd", passwdData)
|
|
settings.save()
|
|
print("passwd: password updated successfully") |