PasswordVerify: Difference between revisions
Jump to navigation
Jump to search
m (add callback functionality) |
|||
| Line 21: | Line 21: | ||
Returns true if the password matches the hash. Returns false if the password does not match, or if an unknown hash was passed. If a callback was provided, the aforementioned values are arguments to the callback, and this function will always return ''true''. | Returns true if the password matches the hash. Returns false if the password does not match, or if an unknown hash was passed. If a callback was provided, the aforementioned values are arguments to the callback, and this function will always return ''true''. | ||
==Example== | ==Example== | ||
{{Example}} | {{Warning|If you will be using "Example 1" then you will have to save account data "hash_password" after server restart, otherwise this script will no longer work.}} | ||
This example makes use of passwordHash and passwordVerify in account creation and account login to boost up security. | |||
<section name="Example 1" class="server" show="true"> | |||
<syntaxhighlight lang="lua"> | |||
-- lets add command handler that will handle the account creation | |||
addCommandHandler("accountCreate",function(source,cmd,username,password) | |||
if (username and password) then | |||
local hashedPassword = passwordHash(password,"bcrypt") -- create new hash for password | |||
if (hashedPassword) then -- check if hash has been generated | |||
local account = addAccount(username,hashedPassword) | |||
if (account) then -- now lets add account with new hash what we got when we made it for password. | |||
setAccountData(account,"hash_password",hashedPassword) -- store accounts password hash in order to verify it when it's needed. | |||
outputChatBox("Account successfuly created! Now please login. Syntax </accountLogin [username] [password]>",source,20,160,20) | |||
else | |||
outputChatBox("Account already exists! Please try again with different username.",source,20,160,20) | |||
end | |||
else | |||
outputChatBox("Securing your password failed! Please try again or contact an administrator.",source,160,20,20) | |||
end | |||
else | |||
outputChatBox("Wrong parameters! Correct Syntax </accountCreate [username] [password]>",source,160,20,20) | |||
end | |||
end); | |||
-- lets add command handler that will handle the account login | |||
addCommandHandler("accountLogin",function(source,cmd,username,password) | |||
if (username and password) then | |||
local account = getAccount(username) -- get entered account | |||
if (account) then -- check if entered account exists | |||
local hashedPassword = getAccountData(account,"hash_password") -- lets get hashed password | |||
if (passwordVerify(password,hashedPassword)) then -- check if hash and entered password matches | |||
if logIn(source,account,hashedPassword) then -- now lets login player into account | |||
outputChatBox("Login successfull. Welcome, "..getAccountName(account).."!",source,20,160,20) | |||
end | |||
else | |||
outputChatBox("Password is incorrect!",source,160,20,20) | |||
end | |||
else | |||
outputChatBox("Account doesn't exist! Please try again with different account.",source,160,20,20) | |||
end | |||
else | |||
outputChatBox("Wrong parameters! Correct Syntax </accountCreate [username] [password]>",source,160,20,20) | |||
end | |||
end); | |||
</syntaxhighlight> | |||
</section> | |||
==See Also== | ==See Also== | ||
{{Utility functions}} | {{Utility functions}} | ||
Revision as of 12:48, 22 April 2017
This template is no longer in use as it results in poor readability. This function verifies whether a password matches a password hash.
Syntax
bool passwordVerify ( string password, string hash[, function callback] )
Required Arguments
- password: The password to check.
- hash: A supported hash (see passwordHash)
Optional Arguments
- callback: providing a callback will run this function asynchronously, the arguments to the callback are the same as the returned values below.
Returns
Returns true if the password matches the hash. Returns false if the password does not match, or if an unknown hash was passed. If a callback was provided, the aforementioned values are arguments to the callback, and this function will always return true.
Example
This example makes use of passwordHash and passwordVerify in account creation and account login to boost up security.
Click to collapse [-]
Example 1-- lets add command handler that will handle the account creation
addCommandHandler("accountCreate",function(source,cmd,username,password)
if (username and password) then
local hashedPassword = passwordHash(password,"bcrypt") -- create new hash for password
if (hashedPassword) then -- check if hash has been generated
local account = addAccount(username,hashedPassword)
if (account) then -- now lets add account with new hash what we got when we made it for password.
setAccountData(account,"hash_password",hashedPassword) -- store accounts password hash in order to verify it when it's needed.
outputChatBox("Account successfuly created! Now please login. Syntax </accountLogin [username] [password]>",source,20,160,20)
else
outputChatBox("Account already exists! Please try again with different username.",source,20,160,20)
end
else
outputChatBox("Securing your password failed! Please try again or contact an administrator.",source,160,20,20)
end
else
outputChatBox("Wrong parameters! Correct Syntax </accountCreate [username] [password]>",source,160,20,20)
end
end);
-- lets add command handler that will handle the account login
addCommandHandler("accountLogin",function(source,cmd,username,password)
if (username and password) then
local account = getAccount(username) -- get entered account
if (account) then -- check if entered account exists
local hashedPassword = getAccountData(account,"hash_password") -- lets get hashed password
if (passwordVerify(password,hashedPassword)) then -- check if hash and entered password matches
if logIn(source,account,hashedPassword) then -- now lets login player into account
outputChatBox("Login successfull. Welcome, "..getAccountName(account).."!",source,20,160,20)
end
else
outputChatBox("Password is incorrect!",source,160,20,20)
end
else
outputChatBox("Account doesn't exist! Please try again with different account.",source,160,20,20)
end
else
outputChatBox("Wrong parameters! Correct Syntax </accountCreate [username] [password]>",source,160,20,20)
end
end);
See Also
- addDebugHook
- debugSleep
- decodeString
- encodeString
- fromJSON
- generateKeyPair
- getColorFromString
- getDevelopmentMode
- getDistanceBetweenPoints2D
- getDistanceBetweenPoints3D
- getEasingValue
- getNetworkStats
- getNetworkUsageData
- getPerformanceStats
- getRealTime
- getTickCount
- getTimerDetails
- getTimers
- getFPSLimit
- getUserdataType
- getVersion
- gettok
- isTransferBoxVisible
- setTransferBoxVisible
- hash
- inspect
- interpolateBetween
- iprint
- isOOPEnabled
- isTimer
- killTimer
- md5
- passwordHash
- passwordVerify
- pregFind
- pregMatch
- pregReplace
- removeDebugHook
- resetTimer
- setDevelopmentMode
- setFPSLimit
- setTimer
- ref
- deref
- sha256
- split
- teaDecode
- teaEncode
- toJSON
- tocolor
- getProcessMemoryStats
- utfChar
- utfCode
- utfLen
- utfSeek
- utfSub
- bitAnd
- bitNot
- bitOr
- bitXor
- bitTest
- bitLRotate
- bitRRotate
- bitLShift
- bitRShift
- bitArShift
- bitExtract
- bitReplace