mirror of
https://github.com/mt-mods/playerfactions.git
synced 2025-07-10 04:20:20 +02:00
Updated 5.9.0 (#12)
* Store hashes of passwords cleartext password storage is bad practice. * Depricate factions.get_password() returns nil after first run * loaded message * Properly use the configurable admin priv in output * Don't show password, since we can't anymore * remove code that is never reached * chown: reorder to first check if player has any factions at all There is no point in checking other params if this part fails. * chown: fix command signature password is required * proper admin priv listing in help for invite * wrap fixup code in do-block variable save_needed is not used for anything else * locale: many -> multiple * locale: remove unused entry * locale: ownership rephrasing * locale: tweak and add "No factions found." * locale: exists -> exist * locale: this -> that or better also fixed a french mistake: player doesn't own these -> player owns these * locale: reuse string for missing name besides, "nil" is a valid name. This way there is no confusion. * locale: reuse "missing player name" * locale: reuse "faction x doesn't exist" * locale: faction x already exists * locale: the player -> player x * locale: some more de-Frenching * add local is_admin stash commit... * disband: allow admin - permit admin to disband a faction without having any factions himself - permit admin to skip password check (he can supply any placeholder) - permit admin to disband his own single faction - don't call get_owner or valid_password if is admin - streamline duplicate code * list: check for true first instead of using negation - check for no factions first -> simpler code - whitespace: linebreak for easier reading * info: cleanup - whitespace linebreaks for easier reading and consistancy - update helptext signiture (also for disband) to reflect actual requirements and standard - loop members into table for consistant and easier to read code * player_info: cleanup - move depricated log entry to start of get_player_faction(), no point in skipping warning. - simplify get_player_factions() - whitespace linebreaks for easier reading and consistancy - loop members into table for consistant and easier to read code - simplify get_owned_factions() - make player_name param optional, default to caller (still need to check as caller name can be missing) - loop factions into table for consistant and easier to read code (also presumpted faster) * join: cleanup - don't call get_player_factions() unless needed - use get_player_factions() instead of depricated get_player_faction() - truth check of password in valid_password() for easier understanding of code - remove explicit nil check where not needed * leave: cleanup - update help text to standard syntax - remove unnecessary param count checks - simplify leave_faction() argument checking * kick: cleanup - simplify and reduce calls of core.get_player_privs() - update help text to standard syntax - streamline duplicate code - remove unnecessary param count checks - remove explicit nil check where not needed - don't call get_owner if is admin (until needed) * passwd: cleanup - update help text to standard syntax - streamline duplicate code - remove unnecessary param count checks - remove explicit nil check where not needed - don't call get_owner if is admin * chown: cleanup and tweak - update help text to standard syntax - streamline duplicate code - remove unnecessary param count checks - remove explicit nil check where not needed - updated locale to be neutral to admin or owner - don't call get_owner or valid_password if is admin - remove core.player_exists() call since target was checked when joined faction - abort early if no target or password provided * invite: cleanup and tweaks - reduced needed indents - remove explicit nil check where not needed - use get_player_factions() instead of depricated get_player_faction() and reduce calls of it - tweaked join_faction() - adds check if player already is in that faction * more tweaks - join: check if already member - leave: checks if user is in given faction at all - kick: early abort if no player provided - create: early abort if no faction or password are provided - create: use get_player_factions() instead of get_player_faction() - create: reduce explicit nil checks - disband: early abort if missing password - disband: reduce param-count-checks and use table.getn() - info: reduce explicit nil checks and use table.getn() - passwd: early abort if no password provided - in general remove explicit nil-checks where not needed * is_admin -> not_admin for slightly easier reading and shorter lines * fix translator missing argument * some facepalm fixes and tweaks of table.getn() for consistency, here # would work just as well. * set minimum server version to 5.9.0 * another facepalm moment * add mtt support * refactor handle_command for mtt It could've been done by only exposing handle_command, but this is cleaner for future maintenance as tasks are well separated. * bundle mtt related lines * needs fakelib, not areas areas will need this mod for testing * remove unused arguments * add owner to members on cleanup * rename chat to cc also no need to expose cc directly to mtt * register the actually set priv when it is missing * label data correctly * move settings higher up where they are expected to be * consistancy with variable names use faction_name, player_name, target_name, password etc. instead of a jumble of pw, fname, name, player_name etc. * reduce needles table-copy * fail to register same named factions * no-op depricated and useless get_password * some more checks in some API methods * whitespace and comments * pass translator to mtt * bugfix cc.disband inverted password check * standardize var name and reduce looping * add get_members() api-method and use it * player_info: count empty string as no player * player_info: switch if-else to avoid negation * unreachable comments * simpler check * add mtt-checks for front and backend commands * update french locale - informal tone - adds missing entries * add Spanish locale * add German locale * whitespace cleanup * add fakelib comment * provide alternative to table.pack() * add disband hook support * remove local f == factions
This commit is contained in:
committed by
GitHub
parent
c629b298f9
commit
d6e7c62b84
38
mtt.lua
38
mtt.lua
@ -43,10 +43,15 @@ local function dbChecks(callback)
|
||||
assert('table' == type(facts.Alberian.members))
|
||||
-- make sure owners have been added as memebers
|
||||
assert(true == facts.Alberian.members.Albert)
|
||||
-- should never fail
|
||||
assert('eEe' == facts.Endorian.password)
|
||||
assert('a' == facts.Alberian.password)
|
||||
assert('GgG♥💩☺' == facts.Gandalfian.password)
|
||||
-- hash tests, should never fail unless engine made a mistake
|
||||
assert('8b2713b352c6fa2d22272a91612fba2f87d0c01885762a1522a7b4aec5592a80'
|
||||
== facts.Endorian.password256)
|
||||
assert('ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb'
|
||||
== facts.Alberian.password256)
|
||||
assert('3bfe911604e3fb079ad535a0c359a8457aea39d663bb4f21648842e3a4eaccf9'
|
||||
== facts.Gandalfian.password256)
|
||||
-- no more cleartext passwords (doesn't make sense in test-environement)
|
||||
assert(nil == facts.Gandalfian.password)
|
||||
|
||||
callback()
|
||||
end
|
||||
@ -193,6 +198,12 @@ mtt.register('backend functions: disband_faction', function(callback)
|
||||
callback()
|
||||
end)
|
||||
|
||||
mtt.register('backend functions: hash_password', function(callback)
|
||||
-- (tested in basic db checks)
|
||||
|
||||
callback()
|
||||
end)
|
||||
|
||||
mtt.register('backend functions: valid_password', function(callback)
|
||||
assert(false == factions.valid_password())
|
||||
assert(false == factions.valid_password('Endorian'))
|
||||
@ -202,9 +213,9 @@ mtt.register('backend functions: valid_password', function(callback)
|
||||
callback()
|
||||
end)
|
||||
|
||||
mtt.register('backend functions: get_password', function(callback)
|
||||
assert(false == factions.get_password())
|
||||
assert('eEe' == factions.get_password('Endorian'))
|
||||
mtt.register('backend functions: get_password (depricated)', function(callback)
|
||||
assert(nil == factions.get_password())
|
||||
assert(nil == factions.get_password('Endorian'))
|
||||
|
||||
callback()
|
||||
end)
|
||||
@ -313,7 +324,6 @@ mtt.register('frontend functions: info', function(callback)
|
||||
'Gandalfian, Endorian'), 'Gandalf', 'info'))
|
||||
-- SwissalpS can't be bothered to check some of these results in depth,
|
||||
-- so just dumping result for optical check.
|
||||
-- owner sees password
|
||||
pd('Endor executes: /factions info', fcc('Endor', 'info'))
|
||||
assert(fcc('Endor', 'info'))
|
||||
factions.max_members_list = 1
|
||||
@ -323,9 +333,6 @@ mtt.register('frontend functions: info', function(callback)
|
||||
factions.max_members_list = 11
|
||||
pd('Endor executes: /factions info Gandalfian', fcc('Endor', 'info Gandalfian'))
|
||||
assert(fcc('Endor', 'info Gandalfian'))
|
||||
-- admin sees password
|
||||
pd('Albert executes: /factions info Gandalfian', fcc('Albert', 'info Gandalfian'))
|
||||
assert(fcc('Albert', 'info Gandalfian'))
|
||||
|
||||
callback()
|
||||
end)
|
||||
@ -430,13 +437,16 @@ mtt.register('frontend functions: passwd', function(callback)
|
||||
'Endor', 'passwd foobar Gandalfian'))
|
||||
assert(fccc(true, S("Password has been updated."),
|
||||
'Endor', 'passwd foobar'))
|
||||
assert(factions.get_facts().Endorian.password == 'foobar')
|
||||
assert(factions.get_facts().Endorian.password256 ==
|
||||
'c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2')
|
||||
assert(fccc(true, S("Password has been updated."),
|
||||
'Gandalf', 'passwd foobar Gandalfian'))
|
||||
assert(factions.get_facts().Gandalfian.password == 'foobar')
|
||||
assert(factions.get_facts().Gandalfian.password256 ==
|
||||
'c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2')
|
||||
assert(fccc(true, S("Password has been updated."),
|
||||
'Albert', 'passwd barf Gandalfian'))
|
||||
assert(factions.get_facts().Gandalfian.password == 'barf')
|
||||
assert(factions.get_facts().Gandalfian.password256 ==
|
||||
'8a6e40cfcd99060eb1efdfeb689fe26606e221b4fd487bb224ab79a82648ccd9')
|
||||
|
||||
callback()
|
||||
end)
|
||||
|
Reference in New Issue
Block a user